SOUR介绍,一个自定义的3D格式

来源:互联网 发布:手机淘宝怎么差评不了 编辑:程序博客网 时间:2024/06/04 00:48
/** * @author matrix3d * 翻译力求准确,信达雅谈不上,如有错误和不准确的地方,欢迎指出。 * @see http://infinitetabs.com/wp/introducing-sour-a-custom-3d-format/#respond */

注:SOUR是我在Kumoshi工作期间创建的。


SOUR是一个自定义3D文件格式,它的设计就是为了桥接Blender和Away3D。难道就没有其它能够从Blender导出并在Away3D中读取的格式吗?答案是肯定的:OBJ,3DS,MD2,MD5,AC3D,DAE格式都行。上述格式除了DAE能够保存顶点切线(vertex tangents)外,其他格式都不支持顶点切线,而且Blender的DAE导出脚本(在导出时)并不保存顶点切线的信息。

顶点切线是什么,为什么他们很重要?让我给你们解释下。


什么是顶点切线?(What’s a Vertex Tangent?)

你或许知道3D模型是由三角形构成。每个三角形有三个点,叫做顶点(vertices)。一个顶点(vertex)就是3D空间中的一个点(Point)。就像一个2D空间中的点(Point)一样,一个顶点(vertex)有其X和Y坐标,但对于3D空间,一个顶点(vertex)也需要Z坐标。还有其他与三角形每个顶点有关的信息。除了说这些其他的信息被用于正确地照亮(light)3D形状外,我不会太深入它。在关于顶点(vertex)的这部分信息中,就有每一个顶点包含着另外一个由3个数值组成的集合,这个集合叫顶点切线。

顶点切线对于法线贴图(normal mapping)十分重要,这种技术使得低模看上去就像高模。对于一个给定的3D模型,使用法线贴图后,你的显卡所需要渲染计算量就减少了,这样就在不牺牲太多图像质量的情况下提高了性能。


返回Away3D和SOUR(Back to Away3D and SOUR)

既然当前所有的Blender导出格式都不保存顶点切线,在Away3D读取模型时,它意识到没有定点切线便试图自己去计算出它。如果创建3D模型的软件其法线贴图算法与Away3D使用的是相同的(数学)生成算法,那么一切OK。但Blender和Away3D使用的不是相同的算法,其结果就是对于(在Blender中)使用法线贴图的模型经常会形成难看的缝隙。


SOUR通过将顶点切线保存在3D文件中解决了这个问题。Away3D从没有机会来生成(不正确而且)不匹配的顶点切线,这下模型看上去漂亮多了。


SOUR也有一些其他功能:
索引和压缩(indexed & compressed)以节省空间
基于骨骼或者关键帧形状(keyshape-based)的顶点动画
还能够导出顶点法线(vertex normals)
拥有一个Blender导出脚本和Away3D解析器,这是其Github网址。

如果你用Google搜索一下“法线贴图缝隙”,你会发现Away3D远不是唯一一款受害于不标准法线贴图生成算法的引擎,JMonkey,OGRE,XNA等等其它都有这问题。我很高兴看到SOUR格式应用越来越广泛。如果你对格式有任何建议,请在文章的评论中留下你的意见。

原创粉丝点击