任何人都可以为我解释FBX格式吗?

yve*_*owe 5 graphics dataformat data-structures fbx

我使用notepad ++来查看FBX模型的数据结构,但我对它有一些问题.这是位于(0,0,0)的立方体(侧面= 10)的一些信息,任何人都可以告诉我这些成员是什么意思?谢谢!

Vertices: *24 {
a: -5,-5,0,5,-5,0,-5,5,0,5,5,0,-5,-5,10,5,-5,10,-5,5,10,5,5,10
} 
PolygonVertexIndex: *36 {
a: 0,2,-4,3,1,-1,4,5,-8,7,6,-5,0,1,-6,5,4,-1,1,3,-8,7,5,-2,3,2,-7,6,7,-4,2,0,-5,4,6,-3
} 
Edges: *18 {
a: 0,1,2,3,4,6,7,8,9,10,13,14,16,19,20,25,26,32
} 
Normals: *108 {
a: 0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-        1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-   1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0
} 

UV: *24 {
a: 0,0,1,0,0,1,1,1,0,0,1,0,0,1,1,1,0,0,1,0,0,1,1,1
} 
UVIndex: *36 {
a: 9,11,10,10,8,9,8,9,11,11,10,8,4,5,7,7,6,4,0,1,3,3,2,0,4,5,7,7,6,4,0,1,3,3,2,0
} 
Run Code Online (Sandbox Code Playgroud)

小智 9

我认为这些假设是相当合理的,虽然我不确定为什么PolygonVertexIndex数组包含负值(似乎每个三角形的每个第三个索引都是负数).也许是为了指示多边形的最后一个索引,所以你可以得到不必是三角形的多边形.

具有负值的那个确实代表最后一个顶点.

要找出巫婆顶点,你必须否定它并从该值中减去1.

例如,-4代表3 ((-4)*(-1) - 1)


Chr*_*ica 8

即使不了解FBX格式,您至少可以做出一些非常合理的猜测:

  1. 下面的24个值Vertices是立方体的8个顶点(3个值代表一个顶点).

  2. 下面的36个值PolygonVertexIndex是构成Vertices立方体的6个面的12个三角形的顶点索引(引用值).

  3. 下面的24个值Edges是立方体的12个边的顶点索引.

  4. 下面的108个值Normals是12个三角形的每个三角形角的36个法线(3个值代表一个法向量).

  5. 下面的24个值UV是12个纹理坐标(2个值代表一个纹理坐标对).

  6. 下面的36个值UVIndexUV立方体的36个三角形角的纹理坐标索引(引用值).

我认为这些假设是相当合理的,虽然我不确定为什么PolygonVertexIndex数组包含负值(似乎每个三角形的每个第三个索引都是负数).也许是为了指示多边形的最后一个索引,所以你可以得到不必是三角形的多边形.

  • 关于`Edges`,这些是**not** 顶点索引,它们是对PolygonVertexIndex 数组的直接引用。每条边都由该顶点和该面上的下一条边定义(如果索引 < 0,则它环绕到该多边形中的第一个索引)。(我在编写导入程序时发现了这一点,如果您将这些值作为边缘索引对加载,您最终会在整个网格中出现乱序边缘) (3认同)

小智 6

负顶点索引表示多边形的结尾.您可以按位否定负指数,以获得正面指数.

在c中这将是

posIndex = ~negIndex;
Run Code Online (Sandbox Code Playgroud)