away3d 4.0学习(4)加载简单的外部模型

嗯,最近在导出找3d模型玩,google的模型库里面倒是有蛮多的,但是天朝的网络不给力,不是墙就是下不了,并且google的模型库需要下载专门的软件,于是就没怎么研究下去了。

然后从朋友那里得来一个3d max,晚上回去无聊乱搞搞,自己瞎搞了个模型出来了,于是顺道练习了一下3ds文件在away3d中的使用。
 
东西简陋了点,但是由于是第一次搞,还是蛮有成就感的。
 
源码如下:
package
{
import away3d.containers.ObjectContainer3D;
import away3d.controllers.FirstPersonController;
import away3d.controllers.HoverController;
import away3d.controllers.LookAtController;
import away3d.events.AssetEvent;
import away3d.loaders.Loader3D;
import away3d.loaders.parsers.Max3DSParser;
import base.TemplateBase;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.events.MouseEvent;
import flash.geom.Vector3D;
import flash.net.URLRequest;
import flash.ui.Keyboard;
public class ModelLoaderTest extends TemplateBase
{
private var loader:Loader3D;
private var controler:HoverController;
private var step:Number=5;
private var placeHolder:ObjectContainer3D;
private var stageMouseX:Number;
private var stageMouseY:Number;
public function ModelLoaderTest()
{
super();
}
override protected function init(e:Event=null):void
{
super.init(e);
_view.camera.y = 500;
loader = new Loader3D();
Loader3D.enableParser(Max3DSParser);
loader.addEventListener(AssetEvent.ASSET_COMPLETE, onAssetComplete);
loader.load(new URLRequest("assets/houseScene.3ds"));
loader.scale(10);
_view.scene.addChild(loader);
placeHolder = new ObjectContainer3D();
placeHolder.y = 100;
placeHolder.x = - 100;
_view.camera.addChild(placeHolder);
controler = new HoverController(_view.camera);
initEvents();
}
private function initEvents():void
{
stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
stage.addEventListener(MouseEvent.MOUSE_WHEEL, onWheel);
}
private function mouseDown(e:MouseEvent):void
{
stage.addEventListener(MouseEvent.MOUSE_UP, mouseUp);
stage.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
stageMouseX = stage.mouseX;
stageMouseY = stage.mouseY;
}
private function onWheel(e:MouseEvent):void
{
controler.distance *= (1+e.delta/100); 
}
private function mouseUp(e:MouseEvent):void
{
stage.removeEventListener(MouseEvent.MOUSE_UP, mouseUp);
stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
var deltaX:Number = stage.mouseX - stageMouseX;
var deltaY:Number = stage.mouseY - stageMouseY;
controler.panAngle = 0.5*deltaX+controler.panAngle;
controler.tiltAngle = 0.5*deltaY+controler.tiltAngle;
}
private function onAssetComplete(e:AssetEvent):void
{
}
override protected function onEnter(e:Event):void
{
super.onEnter(e);
}
}
}

  效果图如下:

posted @ 2012-09-21 14:58  Ado_On  阅读(1154)  评论(1编辑  收藏  举报