采用assimp加載FBX文件。首先記錄下ubuntu下assimp的編譯安裝。
cd assimp_unzip_dir mkdir build cd build && cmake .. make sudo make install //這樣,assimp的頭文件就安裝在/usr/local/include,lib文件在/usr/local/lib
-------------------------------------------------------------------------------------------------------------
assimp加載完模型后,aiScene里面,aiMesh數組負責保存mesh相關的幾何信息(還包括該mesh種架設的骨骼們),而aiNode,一棵場景樹保存了各個mesh?node?bone?的層級關系。而骨骼動畫就依賴這棵樹。
每個bone會關聯一些定點及對應的權值。bone變換會依據權重施加到對應的定點上。如何施加呢?
首先,assimp的mesh的vertice們定義在模型坐標系下,在這套坐標系下定義了一顆場景樹,根節點保存了模型坐標系到根節點坐標系的變換矩陣,而場景樹的內部節點和葉子節點都會保存其相對於父節點坐標系的變換矩陣。對於定義了骨骼的節點,為了將定義在模型坐標系下的定點坐標轉換到骨骼坐標系下,每個骨骼還會關聯一個mOffsetMatrix。這樣我們對定點施加變換時首先利用mOffsetMatrix將定點轉換到骨骼坐標系下,然后進行變換,接着沿着樹結構一直向上到根節點,最后再轉換到模型坐標系下。