BlenderとAway3Dでやりとりするフォーマットを模索中。。。 Away3Dで使えるフォーマット「AWD」をBlenderから書き出せたので備忘録として残します。 例によってMac環境での説明です。 AWDとは→ awd – Away3D Data file format – Google Project Hosting
やり方
基本的には公式サイトのwiki にある通りにやっていきますが、いろいろと躓いたのでメモ。 Blenderは2.6aでした。
- 適当なフォルダで hg clone https://code.google.com/p/awd/ して最新版のソースを落とす。
- hg コマンドを使うにはクライアントをインストールしておく。→ Mercurial SCM
- $ cd sdks/cpp-libawd $ sudo make install する
- $ cd sdks/python-pyawd $ python3 setup.py install する
- BlenderのPythonは3.2.*を使っているので(BlenderでPython Consoleを表示させるとバージョンがわかります) macportsや公式サイトからインストーラを落とすなどして Python3.2.*をインストールしておく
- sdks/python-pyawd/build/lib.macosx-10.6-intel-3.2/の中にpyawdというフォルダができている
- pyawdフォルダをblender.app/Contents/MacOS/2.60/python/lib/python3.2 の中にコピーする。 (Finderでblender.appを選択してパッケージの内容を表示で見れます)
- exporters/blender/の中にある io_awd というフォルダをblender.app/Contents/MacOS/2.60/scripts/addons の中にコピーする
- Blenderを起動し、User Preferences->Addons->Inport-Export: Away3D AWD2 formatを有効にする。
- 使えるようになりました!! File->Exportから選択できるようになっています。
デモ
とりあえずBlenderのおさるさんを書きだして、Away3D4.0で読みこみました。
package { import away3d.containers.View3D; import away3d.entities.Mesh; import away3d.events.AssetEvent; import away3d.library.AssetLibrary; import away3d.library.assets.AssetType; import away3d.loaders.parsers.AWD2Parser; import away3d.materials.ColorMaterial; import away3d.materials.methods.*; import away3d.primitives.WireframeSphere; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import flash.net.URLRequest; [SWF(width = "450", height = "450", frameRate = "30")] public class LoadAWDTest extends Sprite { private var view:View3D; private var sphere:WireframeSphere; private var mesh:Mesh; public function LoadAWDTest() { super(); stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; view = new View3D(); view.camera.position.z = -40; view.backgroundColor = 0x333333; view.antiAlias = 3; addChild(view); sphere = new WireframeSphere(200, 16, 16, 0xFFFFFF, 3); sphere.rotationX = 30; view.scene.addChild(sphere); load(); this.addEventListener(Event.ENTER_FRAME, handleEnterFrame); } private function handleEnterFrame(ev:Event):void { if (mesh) { mesh.roll(1); } sphere.yaw(2); view.render(); } public function load():void { AssetLibrary.enableParser(AWD2Parser); AssetLibrary.addEventListener(AssetEvent.ASSET_COMPLETE, onAssetComplete); AssetLibrary.load(new URLRequest("assets/awdtest.awd")); } protected function onAssetComplete(event:AssetEvent):void { trace("Done loading.", event.asset.name, ":", event.asset.assetType); if (event.asset.assetType == AssetType.MESH) { mesh = event.asset as Mesh; var _material:ColorMaterial = new ColorMaterial(0x004400); _material.addMethod(new OutlineMethod(0x88ee44, 0.03, true, true)); //アウトライン作成 mesh.rotationX = -90; mesh.material = _material; mesh.castsShadows = true; mesh.scale(100); view.scene.addChild(mesh); } } } }
AWDの可能性
AWD自体はボーンアニメーション対応しているようですが、(githubにあるサンプルは動きます) まだBlender exporterが対応していないようなのでArmature設定していると書き出しエラーになります。 現在開発中とのことなので、 完成版に期待します・・・! それにしてもAway3D 4.0の情報少なくてつらいです。 API Referenceがあるだけましですが、デモがもっと充実していればわかりやすいのになー。 参考にしたサイト:Away3D Forum Installing pyawd for AWD for use in Blender