Away3D Lite:Others

Away3D Lite:Others
2010年01月05日
  [b]转自http://sjkgxf7191.javaeye.com/blog/524754[/b]
  [b][/b]
  [b]使用TargetCamera: [/b]
  Java代码
  
  
  // 将camera锁定住对象mesh targetCamera = [b]new[/b] TargetCamera3D(10, 100, mesh); targetCamera.z = -1000; // 给view赋值:新的camera view.camera = targetCamera; // 将camera锁定住对象meshtargetCamera = new TargetCamera3D(10, 100, mesh);targetCamera.z = -1000;// 给view赋值:新的cameraview.camera = targetCamera;
  [b]锁定摄像机视角: [/b]
  Java代码
  
  
  override [b]protected[/b] function onPreRender():[b]void[/b] { sphere1.x = 200*Math.sin(step); step += 0.1; target = isLookAt? sphere0 : sphere1; // flash.display.DisplayObject.tranform.matrix3D.position // 一个保存显示对象在转换参照帧中的 3D 坐标 (x,y,z) 位置的 Vector3D 对象。 camera.lookAt(target.transform.matrix3D.position); } override protected function onPreRender():void{ sphere1.x = 200*Math.sin(step); step += 0.1; target = isLookAt? sphere0 : sphere1; // flash.display.DisplayObject.tranform.matrix3D.position // 一个保存显示对象在转换参照帧中的 3D 坐标 (x,y,z) 位置的 Vector3D 对象。 camera.lookAt(target.transform.matrix3D.position);}
  [b]
  [/b]
  [b]遍历场景中的所有object: [/b]
  Java代码
  
  
  [b]protected[/b] override function onPreRender():[b]void[/b] { // 继承关系 Sphere -> AbstractPrimitive -> Mesh -> Object3D -> flash.display.Sprite [b]for[/b] each (var mesh:Mesh in scene.children) { mesh.rotationX++; mesh.rotationY++; mesh.rotationZ++; } } protected override function onPreRender():void{ // 继承关系 Sphere -> AbstractPrimitive -> Mesh -> Object3D -> flash.display.Sprite for each (var mesh:Mesh in scene.children) { mesh.rotationX++; mesh.rotationY++; mesh.rotationZ++; }}
  [b]设置3D剪裁窗口大小: [/b]
  Java代码
  
  
  // 如果你在代码里设置view.width与view.height不会报错,但不会起作用 [b]private[/b] var clipping:RectangleClipping; clipping = [b]new[/b] RectangleClipping(); clipping.minX = -400; clipping.minY = -300; clipping.maxX = 400; clipping.maxY = 300; [b]private[/b] var view:View3D; view = [b]new[/b] View3D(); view.clipping = clipping; // 如果你在代码里设置view.width与view.height不会报错,但不会起作用private var clipping:RectangleClipping;clipping = new RectangleClipping();clipping.minX = -400;clipping.minY = -300;clipping.maxX = 400;clipping.maxY = 300;private var view:View3D;view = new View3D();view.clipping = clipping;
  [b]设置layer:(同PV3D中的viewportLayer) [/b]
  Java代码
  
  
  // Plane plane = [b]new[/b] Plane([b]new[/b] BitmapFileMaterial("assets/earth.jpg"), 256, 128); plane.bothsides = [b]true[/b]; plane.rotationX = 45; plane.y = i*50 - 4*50/2; scene.addChild(plane); // Layer var layer:Sprite = [b]new[/b] Sprite(); view.addChild(layer); // Object3D.layer:An optional layer sprite used to draw into inseatd of the default view. plane.layer = layer; // Event plane.layer.addEventListener(MouseEvent.CLICK, onClick); [b]private[/b] function onClick(event:MouseEvent):[b]void[/b] { var layer:Sprite = event.target as Sprite; // 给layer添加滤镜 [b]if[/b](layer.filters.length==0) layer.filters = [[b]new[/b] GlowFilter(0xFF0000, 1, 4, 4, 16, 1)]; [b]else[/b] layer.filters = [b]null[/b]; } // Planeplane = new Plane(new BitmapFileMaterial("assets/earth.jpg"), 256, 128);plane.bothsides = true;plane.rotationX = 45;plane.y = i*50 - 4*50/2;scene.addChild(plane);// Layervar layer:Sprite = new Sprite();view.addChild(layer);// Object3D.layer:An optional layer sprite used to draw into inseatd of the default view.plane.layer = layer;// Eventplane.layer.addEventListener(MouseEvent.CLICK, onClick);private function onClick(event:MouseEvent):void{ var layer:Sprite = event.target as Sprite; // 给layer添加滤镜 if(layer.filters.length==0) layer.filters = [new GlowFilter(0xFF0000, 1, 4, 4, 16, 1)]; else layer.filters = null;}
  [b]Cast类使用: [/b]
  Java代码
  
  
  // Cast:Helper class for casting assets to usable objects // Casts the given data value as a bitmapdata object. // 将一个图片class转化成一个bitmapdata shadeMaterial = [b]new[/b] BitmapMaterial(Cast.bitmap(Shade)); // Casts the given data value as a material object. // 将一个图片class转化成一个material对象 materialArray = [Cast.material(GreenPaint), Cast.material(RedPaint)]; // Cast:Helper class for casting assets to usable objects // Casts the given data value as a bitmapdata object.// 将一个图片class转化成一个bitmapdatashadeMaterial = new BitmapMaterial(Cast.bitmap(Shade));// Casts the given data value as a material object.// 将一个图片class转化成一个material对象materialArray = [Cast.material(GreenPaint), Cast.material(RedPaint)];
  [b]创建DAE模型的两种方法: [/b]
  Java代码
  
  
  // 方法一 [b]private[/b] var collada:Collada; [b]private[/b] var loader:Loader3D; [b]private[/b] var model:Object3D; collada = [b]new[/b] Collada(); collada.scaling = 600; collada.centerMeshes = [b]true[/b]; loader = [b]new[/b] Loader3D(); loader.loadGeometry("assets/chameleon.dae", collada); loader.addEventListener(Loader3DEvent.LOAD_SUCCESS, onSuccess); scene.addChild(loader); [b]private[/b] function onSuccess(event:Loader3DEvent):[b]void[/b] { model = loader.handle; } // 方法二 [Embed(source="assets/mario_testrun.dae",mimeType="application/octet-stream")] [b]private[/b] var Charmesh:Class; [b]private[/b] var collada:Collada; [b]private[/b] var model1:ObjectContainer3D; collada = [b]new[/b] Collada(); collada.scaling = 10; // parseGeometry:Parses 3d file data. model1 = collada.parseGeometry(Charmesh) as ObjectContainer3D; model1.materialLibrary.getMaterial("FF_FF_FF_mario1").material = material; scene.addChild(model1); // 方法一private var collada:Collada;private var loader:Loader3D;private var model:Object3D;collada = new Collada();collada.scaling = 600;collada.centerMeshes = true;loader = new Loader3D();loader.loadGeometry("assets/chameleon.dae", collada);loader.addEventListener(Loader3DEvent.LOAD_SUCCESS, onSuccess);scene.addChild(loader);private function onSuccess(event:Loader3DEvent):void{ model = loader.handle;}// 方法二[Embed(source="assets/mario_testrun.dae",mimeType="application/octet-stream")]private var Charmesh:Class;private var collada:Collada;private var model1:ObjectContainer3D;collada = new Collada();collada.scaling = 10;// parseGeometry:Parses 3d file data.model1 = collada.parseGeometry(Charmesh) as ObjectContainer3D;model1.materialLibrary.getMaterial("FF_FF_FF_mario1").material = material;scene.addChild(model1);
  [b]DAE模型动画设置: [/b]
  Java代码
  
  
  // 定义骨骼动画 [b]private[/b] var skinAnimation:BonesAnimator; // BonesAnimator 骨骼动画:hold the animation information for a bones animation imported from a collada object skinAnimation = model1.animationLibrary.getAnimation("default").animation as BonesAnimator; // 动起来。。。 [b]private[/b] function onEnterFrame(event:Event):[b]void[/b] { // Updates all channels in the animation with the given time in seconds. skinAnimation.update(getTimer()*2/1000); } // 定义骨骼动画private var skinAnimation:BonesAnimator;// BonesAnimator 骨骼动画:hold the animation information for a bones animation imported from a collada object skinAnimation = model1.animationLibrary.getAnimation("default").animation as BonesAnimator;// 动起来。。。private function onEnterFrame(event:Event):void{ // Updates all channels in the animation with the given time in seconds. skinAnimation.update(getTimer()*2/1000);}
  [b]获取鼠标在3D场景中的坐标: [/b]
  Java代码
  
  
  // scenePosition:The xyz coordinate at which the event occurred in global scene coordinates. [b]private[/b] function onMouseMove(e:MouseEvent3D):[b]void[/b] { position.x = e.scenePosition.x; position.z = e.scenePosition.z; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值