2008/12/02 Na-7
2009/03/25 Na-7
2009/03/30 Na-7
2009/04/12 Na-7
2009/08/24 Na-7
2009/08/28 Na-7
2009/09/03 Na-7
XNA3.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 |
XNA3.0(XNA GameStudio 3.0:ゲーム開発用フレームワーク) | http://msdn.microsoft.com/ja-jp/xna/default.aspx |
ACL(Animation Component Library:アニメーション再生用ライブラリ) |
http://www.codeplex.com/animationcomponents/Thread/View.aspx?ThreadId=40861 XNA3.0用の公式版は存在しないため、上記Discussionsに記載されている http://www2.cs.ucy.ac.cy/~cs06ee1/DwarfTutorial3.0.rar内のDLLを使用した |
◎手順
手順については「XNA2.0でスキンアニメーション」を参照してください。
筆者のXNA3.0環境では、XNA2.0と全く同じ手順でスキンアニメーションができました。
(DLLはXNA3.0用のものが必要です)
◎XNA2.0からXNA3.0へのACL移行について
1.XNA2.0の既存プロジェクトをXNA3.0で開くと、「VisualStudio変換ウィザード」が自動的に起動する。
2.変換終了後、2つのDLLファイルを上書きコピーする。
筆者のXNA3.0環境では、ACL関連のソース改変は不要でした。
◎XBOX360対応について
XNA3.0用のACLには、XBOX360用のDLLも含まれています。
但し、筆者はXBOX360を所持していないため、XBOX360での動作検証はしていません。
どなたか検証した方がいましたら、結果を掲示板に書き込んでもらえると嬉しいです。
→hinata氏より、XBOX360の動作報告がありましたので以下に転記します
>DwarfTutorial3.0.rarのWINで動いたものを360にしてもうごきませんでした。
>DwarfTutorial内の360のDLLが駄目な模様で、ACLを再コンパイルで動作しました。
>さらに、xna3.1用にコンパイルしたものも動作に問題はありませんでした。
◎ACLサンプルプログラム
筆者のメインPC環境(マザーボード内臓グラボ)では正常に動作し、コンソールウィンドウに「エフェクトはBasicPaletteEffectです」と出力されます。
XNA3.0用のACL動作確認用実行モジュール(デバッグモード)(2.1M)
「404Error - Page not found」が表示される場合はここをクリック 」
上記サンプルプログラムをデバッグモードでコンパイルした実行モジュールです。
筆者のメインPC(マザーボード内臓グラボ)では正常に動作しますが、サブPC(GeForce5200FX)では動作しません。
エラーになった場合、.exeファイルと同じフォルダに error.log ファイルを出力します。
XNA3.0用のACL動作確認用実行モジュール(リリースモード)(1.8M)
「404Error - Page not found」が表示される場合はここをクリック 」
上記サンプルプログラムをリリースモードでコンパイルした実行モジュールです。
筆者のメインPC(マザーボード内臓グラボ)、サブPC(GeForce5200FX)共に正常動作します。
エラーになった場合、.exeファイルと同じフォルダに error.log ファイルを出力します。
XNA3.0用のACLサンプルプログラム(複数モデルインスタンス)(0.5M)
筆者のメインPC環境(マザーボード内臓グラボ)では正常に動作し、複数のモデルインスタンスが同時かつ個別に動きます。
<プログラムの補足解説>
このプログラムでは、Content.Loadで同一モデルを複数回呼び出している。1回目の読み込みは通常と同様だが、2回目以降は瞬間的な早さで読み込まれる(実際には読み込みは行われず、参照値のみ返す(ContentManager.Loadのヘルプ参照))。よって、(2回目以降は)ゲーム中に行ってもContent.Loadによる読み込み遅延は発生しない。但し、同一モデルのインスタンスを全て削除してしまうとその効果は期待できないので注意すること。
また、このプログラムではListクラスを使用しているため、追加や削除を頻繁に繰り返すと、遅延現象(ガーベージコレクションなど)が発生する可能性がある。追加や削除を頻繁に繰り返す場合は、ゲームデザインを工夫して遅延を発生するタイミングを限定する(シューティングゲームなら、ステージ開始前に全モデルの読み込みを済ませておく)、コーディングを工夫する(配列を大きめに確保し、その中でやりくりして追加削除を発生させない)などの対策を検討する必要がある。