2010년 2월 1일 월요일

dae interactive

 

//ColladaLoad sample

package sample
{
import flash.events.Event;
import mx.core.Application;
import org.papervision3d.events.FileLoadEvent;
import org.papervision3d.events.InteractiveScene3DEvent;
import org.papervision3d.materials.ColorMaterial;
import org.papervision3d.materials.special.VectorShapeMaterial;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.objects.parsers.DAE;
import org.papervision3d.view.BasicView;

 public class ColladaLoad extends BasicView{
 
  public var model:DisplayObject3D;
 
  public function ColladaLoad() {
  super(550, 400, true, true, "free");

viewport.buttonMode = true;

  model = new DAE(false,null,false);
  DAE(model).load("res/teapot.dae");
  model.addEventListener(FileLoadEvent.LOAD_COMPLETE, onLoaded);
  model.addEventListener(FileLoadEvent.LOAD_PROGRESS, onLoading);
  }
  private function onLoading(e:FileLoadEvent):void {
   Application.application.bar.setProgress(e.bytesLoaded,e.bytesTotal);
  }
  private function onLoaded(e:FileLoadEvent):void {
   Application.application.bar.visible = false;
   scene.addChild(model);
   camera.y=300;
   
     model.getMaterialByName("_1_-_Default").interactive = true;
     model.getChildByName("body", true).addEventListener (InteractiveScene3DEvent.OBJECT_CLICK, bodyclick);
     model.getChildByName("handle", true).addEventListener (InteractiveScene3DEvent.OBJECT_CLICK, handleclick);
     model.getChildByName("spout", true).addEventListener (InteractiveScene3DEvent.OBJECT_CLICK, spoutclick);
     model.getChildByName("lid", true).addEventListener (InteractiveScene3DEvent.OBJECT_CLICK, lidclick);
     startRendering();
  }
  private function preclick():void {
      model.getChildByName("body", true).useOwnContainer=false;
     model.getChildByName("handle", true).useOwnContainer=false;
     model.getChildByName("spout", true).useOwnContainer=false;
     model.getChildByName("lid", true).useOwnContainer=false;
  }
  private function bodyclick(e:InteractiveScene3DEvent):void {preclick();
         e.displayObject3D.useOwnContainer=true;
         e.displayObject3D.alpha=0.5;
  } 
  private function handleclick(e:InteractiveScene3DEvent):void {preclick();
         e.displayObject3D.useOwnContainer=true;
         e.displayObject3D.alpha=0.5;
  }
  private function spoutclick(e:InteractiveScene3DEvent):void {preclick();
         e.displayObject3D.useOwnContainer=true;
         e.displayObject3D.alpha=0.5;
  } 
  private function lidclick(e:InteractiveScene3DEvent):void {preclick();
         e.displayObject3D.useOwnContainer=true;
         e.displayObject3D.alpha=0.5;
  } 
  override protected function onRenderTick(event:Event=null):void{
   model.rotationY +=0.5;
   super.onRenderTick();
  }
 }
}

 

0 개의 댓글:

댓글 쓰기