12/11/02 11:07:40.77 nbtbyhZ7
生存確認がてらスキンアニメーション
・URLリンク(codepad.org)
・URLリンク(v.youku.com)
スキンアニメーションは基本的に2パスを想定していて
1パス目がTransformFeedbackを使った変形で、2パス目が変形後の頂点を(普通に)描画する。
用語はすべてJason GregoryのGame Engine Architectureにあわせてある。
ボーンのローカル座標からモデル座標に変換する方が「ポーズ行列」で静止姿勢が「バインドポーズ」。
従って「逆バインドポーズ行列」と「カレントポーズ行列」をかけたものが「スキニング行列」。
これらの行列はGetInvBindPoseMatrix(), GetCurrentPoseMatrix(), GetSkinningMatrix()で取得できる。
この辺の実装はいろいろパターンがあってどう実装してもいいけど、
世界で一番美しく書けたと思う。いやまじで。
関係ないけどどうも世の中のJason Gregory以外のスキニングの説明とコードが気に入らなくてなんだかなあと思う。
Jason Gregoryの本を読めば一発でわかる事をなぜあんなに分かりにくく書くのか・・・
ネーミングは多少気に入らない。TransformFeedbackBufferはいくら何でも長すぎる!
TransformVertexBuffer(←変形前)も微妙におかしい。この辺の名前は改善の余地がある。