2011-10-12 59 views
4

我使用記事本+ +來查看FBX模型的數據結構,但我有一些理解它的問題。這裏是位於(0,0,0)的一個立方體(side = 10)的一些信息,誰能告訴我這些成員是什麼意思?謝謝!任何人都可以爲我解釋FBX格式?

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 
} 

回答

7

即使沒有FBX格式的知識,你至少可以做一些非常合理的猜測:Vertices

  1. 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數組包含負值(似乎每個三角形的每三個指標爲負)。也許爲了表示多邊形的最後一個索引,所以你可以有不需要三角形的多邊形。

+0

耶「法線」是12面的三個頂點法線。但是,不是通過添加與頂點相連的面的法線然後正常化來計算的頂點法線嗎?我對一個頂點的法線和一個臉部的法線很困惑。 – yvetterowe

+0

@yvetterowe無論如何都可以計算法線,對於立方體來說,平均頂點的相鄰面法線並不是一個好主意。該格式似乎爲每個三角形角(即36個法線)存儲法線,而不是爲每個三角形或每個頂點存儲法線。通過這種方式,法線可以是他們想要的任何東西(每個頂點,每個人或兩者之間的任何東西),引入重複的法線作爲必要條件。 –

+0

我明白了,謝謝= D – yvetterowe

6

我認爲這些假設是比較合理的,雖然我不知道 爲什麼PolygonVertexIndex數組包含負值(似乎 每個三角形的每三個指標爲負)。也許要指示多邊形的最後一個索引 ,因此可以使用不必爲 三角形的多邊形。

具有負值的那個確實表示最後一個頂點。

要找出女巫的頂點這是,你必須否定它,並從該值減1。

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

+0

這非常合理,感謝Autodesk ...我想我們必須處理這個。 – overlii

+1

現在我想起來了-1是聰明的,因爲否則你有索引0的問題! – overlii

+0

事實上,它是多邊形上的最後一個。 FBX可以定義多重多邊形多邊形,並使用(-N-1)顯示一個是最終的。 –

5

負頂點索引指示該多邊形的結束。你可以逐位否定負指數,得到正指數。

在C,這將是

posIndex = ~negIndex; 
相關問題