【问题标题】:can anyone explain the FBX format for me?谁能帮我解释一下 FBX 格式?
【发布时间】:2011-12-05 21:58:37
【问题描述】:

我使用notepad++查看FBX模型的数据结构,但我在理解它时遇到了一些问题。这是位于(0,0,0)的立方体(side = 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
} 

【问题讨论】:

    标签: graphics data-structures dataformat fbx


    【解决方案1】:

    我认为这些假设是相当合理的,尽管我不确定 为什么 PolygonVertexIndex 数组包含负值(似乎 每个三角形的每三个索引都是负数)。也许是为了表明 多边形的最后一个索引,因此您可以拥有不需要的多边形 三角形。

    负值的确实代表最后一个顶点。

    要找出这是女巫顶点,您必须将其取反并从该值中减去 1。

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

    【讨论】:

    • 这很有意义,感谢 Autodesk...我想我们必须处理这个问题。
    • 现在我想起来 -1 很聪明,否则你的索引 0 就有问题!
    • 确实,它是多边形上的最后一个。 FBX 可以定义多顶点多边形,并使用 (-N-1) 来显示哪一个是结束。
    【解决方案2】:

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

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

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

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

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

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

    6. UVIndex 下的 36 个值是立方体 36 个三角形角的纹理坐标索引(引用来自 UV 的值)。

    我认为这些假设是相当合理的,尽管我不确定为什么PolygonVertexIndex 数组包含负值(似乎每个三角形的每三个索引都是负值)。可能是为了表示多边形的最后一个索引,所以你可以有多边形而不是三角形。

    【讨论】:

    • 是的,“法线”是 12 个面的三个顶点的法线。但是不是通过添加与顶点连接的面的法线然后归一化来计算顶点的法线吗?我对顶点的法线和面的法线感到很困惑。
    • @yvetterowe 法线可以随心所欲地计算,对于立方体来说,平均顶点的相邻面法线并不是一个好主意。该格式似乎为每个三角形角存储法线(因此为 36 个法线),而不是为每个三角形或每个顶点存储法线。这样法线可以是他们想要的任何东西(每个顶点、每个面或介于两者之间的东西),必要时引入重复的法线。
    • 关于Edges,这些是不是的顶点索引,它们是对PolygonVertexIndex 数组的直接引用。每条边由该顶点和该面中的下一条边定义(如果索引
    【解决方案3】:

    负顶点索引表示多边形的结束。您可以按位否定负索引,以获得正索引。

    在 c 中这是

    posIndex = ~negIndex;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-23
      • 1970-01-01
      • 1970-01-01
      • 2017-09-11
      • 1970-01-01
      • 1970-01-01
      • 2017-04-07
      • 2015-12-21
      相关资源
      最近更新 更多