Sample 1はスキンメッシュファイルを読み込んで再生するサンプルです
Numキーの1を押せば普通の状態のスキンメッシュ(骨の最大値59)
2を押すと、XNAの公式フォーラムで話題に上がったVector4型のスキンメッシュ(骨最大値78)
3を押すと、デュアルクォータニオンでのスキニングになります
最初に使用するファイルのプロパティでContent Processorの項目を
LSkinnedModelProcessorにします
次にコードのフィールド部分で
//アニメーションプレイヤー
- AnimationPlayer animationPlayer;
- というように、AnimationPlayerの変数を設定し
- LoadContent内でAnimationPlayerの初期化をします
- new AnimationPlayer(Model model);
- Modelの部分に読み込んだファイルを設定してやれば、AnimationPlayerの使用準備が整います
AnimationPlayerの初期化がすんだら
次に最初に再生するアニメーションセットの設定をします
- AnimationPlayer.StartClip(String animationSetName);
- AnimationPlayer.StartClip(int animationSetNo);
- アニメーションセットの名前をそのまま入力してもOKですし
- アニメーションセット番号を入力してもOKです
- アニメーションセット番号の方がスペルミス等を防げるので楽かと思います
アニメーションセットが無いファイルを使う場合は
必ず0を入力してください
これで、事前の準備は終わりです
次に、Update処理部分で
AnimationPlayerの更新をします
- AnimationPlayer.Update(TimeSpan time, bool active,Matrix transform);
- TimeSpan部分に更新の幅、Bool部分はアニメーションを再生するか否か
- Matrix部分には移動や回転、縮小などの行列を渡してあげます
- bool部分をTrueにすると準備段階で指定したアニメーションセットが再生されます
最後に描画処理です
シェーダーファイルにSkinTransformsを送らなくてはいけないので
- AnimationPlayer.GetSkinTransforms();
- でSkinTransformsを習得してシェーダーに送ります
- この時
- AnimationPlayer.GetSkinTransformsVector4();
- にするとVector4型のSkinTransformsが
- AnimationPlayer.GetSkinTransformsQuaternion()
- にするとQuaternion型のSkinTransformが得られます
- それぞれの型のSkinTransformsに対応した処理が必要なので
- シェーダーファイルをご覧くださいな
以上でアニメーションの再生処理準備が整いました
描画処理を追加して描画してみてください
見事にアニメーションが再生されているはずです^^
コメント