以下は SkinWeights チャンクですが、最後の方にある matrixOffset は ボーンオフセット行列と呼ばれます。
SkinWeights |
これはボーンをグローバル座標の原点に移動させる行列ですが、
なぜ、これが必要になるのかを解説します。
上図のような状態があったとします。
Bの三角形をAの三角形と接している地点から左に60度回転させたい場合、どうするでしょう?
アフィン変換の場合は glPushMatrix glPopMatrix の行列スタックがあるので
特別に意識せずとも簡単に目的の状態にできると思います。
ところが、これを頂点座標でやろうとすると行列スタックが使えないので
行列スタックに頼らない方法を用いなければなりません。
アフィン変換で行列スタックを使用せずに回転する場合は一旦、グローバル座標の原点に
移動させてから回転し、また元の位置に戻すという事をします。