package { import flash.display.Sprite; import flash.events.Event; import it.nxn.debugger.FPSMonitor; import org.papervision3d.cameras.Camera3D; import org.papervision3d.core.geom.renderables.Vertex3D; import org.papervision3d.materials.ColorMaterial; import org.papervision3d.materials.WireframeMaterial; import org.papervision3d.objects.primitives.Plane; import org.papervision3d.objects.primitives.Sphere; import org.papervision3d.render.BasicRenderEngine; import org.papervision3d.scenes.Scene3D; import org.papervision3d.view.Viewport3D; [SWF(/*width="640",height="480",*/frameRate="24",backgroundColor="0x111111")] public class Testing3D extends Sprite { private var _scene:Scene3D; private var _cam:Camera3D; private var _view:Viewport3D; private var _render:BasicRenderEngine; private var _p:Plane; private var _sine:Number=0; public function Testing3D() { super(); stage.scaleMode = "noScale"; stage.align = "TL"; init3D(); addChild(new FPSMonitor()); } private function init3D():void { _view = new Viewport3D(0,0,true,true,true,true); _view.addEventListener(Event.ADDED_TO_STAGE,onViewPortReady); _cam = new Camera3D(); _cam.focus=100; _cam.zoom=11; _cam.z=-1000; _scene = new Scene3D(); _render = new BasicRenderEngine(); addChild(_view); } private function onViewPortReady(e:Event):void { addElements(); } private function addElements():void { _p = createPlane(); _scene.addChild(_p); startRendering(); } public function startRendering():void { this.addEventListener(Event.ENTER_FRAME,render); } public function stopRendering():void { this.removeEventListener(Event.ENTER_FRAME,render); } private function createPlane():Plane { trace("plane"); var p:Plane = new Plane(createColorMaterial(),500,500,5,5); p.rotationX = 90; return p; } private function createColorMaterial():ColorMaterial { var m:ColorMaterial = new ColorMaterial(0x00CCFF,1,true); m.doubleSided=true; return m; } private function createSphere():Sphere { var s:Sphere = new Sphere(new WireframeMaterial(),100,12,12); s.x=s.y=s.z=0; return s; } private function render(e:Event=null):void { _cam.hover(0,_view.containerSprite.mouseX/100,_view.containerSprite.mouseY/100); _render.renderScene(_scene,_cam,_view); _sine++; tweenPlaneMesh(); } private function tweenPlaneMesh():void { var _deltaZ:Number= 10; var count:int=0; //plane waving:) for each(var v:Vertex3D in _p.geometry.vertices){ var _vz:Number = Math.sin((count+_sine)/10)*_deltaZ; v.z = _vz; count++; } } } }