Sample1の解説

 

 

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に対応した処理が必要なので
シェーダーファイルをご覧くださいな

 

以上でアニメーションの再生処理準備が整いました

描画処理を追加して描画してみてください

見事にアニメーションが再生されているはずです^^

コメント

タイトルとURLをコピーしました