提到 面組 的話就立即令人想到是連接各個 Vert點 而成為可見的實體模型了. 比較有經驗的朋友還會加上 "面組 還連接了貼圖用的 UV點". 其實 面組 還連接 Normal, Vertcolor...
一般人都會忽略這些東西, 是因為大多數的遊戲引擎都採用了共用 面組 資料的方式來建模型, 也就是共用相同數量的 Vert, UV, normal... 那樣只要讀取一次 面組 資料就可以了.
這種方式對反過來研究遊戲模型的我們卻不是件好事. 由於在同一個座標地點可能有多個相同的 vert點, 做成了鄰近的 面 也可能用上不同的 vert點. 模型容易變得不平滑, 也容易出現裂縫!
如果是用 3dsmax 的就更差了, 因為 3dsmax 不記錄 normal點 的, 而是用 smooth group! 那有方法解決這問題嗎!?
近日我就是主力研究解決這問題的方法! 一個比較簡單的方法是用上不同的 面組 記錄 Vert點 和 UV點. 再建立一個 Vert_UV_Lookup_Table 然很在讀取 Vert點 資料時對照一下這個位置是否已經記錄. 把索引記錄到 Vert_UV_Lookup_Table. 在讀取 面 資料時對照這個 Vert_UV_Lookup_Table 來 Vert_Face_Array 和 UV_Face_Array. 如事者還可以建立 Normal_Face_Array, VertColor_Face_Array...

讀到這裡可能有人會問, 為甚麼耍這樣子大費章節, 在把模型導入後 Weld 上 Vert點 就可以了. 這個當然可以, 但如果要考慮到遊戲模型的蒙皮資料呢!? 而且考慮到遊戲模型的再導出(比如做 mod 的), 蒙皮一定要是最後一項工作呢!?