Flash 10 的3D性能
最近不少朋友问我f10的性能如何,经过测试1000面以内的模型在我的电脑上(T7500,8600GT M)可以跑到150fps,这也是flash可以设置的最大fps了。比之前beta版大约提升了25%左右。大部分功劳归功于f10的渲染加速。f10的绘图能力确实大大超越f9,我想这对做2d虚拟社区的同志们同样也是一个好消息。
最近不少朋友问我f10的性能如何,经过测试1000面以内的模型在我的电脑上(T7500,8600GT M)可以跑到150fps,这也是flash可以设置的最大fps了。比之前beta版大约提升了25%左右。大部分功劳归功于f10的渲染加速。f10的绘图能力确实大大超越f9,我想这对做2d虚拟社区的同志们同样也是一个好消息。
由于f10的很多api与beta版的不同 所以引擎出现了兼容性问题 主要体现在rotationX,rotationZ,rotationZ里,将XAXIS改成X_AXIS即可,其他两个同理。
由于过节手头电脑没环境 稍后将进行SVN更新,敬请关注
Flash 10 3D就是大忽悠。所有想做web3d的朋友们请慎重。有朋友希望我做一款商业引擎,但是api上的限制实在太多了,难度很大,结果未知,很有可能轱辘下去就上不来。。。 再次友情提示:慎重。
目前官方还不提供下载,一套正版要699刀
预计以国人的实力一周内国内就会有破解版下载了
最近看帖子,不少人都提到自己的模型总是会莫名其妙缺一块黑一块,这也是俗称的破面(不知道哪位大哥发明的),从不同的视角看破面也是不同的。每个人都会有自己的方法去解决(其实应该是规避)。我在开发NewX3D的时候也遇到了这个问题,在这里和大家分享一下自己的心得。
一般的模型是由多个三角形构成,所以我们可以把一个3d场景看作多个多边形的组合。假设有这样一个场景,一个没有窗户的屋子,屋里有一张桌子,这时你站在屋外向屋子忘去,必然只能看到屋子的外墙和门,而不可能看到里面的桌子。但是在3d软件渲染中,一切都是基于多边形的操作,没有桌子和屋子的概念,如果你只是简单的把多边形投影到屏幕上的话,可能会出现这样的情况:你先看到了桌子,桌子后面是屋子…实际渲染的场景和真实世界的场景是不一致的,这就产生了问题,如何保证只看到墙而看不到墙里面的桌子?
由于每个三角形都有三个顶点,顶点中又拥有深度值z,如果我们取出一个多边形,将它三个顶点的z值相加再除以3,得到一个平均数,然后将这个平均数当作多边形的z值,命名为avgZ,这样我们就能确定这些多边形的前后顺序。在光栅化阶段(也就是渲染阶段),让这些多边形按照avgZ的递减顺序(z越小说明离视点越近),先渲染avgZ大的多边形,再渲染avgZ小的多边形,这样就可以正确的显示场景。还是刚才的场景,假设屋子的前墙的avgZ=1 桌子的avgZ=50 屋子的后墙的avgZ=100,这样根据刚才说的方法,先渲染了后墙,然后渲染桌子,最后渲染前墙,这样前墙的纹理自然会盖住桌子的纹理,OK,看看是不是和真实场景一致。这种方法叫做画家算法(Painter’s Algorithm)也可以称作z-sort。
一般情况下画家算法都是有效的,但是仍有一些特殊情况使他进行错误的渲染。如图


当一个三角形被另一个分割时,很明显需要分三次渲染才能正常显示,但是画家算法不具备分割三角形的能力,所以一定会有一块被分隔的区域无法显示。当多个三角形叠加,由于avgZ是一个平均值,可能实际在最上面的三角形的avgZ低反而被引擎认为它在最下面,产生错误的叠加顺序。这就是破面的主要原因。
很多同学都发现了除了a3d以外的引擎都会在某些模型上出现了破面的现象。这是因为基于Pv3d的引擎全部采用了画家算法,而a3d采用了bsp。
解决破面有2个方法,一个从模型入手,尽量减少模型中多边形贯穿和叠加的情况,另外一个从引擎入手,提供z缓冲或bsp排序系统完美解决画家算法的不足,这将在以后的教程中深入讲解,希望大家踊跃讨论提出自己的看法和意见。
转贴请注明出处http://newx3d.cn/blog/
Powered by WordPress | Aeros Theme | TheBuckmaker.com WordPress Themes