三维工业越来越多地采用Mikktspace标准来计算正切空间,用于正常映射和其他效果,这依赖于从一个应用到另一个应用的精确和一致的切线空间计算。搅拌机,xNormal,统一,物质粉笔和虚幻引擎只是我能想到的几个,现在使用Mikttspace。我个人正在尝试重新编码我自己的项目,以采用这个标准。
但是关于Mikktspace如何工作的资源很少,因为它是一个相对较新的东西。很少的资源,通常是缺乏细节和非常技术性,不太方便用户理解,或假设编码器有一定程度的知识,这是略高于一般新手刚刚开始谁需要更仔细的解释。
我想清楚地解释Mikktspace是如何工作的,以及如何实现它,并简单地解释一下数学和代码是如何工作的,而不仅仅限于一种语言。
为了举例,让我们假设程序员有一个网格对象,有一个顶点索引,每个顶点都有一个位置、法线和UV坐标,以及引用该索引的三角形列表。
例如:
Vertex
:{X,Y,Z,NX,NY,NZ,S T}VertexIndex
:Vertex
的列表Triangle
:{ V1 V2 V3 }(法向绕组顺序正确)TriangleList
:Triangle
的列表简单地说,如何以符合about空间的方式计算每个顶点的切线向量(TX TY TZ)和双元向量(BX由BZ计算)?
发布于 2016-08-19 08:37:14
该项目有更多代码:
https://github.com/teared/mikktspace-for-houdini/tree/master/source
此外,您还可以在这里找到关于切线空间法线映射的信息:
https://archive.blender.org/wiki/index.php/Dev:Shading/Tangent_空格_正常_地图/http://image.diku.dk/projects/media/morten.mikkelsen.08.pdf
关于切线空间法线映射(Mikktspace)的其他信息并不十分清楚。
对这些方法的简要解释是非常长的,因此,我包括了上面的两个环节,以参考关于切线空间法向映射的良好解释。
注意:搅拌机也给出了为什么不使用这种方法的建议。
我希望这是有帮助的:)
https://gamedev.stackexchange.com/questions/128023
复制相似问题