はてな様!
http://gamehell.g.hatena.ne.jp/kenmo/
がなぜか使えなくなってしまっているので、一時的にこちらにメモ。
⇒復活してました
3Dゲーム開発のお勉強リンク
メッシュアニメーション
メッシュアニメーションを再勉強。
http://www.h6.dion.ne.jp/~game296o/DXG_No23_AnimationFromXFile.html
ここを参考に。
メッシュアニメーションとは
メッシュとは、ポリゴンの塊。
その塊を動かす(平行移動・回転する)のが、メッシュアニメーション。
メッシュの形状を変えて動かしてしまうのが、スキンメッシュアニメーション。
DirectXでのメッシュアニメーション
大きく分けて、以下の3つのオブジェクト操作する。
- フレーム
- メッシュコンテナ
- アニメーションコントローラー
これらの上位にAllocateHierarchyがいるらしいのですが、
それを操作しているところなさそうなのでパスします。
メッシュコンテナ
メッシュを管理しているもの。
次のメッシュのポインタを持っている(単方向リスト)
アニメーションコントローラー
経過時間をセットすると、最上位のフレームの行列データが更新される(みたい)
DirectXの操作手順
色々省略しているけど、大雑把にこんな流れ。
生成
D3DXLoadMeshHierarchyFromXで、
AllocateHierarchy、フレーム、アニメーションコントローラー
を生成。
更新
- アニメーションコントローラーのSetTimeで、フレームの行列を更新。
- フレームの階層をたどって、すべてのフレームの行列を更新。
描画
フレームの階層をたどって、すべてのメッシュコンテナのメッシュを描画。