Flashの3DライブラリへのBlenderアニメーション付きファイルの読み込みはハードル多し
August 1, 2008
うまくいかなかったって話です。
試したことを列挙。
Blenderからの書き出しが原因の多くだと思っているので、他の3Dソフトを使っている人は以降の方法のどれかが役に立つかも(そうであって欲しい)。
ひたすら失敗事例
1.Blenderから書き出したアニメーション付きdaeファイルをAway3Dに読み込むが失敗。
読み込めたものの、アニメーションが動かず(このエントリーの最後に活路あり)。
2.同じファイルでPavervision3D v.2(Great White)で読み込むが失敗。
Blender上で付けた単純な位置の移動(例:A地点にあったものを30フレーム目でB地点に移動)はうまくいったが、Armature(ボーン)による変形アニメーションは動かず。
試したのは次のコード。
anim = new DAE(false);
anim.load("test.dae");
scene.addChild(anim);
anim.addEventListener( FileLoadEvent.ANIMATIONS_COMPLETE, onAnimationsCompleteHandler );
private function onAnimationsCompleteHandler( event:FileLoadEvent ) : void
{
trace("読み込み完了");
if ( event.target is DAE )
{
trace("アニメーション");
var dae : DAE = event.target as DAE;
dae.play();
}else{
trace("DAE認識エラー");
}
}
3.md2ファイルで試そうと思うが失敗。
Blenderからうまくmd2ファイルが書き出せなくて、断念。
一年以上前だけど、note.x様もこの件に触れている。状況が変わっていないということか。
そもそもmd2を使おうと思ったきっかけは、5ヶ月以上前の記事になるけど、Papervision3Dのメーリングリスト記事で、ASColladaがボーンアニメーションをサポートしていないというのを調べていて見つけたから。
4.Cast3Dを併用するが、失敗。
Cast3Dとは
PV3D、Away3Dなどと併用するクラスで、Blenderアニメーションを助けるものっぽい。
参考にした記事は一ヶ月前の記事だけど、おおまかにすると次のようなことが書いてある。
『BlenderのCollada(daeファイル)書き出しは静的なMeshデータには素晴らしいんだけど、キーフレームアニメーションやボーンアニメーションをPV3Dで行うにはいまいちだよね』
Cast3Dの使い方(Windowsでの説明)
a.Blenderから.3ds形式で書き出す。
b.Cast3Dのサイトからコンバーター(3ds2XML(Windows, Win32))をダウンロードする。
c.コンバーターに対してパスを通す([マイコンピュータ]-[プロパティ]-[詳細設定]-[環境設定])。
d.コマンドプロンプトに次のように記述し、実行する。
3ds2XML test.3ds test.x3c これでx3cファイルが生成される。僕の場合、x3cファイルを開くとすかすかで、この段階で既に上手くいっていない。つまり、Blenderから書き出したファイルに問題あり。
e.Cast3Dライブラリをリポジトリから取得する。
http://cast3d.googlecode.com/svn/trunk/
f.サンプルが入っているので、それを見習ってPV3Dと併用する。
PV3Dのフォルダ構成が変わっていたりして、コンパイルエラーでまくりで、いろいろコメントアウトしたりするものの、うまくいかず。
いずれにせよBlenderの書き出しがネック。
あとGreat Whiteがアルファ版な点。
Away3DはGreat Whiteに統合されるからか、あるいはリソースが少ないからか人気薄だけど、もうしばらくAway3Dでいい気がしてきた。
そうこうして、この記事を書いているうちに、
『Sleepy Design: Away3D : Collada Animation』でAway3Dのrev 596でCollda Animationを実装したサンプルが出てきた。
Mayaでdaeを書き出したようだけど、ボーンアニメーションが実装されている。
僕がBlenderで書き出したdaeファイルと中身が若干違うので、手作業でdaeファイルを直すのもありかなと思えてきた。
カテゴリー:
タグ:
Trackback
Trackback URL for this entry:

















