package { import away3d.containers.View3D; import away3d.core.base.Mesh; import away3d.core.utils.Cast; import away3d.events.LoaderEvent; import away3d.lights.DirectionalLight3D; import away3d.loaders.Md2still; import away3d.materials.Dot3BitmapMaterial; import away3d.materials.EnviroBitmapMaterial; import away3d.materials.IMaterial; import away3d.materials.PhongBitmapMaterial; import away3d.materials.WhiteShadingBitmapMaterial; import flash.display.Sprite; import flash.events.Event; [SWF(width="500", height="250", frameRate="60", backgroundColor="#FFFFFF")] public class Pedestal extends Sprite { private 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 Pedestal() { // Scene setup view = new View3D(); this.addChild(view); var light:DirectionalLight3D = new DirectionalLight3D({color:0xFFFFFF, ambient:0.25, diffuse:0.75, specular:0.9}); light.x = 40000; light.z = -40000; light.y = 40000; view.scene.addChild( 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}); // Torso setup torso1 = addTorso(450,-125, torsoNormalMaterial); torso2 = addTorso(270,-125, torsoPhongMaterial); torso3 = addTorso(90,-125); // Setup rendering this.addEventListener(Event.ENTER_FRAME,update); } private function update(e:Event):void { torso1.rotationY += 3; torso2.rotationY += 3; torso3.rotationY += 3; view.render(); } private function addTorso(x:Number,y:Number,m:IMaterial = null):Mesh { var torso:Mesh = Md2still.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; } } }