Mayaでモデリングした3DデーターをPaperVision3Dで表示。
Mayaでモデリングした3DデーターをPaperVision3Dで表示してみました。
こんな感じ。
http://moeten.info/flex/20081208_pv3dColladaMaya/bin-release/main.html
飛行機でっす。
簡単な説明
オブジェクト上で右クリックしてオブジェクト選択モードでオブジェクトを選択。
選択したオブジェクトを書きだす。
dae形式を選択。
もし出力形式にdaeがない場合はうまくプラグインが読み込まれていないので、ウィンドウ⇒設定⇒プラグインマネージャーで読み込みをさせる。
さらにもし、このプラグインが見当たらない場合はこちらからダウンロード
FBX Plug-ins
#プラグインは読み込まれたり読み込まれなかったりよくあります(@_@;)
次はテクスチャを貼りたいなぁ。影付きの。
そして、かわいいの作りたいなぁ。
参考リンク
すべてのソースはこちら
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init3D()" width="640" height="480" backgroundGradientColors="[0xffffff,0x999999]" viewSourceURL="srcview/index.html"> <mx:Script> <![CDATA[ import org.papervision3d.materials.ColorMaterial; import org.papervision3d.materials.utils.MaterialsList; import org.papervision3d.objects.parsers.DAE; /* ********************************** PV3D ********************************** */ import org.papervision3d.cameras.Camera3D; import org.papervision3d.render.BasicRenderEngine; import org.papervision3d.scenes.Scene3D; import org.papervision3d.view.Viewport3D; import org.papervision3d.objects.DisplayObject3D; import org.papervision3d.objects.primitives.Sphere; import org.papervision3d.materials.WireframeMaterial; import org.papervision3d.objects.special.SimpleLevelOfDetail; import org.papervision3d.materials.BitmapFileMaterial; private var scene : Scene3D; private var viewport : Viewport3D; private var renderer : BasicRenderEngine; private var camera : Camera3D; private var cameraTarget : DisplayObject3D; //初期化 private function init3D():void{ setupScene(); setupCamera(); setupCollada(); setupListeners(); } //シーンの作成 private function setupScene():void{ viewport = new Viewport3D( myUI.width , myUI.height , true , false , true , true ); myUI.addChildAt(viewport , 0); renderer = new BasicRenderEngine(); scene = new Scene3D(); } //カメラ設定 private function setupCamera():void{ cameraTarget = new DisplayObject3D(); camera = new Camera3D(); camera.z = - 300; camera.y = 10; } //イベントリスナー設定 private function setupListeners():void{ this.addEventListener(Event.ENTER_FRAME , onRenderTick ); } //レンダリング+マウス操作 private var theta:Number = 3; protected function onRenderTick(e:Event):void { var reach:Number = 0.01; var ease:Number = 0.1; var cameraDistance:Number = 100; camera.x += (Math.sin(mouseX * reach) * cameraDistance - camera.x) * ease; camera.y += (Math.sin(mouseY * reach) * cameraDistance - camera.y) * ease; theta += 0.03; myDae.rotationY -=1; renderer.renderScene(scene , camera , viewport ); } //リサイズイベント private function onResize(e : Event) : void { } /* ***************** myMain ***************** */ //Daeの作成 private var myDae:DAE; private function setupCollada():void{ myDae = new DAE(); var mat:ColorMaterial = new ColorMaterial(0x333333,0.95 ); myDae.load("hikouki.dae",new MaterialsList({all:mat})); myDae.scaleX = 10; myDae.scaleY = 10; myDae.scaleZ = 10; scene.addChild(myDae); } ]]> </mx:Script> <mx:UIComponent id="myUI" width="100%" height="100%" /> </mx:Application>