2008/8/18 Na-7
XNA2.0でスキンアニメーション
注意 | この資料は、筆者が自らの経験を記録したものであり、他人に勧めるものではありません。 この資料を参考として行った行為がいかなる結果になろうとも、筆者は責任を負いませんので予めご承知おきください。 |
◎使用ツール
ツール名 | 入手元 |
メタセコイア(Metasequoia LE R2.4:3Dモデル作成ソフト) | http://www.metaseq.net/metaseq/index.html |
RokDeBone2(RokDeBone2 Ver4.0.2.6:モーション作成ツール) | http://www5d.biglobe.ne.jp/~ochikko/rokdebone.htm |
XNA2.0(XNA GameStudio 2.0:ゲーム開発用フレームワーク) | http://msdn.microsoft.com/ja-jp/xna/default.aspx |
ACL(Animation Component Library:アニメーション再生用ライブラリ) |
http://www.codeplex.com/animationcomponents/Thread/View.aspx?ThreadId=19730 XNA2.0用の公式版は存在しないため、上記Discussionsに記載されている http://www.laterminal.net/xna/AnimationComponentDLL.rarを使用した |
◎全体の流れ
1.メタセコイアで3Dモデルを作成する。
2.1.で作成した3Dモデルデータに、RokDeBone2でモーションデータを加える。
3.RokDeBone2より、モーション付き.Xファイルを出力する。
6.3.で出力した.XファイルをXNAプロジェクトに取り込む。
◎「3.RokDeBone2より、モーション付き.Xファイルを出力する。」の手順例
例:RokDeBone2付属サンプルデータを利用する場合
1.「File」→「形状ファイル読み込み」→「sigファイルの読み込み」
2.「sigファイル読み込みダイアログ」でSampleフォルダ内の.sigファイルを読み込む
3.「File」→「モーションファイル読み込み」→「*.quaの読み込み」
4.「ファイルを開く」ダイアログでSampleフォルダ内の.quaファイルを読み込む
5.(動作確認したい場合は、「モーション設定ダイアログ」の「プレビュー開始」で確認可能)
6.「モーション設定ダイアログ」の「モーション設定」→「設定」
7.「設定ダイアログ」の「モーション名」をメモに控えておく(後でコードから呼び出す際に必要となる)
8.「File」→「Xファイル書き出し」
9.「X File 出力ダイアログ」で出力ファイル名(パス付き)を記述し「OK」
※各ダイアログの数値パラメータは、デフォルトのままで大丈夫な場合が多い
◎「4.XNAで新規プロジェクトを作成する。」の詳細手順
1.「ファイル」→「新しいプロジェクト」
2.「新しいプロジェクト」ダイアログで「プロジェクト名」を変更し「OK」
◎「5.XNAプロジェクトにACLを追加登録する。」の詳細手順
1.ACLの「Xclna.Xna.Animationx86.dll」と「Xclna.Xna.Animation.Content.dll」を
XNAプロジェクトフォルダにコピーする。
2.ソリューションエクスプローラのプロジェクト名で右クリック→「参照の追加」
3.「参照の追加」ダイアログの「参照」タブ→「Xclna.Xna.Animationx86.dll」を選択し「OK」
4.ソリューションエクスプローラのプロジェクト名-Content-参照設定で右クリック→「参照の追加」
5.「参照の追加」ダイアログの「参照」タブ→「Xclna.Xna.Animation.Content.dll」を選択し「OK」
◎「6.3.で出力した.XファイルをXNAプロジェクトに取り込む。」の詳細手順
1.ソリューションエクスプローラのプロジェクト名-Contentで右クリック→「追加」→「既存の項目」
2.「既存項目の追加」ダイアログで.Xファイルを選択し「追加」
3.ソリューションエクスプローラのプロジェクト名-Content-.Xファイルを選択
4.プロパティウィンドウの「Content Processor」を「Model - Animation Library」に変更
5.(必要に応じてテクスチャファイルをContentに追加)
(RokDeBone2付属サンプルデータを利用している場合は、BMPファイルをContentに追加)
6.試しにビルドしてみる。ビルドエラーとなる場合、.Xファイルの内部形式とContent Importerの読込形式が合っていない。
別のImporterに変更するか、別の.Xファイルに変更すること。
(.Xファイル内部形式が合わない理由の参考:http://kijyouno.exblog.jp/5053265/)
◎「7.XNAプロジェクトにモーション再生コードを記述する。」の手順例
1.「Game1.cs」のサンプルコードを参照しながらコードを記述する。
・testModel = Content.Load<Model>(”Sample1”);
→「Sample1」を.Xファイル名に置換する。
・controller = new AnimationController(this,
animator.Animations[”motion_forward”]);
→「motion_forward」を手順3.で控えたモーション名に置換する。
2.実行すると、スキンアニメーションが描画される。
・表示された3Dモデルが小さすぎて気付かなかったり、大きすぎて見えないことがある。
→float testScale = 0.1f; この値を適当に変更して調整すること。(0.001〜1000ぐらい?)