1. 程式人生 > >FBX骨骼坐標系與模型坐標系的關系

FBX骨骼坐標系與模型坐標系的關系

子節點 葉子節點 信息 坐標系 style 父節點 定義 內部 local

采用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將定點轉換到骨骼坐標系下,然後進行變換,接著沿著樹結構一直向上到根節點,最後再轉換到模型坐標系下。

FBX骨骼坐標系與模型坐標系的關系