Inspired by Lee Brimelow's tutorial on PaperVision 2.0 interactivity, I finally got my hands dirty playing with the 2.0 GreatWhite branch today.
You can download the class files using any svn client at the following address:
http://papervision3d.googlecode.com/svn/trunk/branches/GreatWhite/
import org.papervision3d.scenes.*; import org.papervision3d.cameras.*; import org.papervision3d.objects.*; import org.papervision3d.objects.special.*; import org.papervision3d.objects.primitives.*; import org.papervision3d.materials.* import org.papervision3d.materials.utils.*; import org.papervision3d.materials.special.*; import org.papervision3d.materials.shaders.*; import org.papervision3d.materials.utils.*; import org.papervision3d.lights.*; import org.papervision3d.render.*; import org.papervision3d.view.* import org.papervision3d.events.*; import org.papervision3d.core.utils.*; import org.papervision3d.core.utils.virtualmouse.VirtualMouse; // create array of movieclip instances that make up all six sides (Clips reside on stage) var cubeWalls:Array = [cubeWall1, cubeWall2, cubeWall3, cubeWall4, cubeWall5, cubeWall6]; // create array for materials var materials:Array = new Array(); // create viewport // Viewport3D(viewportWidth:Number = 640, viewportHeight:Number = 480, autoScaleToStage:Boolean = false, interactive:Boolean = false, autoClipping:Boolean = true, autoCulling:Boolean = true) var viewport:Viewport3D = new Viewport3D(0, 0, true, true); addChild(viewport); viewport.buttonMode = true; // create renderEngine var renderer:BasicRenderEngine = new BasicRenderEngine(); // create 3d scene var scene:Scene3D = new Scene3D(); // set camera var camera:Camera3D = new Camera3D(); camera.zoom = 11; camera.focus = 100; // create individual materials for (var i:int = 0; i < cubeWalls.length; i++) { var mm:MovieMaterial = new MovieMaterial(cubeWalls[i]); mm.interactive = true; mm.animated = true; mm.smooth = true; materials.push(mm); } // material lists, dimensions, triangles var cube:Cube = new Cube(new MaterialsList({front:materials[0], left:materials[1], right:materials[2], top:materials[3], bottom:materials[4], back:materials[5]}), 125, 125, 125, 10, 10, 10); scene.addChild(cube); addEventListener(Event.ENTER_FRAME, onEnterFrame); function onEnterFrame(e:Event):void { var xDist:Number = mouseX - stage.stageWidth * 0.5; var yDist:Number = mouseY - stage.stageHeight * 0.5; cube.rotationY += xDist * 0.05; cube.rotationX += -yDist * 0.05; renderer.renderScene(scene, camera, viewport); }
Leave a Reply