Mike T. Henderson

Interactive Design & Art Direction

PaperVision 2.0 Rotating Cube

Mar 27 2008

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);
}
0 Posted under: PaperVision

Leave a Reply