「LAGライブラリを試してみる」の編集履歴(バックアップ)一覧はこちら
「LAGライブラリを試してみる」(2010/08/19 (木) 03:09:05) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
*&bold(){LAGライブラリを試してみる}
LAG氏が開発しているXNA用モーションライブラリ「LAGライブラリ」が
使えるかどうか試してみたよ。
開発者さんのサイト「http://lurgee.xii.jp/」
※ちなみに許可は一切得てないのでいろいろ危うい。
*&bold(){実験開始}
まずは公式解説にあるとおり、dllファイルをプロジェクトで参照できるようにしとく
ダウンロードするとライブラリが3種類入ってたけど、sample1で使うのはこのうち2種類だけみたいだ。
&ref(dll.png)
で、このdllをプロジェクトのしかるべき場所に加えておく。参照設定ってとこだな。
dllだけ入れたら、とりあえずビルドしてみて異常がおきないか確かめておく。
dllが壊れてたり、ソリューションのアップグレードが必要だったりしたら
ゲーム内容を開発していくより前に発見しておきたいからね。
&ref(exproler.png)
今回は実験程度の試験起動だから、サンプル1に入ってるplayer.xのファイルを利用させてもらった。
&ref(player.png)
そして同時に、xファイルと共に忘れちゃいけない大事なデータがエフェクトファイル。.fxってやつだな。
このfxデータを仲介にして、テクスチャ情報とかボーン情報をXNAに渡してるみたいなのだ。
&ref(effect.png)
ちなみに、player.xのファイルのほうはコンテンツプロセッサの欄がただのXmodelじゃなくてLskinnedModelになってる。
&ref(propaty.png)
さてここからプログラミング。
重要になってくる変数が,AnimationPlayerとSkinEffectというクラスのようだった。
AnimationPlayerに3Dモデルをアニメ開始させたりする命令が詰まってて、
SkinEffectにボーンの変換情報などを入れてXNAに渡しているらしい。よくわからんがとにかく宣言しとく。
&ref(hensuu.png)
で、LoadContent内で3Dモデルのロードとエフェクトデータのロードをする。
ここで同時にインスタンス作ったり起動最初にどのアニメーションをするか設定しとくらしい。
&ref(load.png)
次はUpdate内にアニメーションのアップデート命令を書く。
経過時間、アニメ再生かどうか、モデルの位置回転情報の順で引数を入れるみたい。
&ref(animationupdate.png)
で、Update側で3Dモデルのアニメーションをアップデートしたら、
Draw内で描画命令を使うわけなんだが・・・
&ref(draweffect.png)
ここで使われてる「Modeldraw」関数は自作しなくてはならないらしい。
sampleのをほぼ直接写したんだが、なにやらGraphicDeviceなどDirectXに直結しそうな難しい命令が書かれてたので
一度作った後はできたら触りたくない部分だった。
多分、ただの3Dモデルならmesh.Draw()の一文で全部XNAが自動でやってくれるところを、モーションつきということで
自分でエフェクト情報を渡す命令を一個一個書かなきゃならないんだと思う。
&ref(modeldraw.png)
ここまでやり終えたらビルドして実行。
まぁ大抵はうまくいかないものだけど、うまくいくとこんな感じに
サンプルの3Dモデルが走ってるシーンが映し出された。良かった良かった。
&ref(finish.png)
*&bold(){結果}
日本人の方が作ったライブラリということで、説明ページも日本語で書かれてるし
XNAで3Dにモーションをつけてやりたい人にはかなりありがたいライブラリだと思う。
今のところ俺の環境では問題なく動いてるので、これからもいくつかsampleを追うかたちで
LAGライブラリの実験をしていきたいと思う。
あとこのライブラリで使える形式のモーション付きXファイルを作るためのRokdebone2とかRDBxnaとかも重要なので、
そこらへんも一緒に実験してみた方がいいかな。
*&bold(){LAGライブラリを試してみる}
LAG氏が開発しているXNA用モーションライブラリ「LAGライブラリ」が
使えるかどうか試してみたよ。
開発者さんのサイト「http://lurgee.xii.jp/」
※ちなみに許可は一切得てないのでいろいろ危うい。
*&bold(){実験開始}
まずは公式解説にあるとおり、dllファイルをプロジェクトで参照できるようにしとく
ダウンロードするとライブラリが3種類入ってたけど、sample1で使うのはこのうち2種類だけみたいだ。
&ref(dll.png)
で、このdllをプロジェクトのしかるべき場所に加えておく。参照設定ってとこだな。
dllだけ入れたら、とりあえずビルドしてみて異常がおきないか確かめておく。
dllが壊れてたり、ソリューションのアップグレードが必要だったりしたら
ゲーム内容を開発していくより前に発見しておきたいからね。
&ref(exproler.png)
今回は実験程度の試験起動だから、サンプル1に入ってるplayer.xのファイルを利用させてもらった。
&ref(player.png)
そして同時に、xファイルと共に忘れちゃいけない大事なデータがエフェクトファイル。.fxってやつだな。
このfxデータを仲介にして、テクスチャ情報とかボーン情報をXNAに渡してるみたいなのだ。
&ref(effect.png)
ちなみに、player.xのファイルのほうはコンテンツプロセッサの欄がただのXmodelじゃなくてLskinnedModelになってる。
&ref(propaty.png)
さてここからプログラミング。
重要になってくる変数が,AnimationPlayerとSkinEffectというクラスのようだった。
AnimationPlayerに3Dモデルをアニメ開始させたりする命令が詰まってて、
SkinEffectにボーンの変換情報などを入れてXNAに渡しているらしい。よくわからんがとにかく宣言しとく。
&ref(hensuu.png)
で、LoadContent内で3Dモデルのロードとエフェクトデータのロードをする。
ここで同時にインスタンス作ったり起動最初にどのアニメーションをするか設定しとくらしい。
&ref(load.png)
次はUpdate内にアニメーションのアップデート命令を書く。
経過時間、アニメ再生かどうか、モデルの位置回転情報の順で引数を入れるみたい。
&ref(animationupdate.png)
で、Update側で3Dモデルのアニメーションをアップデートしたら、
Draw内で描画命令を使うわけなんだが・・・
&ref(draweffect.png)
ここで使われてる「Modeldraw」関数は自作しなくてはならないらしい。
sampleのをほぼ直接写したんだが、なにやらGraphicDeviceなどXNAに直結しそうな難しい命令が書かれてたので
一度作った後はできたら触りたくない部分だった。
多分、ただの3Dモデルならmesh.Draw()の一文で全部XNAが自動でやってくれるところを、モーションつきということで
自分でエフェクト情報を渡す命令を一個一個書かなきゃならないんだと思う。
&ref(modeldraw.png)
ここまでやり終えたらビルドして実行。
まぁ大抵はうまくいかないものだけど、うまくいくとこんな感じに
サンプルの3Dモデルが走ってるシーンが映し出された。良かった良かった。
&ref(finish.png)
*&bold(){結果}
日本人の方が作ったライブラリということで、説明ページも日本語で書かれてるし
XNAで3Dにモーションをつけてやりたい人にはかなりありがたいライブラリだと思う。
今のところ俺の環境では問題なく動いてるので、これからもいくつかsampleを追うかたちで
LAGライブラリの実験をしていきたいと思う。
あとこのライブラリで使える形式のモーション付きXファイルを作るためのRokdebone2とかRDBxnaとかも重要なので、
そこらへんも一緒に実験してみた方がいいかな。