Flexified, Simple Papervision3D Hello World

Posted on 05. Dec, 2007 by lukesh in Design and Creativity, Education, Flash Platform, Uncategorized

This is a flexified, simplified version of John Grden’s earth demo. Create a new Flex project called “GreatWhiteExperiment1″, add the GreatWhite source path, and paste the code:  

package {
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.Event;

	import org.papervision3d.cameras.FreeCamera3D;
	import org.papervision3d.lights.PointLight3D;
	import org.papervision3d.materials.ColorMaterial;
	import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
	import org.papervision3d.materials.shaders.FlatShader;
	import org.papervision3d.materials.special.ParticleMaterial;
	import org.papervision3d.objects.primitives.Sphere;
	import org.papervision3d.objects.special.ParticleField;
	import org.papervision3d.render.BasicRenderEngine;
	import org.papervision3d.scenes.Scene3D;
	import org.papervision3d.view.Viewport3D;

	[SWF(backgroundColor="0x000000", width="900", height="600", frameRate="30")]
	public class GreatWhiteExperiment1 extends Sprite
	{
		private var renderer:BasicRenderEngine
		private var scene:Scene3D;
		private var camera:FreeCamera3D;
		private var viewport:Viewport3D;

		// 3d Objects
		private var pointLight:PointLight3D;
		private var earth:Sphere;

		public function GreatWhiteExperiment1()
		{
			stage.align = StageAlign.TOP_LEFT;
			stage.scaleMode = StageScaleMode.NO_SCALE;

			renderer = new BasicRenderEngine();
			scene = new Scene3D();
			camera = new FreeCamera3D();
			viewport  = new Viewport3D(0, 0, true, false);
			addChild(viewport);

			camera.z = -350;
			camera.focus = 1100;
			camera.zoom = 1;

			pointLight = new PointLight3D(true);
			scene.addChild(pointLight);
			pointLight.moveUp(350);
			pointLight.moveRight(350);

			var earthMaterial:ColorMaterial = new ColorMaterial(0x00CCCC);

			//var earthBumpMaterial:MovieAssetMaterial = new MovieAssetMaterial("earthMapBump2");
			//phong only, no bump
			//var earthShader:PhongShader = new PhongShader(pointLight, 0xFFFFFF,0x404040,20);
			//phong with bump

			// create shader
			//var earthShader:PhongShader = new PhongShader(pointLight, 0xFFFFFF, 0x303030, 20, null, null);
			var earthShader:FlatShader = new FlatShader(pointLight, 0xFFFFFF, 0);

			// combine shader with original material, for a shaded material
			//var earthShadedMaterial:ShadedMaterial = new ShadedMaterial(earthMaterial, earthShader);
			var earthShadedMaterial:FlatShadeMaterial = new FlatShadeMaterial(pointLight, 0xFFFFFF, 0);

			// add to sphere
			earth = new Sphere(earthShadedMaterial, 250, 12, 12);

			scene.addChild(earth);

			createStars();

			stage.addEventListener(Event.ENTER_FRAME, handleEnterFrame);
		}

		private function handleEnterFrame(e:Event):void
		{
			earth.yaw(-.5);
			camera.x=camera.y=camera.z=0;
			camera.yaw(.5);
			camera.moveBackward(1000);

			renderer.renderScene(scene, camera, viewport);
		}

		private function createStars():void
		{
			//Create a new particle material;
			var pm:ParticleMaterial = new ParticleMaterial(0xFFFFFF,1);

			//Create a new particlefield.
			var particleField:ParticleField = new ParticleField(pm, 2000, 5000, 5000, 5000);
			scene.addChild(particleField);
		}
	}
}

No comments.

Leave a Reply