TMO (.tmo)
ポーズおよびモーションファイル。
TSOのボーンが持つ変換行列を、TMOの変換行列に置き換えることで、モーションを実現します。
ポーズは1フレームのみのモーションです。
公開ソースコード:
- TMOTool (C#)
- TMOView (C#)
- TSOView (C#)
TMOに含まれる情報:
TMOの仕組み
TMOはボーンツリーとボーンに対する変換行列からできています。
それぞれのボーンには、初期位置があります。
ポーズエディタでF12キーを押すと、ポーズがリセットされますが、このときのボーンの位置が初期位置です。
(初期位置はTMOには含まれません。)
ボーンの操作には移動・回転・拡大縮小があります。
移動・回転・拡大縮小の操作は、合わせてひとつの4x4行列で表現できます。これを変換行列と呼びます。
(行列はマトリックスともいいます。)
それぞれのボーンの初期位置に対して、変換行列を適用すると(行列の掛け算)、ひとつのポーズが現れます。
また、ポーズを連続して並べると、アニメーションになります(パラパラ漫画の要領です)。
この変換行列の並びがTMOに入っています。
ポーズエディタは、ようするに、TMOを編集しているわけです。
技術的な詳細
TMOの構造:
- ヘッダ
- byte[4] シグネチャ:"TMO1"
- byte[8]:詳細は不明
- UInt32 オプション値:フレーム数-1。ただし、フレーム数が1の場合は1。
- UInt32 オプション値:ボーン数
- ボーン配列
- UInt32 ボーン数
- ボーン(ボーン数だけ繰り返し)
- モーションフレーム配列
- UInt32 フレーム数
- フレーム(フレーム数だけ繰り返し)
- フッタ
ボーン
ボーンはボーン数だけ繰り返し現れます。
ボーンの構造:
モーションフレーム
モーションフレームはフレーム数だけ繰り返し現れます。
モーションフレームの構造:
- UInt32 行列数
- Matrix 変換行列(行列数だけ繰り返し)
行列数はボーン数と一致します(一致しない例は見たことがない)。
変換行列を適用するボーンは、ボーン配列のインデックスとして行列配列のインデックスを与えることで得ます。
最終更新:2011年09月21日 00:24