package { import flash.events.Event; import org.papervision3d.cameras.CameraType; import org.papervision3d.materials.BitmapFileMaterial; import org.papervision3d.materials.BitmapMaterial; import org.papervision3d.materials.utils.MaterialsList; import org.papervision3d.objects.primitives.Cube; import org.papervision3d.view.BasicView; [SWF( width='800', height='512', backgroundColor='0x000000', frameRate='30' )] public class VisionneuseCube extends BasicView { private static const IMG_BASE_URL:String = "assets/rendu_cubique_"; private static var MAX_X_ROTATION:int = 50; private var cube:Cube public function VisionneuseCube() { super( 800, 512, true, false, CameraType.FREE ); startRendering(); var frontMat:BitmapMaterial = new BitmapFileMaterial( IMG_BASE_URL+"FR.jpg" ); var backMat:BitmapFileMaterial = new BitmapFileMaterial( IMG_BASE_URL+"BK.jpg" ); var leftMat:BitmapFileMaterial = new BitmapFileMaterial( IMG_BASE_URL+"LF.jpg" ); var rightMat:BitmapFileMaterial = new BitmapFileMaterial( IMG_BASE_URL+"RT.jpg" ); var upMat:BitmapFileMaterial = new BitmapFileMaterial( IMG_BASE_URL+"UP.jpg" ); var downMat:BitmapFileMaterial = new BitmapFileMaterial( IMG_BASE_URL+"DN.jpg" ); frontMat.doubleSided = true; backMat.doubleSided = true; leftMat.doubleSided = true; rightMat.doubleSided = true; upMat.doubleSided = true; downMat.doubleSided = true; var imgMaterialList:MaterialsList = new MaterialsList( { front: frontMat, back: backMat, left: leftMat, right: rightMat, top: upMat, bottom: downMat }); cube = new Cube( imgMaterialList, 1000, 1000, 1000, 16, 16, 16 ); scene.addChild( cube ); camera.z = 0; } override protected function onRenderTick(event:Event=null):void { camera.rotationY += ( mouseX - ( stage.width/2 ) ) / MAX_X_ROTATION; camera.rotationX += ( mouseY - ( stage.height/2 ) ) / MAX_X_ROTATION; //on limite la rotation verticale if( camera.rotationX > MAX_X_ROTATION ) { camera.rotationX = MAX_X_ROTATION; } if( camera.rotationX < - MAX_X_ROTATION ) { camera.rotationX = - MAX_X_ROTATION; } super.onRenderTick( event ); } } }