In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

Papervision3D TEST

Papervision3D Test
code from http://papervision3d.googlecode.com/svn/trunk/as3/trunk/examples/FlexSDK/MeshCutting/src/com/unitzeroone/pv3d/examples/MeshCuttingExample.as
Get Adobe Flash player
by yd_niku 02 Feb 2009
    Embed
// Papervision3D Test
// code from http://papervision3d.googlecode.com/svn/trunk/as3/trunk/examples/FlexSDK/MeshCutting/src/com/unitzeroone/pv3d/examples/MeshCuttingExample.as


package
{
	import flash.display.BitmapData;
	import flash.events.Event;
	
	import org.papervision3d.core.geom.TriangleMesh3D;
	import org.papervision3d.core.math.Number3D;
	import org.papervision3d.core.math.Plane3D;
	import org.papervision3d.core.utils.MeshUtil;
	import org.papervision3d.materials.BitmapColorMaterial;
	import org.papervision3d.materials.BitmapMaterial;
	import org.papervision3d.objects.primitives.Plane;
	import org.papervision3d.objects.primitives.Sphere;
	import org.papervision3d.view.BasicView;

	public class MeshCuttingExample extends BasicView
	{
		protected var planeMaterial:BitmapColorMaterial;
		protected var sphereMaterial:BitmapMaterial;
		
		protected var sourceSphere:Sphere;
		protected var hemiSphereA:TriangleMesh3D;
		protected var hemiSphereB:TriangleMesh3D;
	
		
		public function MeshCuttingExample()
		{
			super(0, 0, true, false);
			opaqueBackground = 0;
			setupScene();
		}
		
		protected function setupScene():void
		{
			//Setup a bitmapdata material for the spheres to use.
			var bmp:BitmapData = new BitmapData(512,255,false,0);
			bmp.perlinNoise(64,64,4,123456,true,false);
			
			//Create a new sphere, which we will use as a source geometry, cutting it.
			sphereMaterial = new BitmapMaterial(bmp);
			sphereMaterial.doubleSided = true;
			sourceSphere = new Sphere(sphereMaterial, 400, 15,15);
			
			//Setup a plane3d along which we will cut the sphere.
			var normal:Number3D = new Number3D(.5,.5,0); //Some angle
			var point:Number3D = new Number3D(0,80,0); //at position...
			var cutPlane:Plane3D = Plane3D.fromNormalAndPoint(normal, point);
			
			//Cut the sphere along the plane3D, returns an array of maximum 2 meshes.
			var meshes:Array = MeshUtil.cutTriangleMesh(sourceSphere, cutPlane);
			
			//Add result meshA
			hemiSphereA = meshes[0];
			hemiSphereA.x = 400;
			scene.addChild(hemiSphereA);
			
			//Add result meshB
			hemiSphereB = meshes[1];
			hemiSphereB.x = -400;
			scene.addChild(hemiSphereB);
			
			//Start rendering
			startRendering();
		}
		
		override protected function onRenderTick(event:Event=null):void
		{
			//Rotate the spheres.
			hemiSphereA.yaw(1);
			hemiSphereB.yaw(-1);
			super.onRenderTick(event);
		}
		
	}
}