2007.06 Monthly archives

Papervision3Dメモ #19

2007.06.07

D3S Importer Library for Papervision3D

Suite75 Development Blogで紹介されてたMD2ファイルをPV3Dで扱えるようにするライブラリ、D3S Importer Libraryを使って、とりあえず付属のデータを表示させてみた。

md2_test.swf(要:Flashplayer9)

ただ読み込んだだけなのでモーションがひたすらループしてるけど、
offset_frames、offset_endなんていうプロパティがあるので、特定のモーション部分だけループさせることもできそう。

MD2ってのはQuakeIIで採用されてたキャラクタモデルの頂点アニメーション情報を含んだファイルフォーマット。仕様はこんな感じ。

Colladaもアニメーションのサポートしてるはずなんだけど、今のところPV3Dからそれを制御する術が無いんで、キャラクタアニメーション的なものを作る場合には使えそう。問題は、Blenderが.md2形式のエクスポートに対応してるにも関わらず上手く行かない事。Quake 2 Modellerを併用するといいらしいんだけど、Windows併用しないで済む方法を考えたいところ。このテのデータを扱うとなるとWindowsは圧倒的に選択肢が多いよなぁ。IntelMacでパラレるしかないのか。

あと、D3S Importer Libraryは3dsMAXのファイル.3dsもサポートしてるんだけど、3dsMAX持ってないのでパス。

Papervision3Dメモ #18

2007.06.02

階層化された3Dオブジェクトにマウスイベントを付ける

Aquiouxさんのエントリー「Papervision3D でマウスイベント(閃光的網站・弛緩複合体)」にスッキリまとめられているように、PV3Dは階層化された3Dオブジェクトにマウスイベントが付けられない。

スマートに解決できねーもんかなーとPV3DのMLをボーっと見てたらタイムリーな投稿を見つけた。DisplayObject3DのaddChildと、renderメソッドをオーバーライドするクラスで、これを使って3Dオブジェクトの階層化とマウスイベント付加を両立させてみた。

Parent_mouseEvent.swf(要:Flashplayer9)

3つのCubeを親になるrootNodeにaddChildして、マウスイベントはそれぞれのCubeごとに設定、回転の動きはrootNode1つを制御して3つのCubeを同時に動かした。

まず、親になる空ノードを作る

rootNode = new Group( "rootNode" );
scene.addChild( rootNode );

で、

cubeObj =  new Cube( material, planeSize, planeSize, planeSize, segment, segment, segment);
rootNode.addChild( cubeObj );

みたいな感じで親ノードにaddChild。んで、

cubeObj.container.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);

とすれば、rootNode内のcubeObjにマウスイベントが付けられる。

比較的スカっと解決っぽいけど、2階層、3階層にペアレントした構造にしたい場合は、いちいちGroupオブジェクトをカマさなくちゃならなくてなんか微妙。Group.asを参考にDisplayObject3D.asにパッチ当てたほうがスマートかなぁ。

【追記】
Away3Dは、階層化した3Dオブジェクトのイベント付加に対応済みの模様。

[Papervision3D] Peugeot206WRC #2

2007.06.01

Peugeot206WRCラジコン

前回の続き。PV3DサンプルのFocusApp.asをいじくって、走れるようにした。

206WRCラジコン(要:Flashplayer9)
画面クリックしてカーソルキーで動かせる。

まさにラジコンだ、こりゃ楽しい。スクリプトはほぼサンプルのまんまなので何の苦労もなかったけど、Collada Pluginの問題なのか、オブジェクトのペアレント情報が.daeファイルに反映されなくてフロントタイヤの動きを作るのに苦労した。このあたり、他の3Dアプリ使って比較してみないと何とも解んね。MayaPLEあたりで実験してみるか。