`
ejc371fj
  • 浏览: 13843 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

Away3D Lite:Others

 
阅读更多

Away3D Lite:Others
2010年01月05日
  转自http://sjkgxf7191.javaeye.com/blog/524754
  [/b]
  [b]使用TargetCamera:

  Java代码 
  
  
  // 将camera锁定住对象mesh   targetCamera = new 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;
  锁定摄像机视角:
  Java代码 
  
  
  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);   }  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);}
  
  

  遍历场景中的所有object:
  Java代码 
  
  
  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++;       }   }  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++; }}
  设置3D剪裁窗口大小:
  Java代码 
  
  
  // 如果你在代码里设置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;  // 如果你在代码里设置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;
  设置layer:(同PV3D中的viewportLayer)
  Java代码 
  
  
  // Plane   plane = 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);     // Layer   var 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;     // Event   plane.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;   }  // 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;}
  Cast类使用:
  Java代码 
  
  
  // Cast:Helper class for casting assets to usable objects    // Casts the given data value as a bitmapdata object.   // 将一个图片class转化成一个bitmapdata   shadeMaterial = new 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)];
  创建DAE模型的两种方法:
  Java代码 
  
  
  // 方法一   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);  // 方法一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);
  DAE模型动画设置:
  Java代码 
  
  
  // 定义骨骼动画   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);   }  // 定义骨骼动画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);}
  获取鼠标在3D场景中的坐标:
  Java代码 
  
  
  // scenePosition:The xyz coordinate at which the event occurred in global scene coordinates.   private function onMouseMove(e:MouseEvent3D):void {       position.x = e.scenePosition.x;       position.z = e.scenePosition.z;   }  
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics