ずっと,更新しないのもどうかと思うので,モーションのサンプルの動かし方について触れます。
モーション★ 1.はじめに
ずっと,更新しないのもどうかと思うので,モーションのサンプルの動かし方について触れます。
★ 2.使い方
今回は,XNA Creators Club Onlineにあるeducation catalogにあるSkinned Modelの利用方法についてです。
一応,今回のサンプルにTinyのモデルを付属させていませんので,DirectXのサンプルから各自で持ってきてください。 まず,今回のサンプルを展開するとAsuraSkinningPipelineとAsuraSkinningModelという2つのフォルダがあるので,モーションを再生したいプロジェクトにコピペして追加します。 そして,下の画像のようにプロジェクトおよびファイルを追加します。このときに気を付けてほしいのは,参照設定の所です。赤色で囲った部分が追加されていない場合は,うまくビルドができないと思うので忘れずに追加します。 あとは,モーションを再生したいモデルを追加します。Creators Club Onlineの方は,シェーダファイルのディレクトリがローダーの方で,指定されてしまっていますが,それだと面倒なので,付属のサンプルではVisual Studioの方から設定できるようにしてみました。設定の仕方ですが,まずソリューションエクスプローラーからモデルファイルを右クリックし,プロパティを選択します。すると下のようなプロパティの画面が出てくると思います。 Content Processorの欄の所の値を,モーションをロードする「SkinnedModel - Asura SkinnedModel Processor」に変更します。 すると,Shader Fileという欄があるので,そこの値を自分で用意したシェーダファイルに変更してください。そうすれば,シェーダファイルを読み込んでくれます。ちなみに,エフェクトはBasic Effectを基にするようになっているので注意してください。 ★ 3.注意
上記までの説明で,FBXファイルなら問題なく再生できるのではないかと思います。Xファイルも再生できますが,DirectXのサンプルに付属のTinyは,そのままだと動かないので加工をします。
tiny.xのファイルをメモ帳など開きます。ファイルの中にAnimationSetという文字があるので,検索して見つけてください。 AnimationSetの後に,「Walk」という文字列を追加します。 この追加した文字列は,下のコードの149行目にある"Walk"と対応するようになっています。再生するモデルによっては,この文字列が違っているので,モデルファイルの方に合わせて,コードの方を修正して下さい。 00127: /// <summary> 00128: /// LoadContent will be called once per game and is the place to load 00129: /// all of your content. 00130: /// </summary> 00131: protected override void LoadContent() 00132: { 00133: // Create a new SpriteBatch, which can be used to draw textures. 00134: spriteBatch = new SpriteBatch(GraphicsDevice); 00135: 00136: // TODO: use this.Content to load your game content here 00137: 00138: // Load the model. 00139: 00140: performanceCounter = new PerformanceCounter(); 00141: spriteFont = Content.Load<SpriteFont>("Fonts/font"); 00142: currentModel = Content.Load<Model>("Models/tiny"); 00143: 00144: SkinningData skinningData = currentModel.Tag as SkinningData; 00145: if (skinningData == null) 00146: throw new InvalidOperationException("This model does not contain a SkinningData tag."); 00147: 00148: animationPlayer = new AnimationPlayer(skinningData); 00149: AnimationClip clip = skinningData.AnimationClips["Walk"]; 00150: animationPlayer.StartClip(clip); 00151: 00152: InitializeCamera(); 00153: } 00154: 今回は,モーションのサンプルの動かし方について,一応触れてみました。 ★ Download
本ソースコードおよびプログラムを使用したことによる如何なる損害も製作者は責任を負いません。
本ソースコードおよびプログラムは自己責任でご使用ください。 プログラムの作成にはMicrosoft Visual Studio 2008 SP1 Professional, XNA Game Studio 3.0を用いています。 |