package { import away3d.containers.View3D; import away3d.core.base.Mesh; import away3d.core.utils.Cast; import away3d.lights.DirectionalLight3D; import away3d.loaders.Md2; import away3d.materials.Dot3BitmapMaterial; import away3d.materials.Material; import away3d.materials.PhongBitmapMaterial; import away3d.materials.WireColorMaterial; import flash.display.Sprite; import flash.events.Event; import flash.geom.Vector3D; [SWF(width="500", height="250", frameRate="60", backgroundColor="#FFFFFF")] public class ExPedestal extends Sprite { public var view:View3D; private var torso1:Mesh; private var torso2:Mesh; private var torso3:Mesh; //Marble texture for torso [Embed(source="resources/torso_marble2.jpg")] public static var TorsoImage:Class; //normal map for torso [Embed(source="resources/torso_normal_400.jpg")] public static var TorsoNormal:Class; // reflection map [Embed(source="resources/small_r_003.jpg")] public static var PanoramaImageR:Class; //Torso mesh [Embed(source="resources/torsov2.MD2",mimeType="application/octet-stream")] public static var TorsoMD2:Class; public function ExPedestal() { // Scene setup view = new View3D({x:250,y:125}); this.addChild(view); var light:DirectionalLight3D = new DirectionalLight3D({color:0xFFFFFF, ambient:0.25, diffuse:0.75, specular:0.85}); light.direction = new Vector3D(40000,-40000,40000); view.scene.addLight(light); // Materials setup var torsoNormalMaterial:Dot3BitmapMaterial = new Dot3BitmapMaterial(Cast.bitmap(TorsoImage), Cast.bitmap(TorsoNormal)); var torsoPhongMaterial:PhongBitmapMaterial = new PhongBitmapMaterial(Cast.bitmap(TorsoImage), {specular:0.5}); var torsoWireMaterial:WireColorMaterial = new WireColorMaterial(0xffffff,{wireColor:0x000000}); // Torso setup torso1 = addTorso(190,0, torsoNormalMaterial); torso2 = addTorso(0,0, torsoPhongMaterial); torso3 = addTorso(-190,0, torsoWireMaterial); // Setup rendering this.addEventListener(Event.ENTER_FRAME,update); } public function update(e:Event):void { torso1.rotationY += 2; torso2.rotationY += 2; torso3.rotationY += 2; view.render(); } private function addTorso(x:Number,y:Number,m:Material = null):Mesh { var torso:Mesh = Md2.parse(TorsoMD2, {ownCanvas:true, material:"white#black", name:"torso", back:"red#blue"}); torso.movePivot((torso.minX+torso.maxX)/2,(torso.minY+torso.maxY)/2,(torso.minZ+torso.maxZ)/2); torso.x = x; torso.y = y; if(m!=null){ torso.material = m; } torso.scale(.04); view.scene.addChild( torso ); return torso; } } }