//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 개의 댓글:
댓글 쓰기