Neat camera and arrows thingy

Thursday, December 4th, 2008 | examples

I made this a while back for one of my classes. Not sure if it’s really helpful for anything, but I’m just going to file it under “camera” since it shows a technique to have the camera move around.

*note – this uses a custom Arrow.as class that’s included with the download.


source

package 
{
	import gs.TweenMax;
	import gs.easing.Cubic;
 
	import org.papervision3d.lights.PointLight3D;
	import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
	import org.papervision3d.objects.DisplayObject3D;
	import org.papervision3d.objects.primitives.Sphere;
	import org.papervision3d.view.BasicView;
	import org.pv3d.objects.Arrow;		
 
	[SWF(width="640", height="480", backgroundColor="#000000", frameRate="60")]
	public class FollowCam extends BasicView 
	{
		private var dummyObject:DisplayObject3D;
		private var light:PointLight3D;
		private var origin:DisplayObject3D;
 
		public function FollowCam() 
		{
			origin = DisplayObject3D.ZERO;
			light = new PointLight3D();
			dummyObject = new DisplayObject3D();
 
			camera.fov = 120;
 
			for (var i:Number = 0;i < 50; i++) 
			{
				var arrow:Arrow = new Arrow(new FlatShadeMaterial(light, 0xcc0000, 0x000000));
				arrow.x = Math.cos(i) * 2000 - 1000;
				arrow.y = 4000 / 50 * i - 2000;
				arrow.z = Math.sin(i) * 2000 - 1000;
				arrow.lookAt(origin);
 
				scene.addChild(arrow);
			}
 
			var sphereMaterial:FlatShadeMaterial = new FlatShadeMaterial(light, 0x00cc00, 0x000000);
			sphereMaterial.doubleSided = true;
			var sphere:Sphere = new Sphere(sphereMaterial, 6100, 30, 30);
 
			scene.addChild(sphere);
 
			loopTweenMax();
		}
 
		private function loopTweenMax():void 
		{
			var bt:Array = [];
 
			for (var i:Number = 0;i < 3; i++) 
			{
				bt.push({
						x:Math.random() * 6000 - 3000, 
						y:Math.random() * 6000 - 3000, 
						z:Math.random() * 6000 - 3000
					});
			}
 
			TweenMax.to(dummyObject, 20, {
					x:Math.random() * 6000 - 3000, 
					y:Math.random() * 6000 - 3000, 
					z:Math.random() * 6000 - 3000, 
					bezierThrough:bt, 
					ease:Cubic.easeInOut, 
					onUpdate:onTweenUpdate, 
					onComplete:loopTweenMax
				});		
		}
 
		private function onTweenUpdate():void 
		{
			singleRender();
			camera.lookAt(dummyObject);
			camera.copyPosition(dummyObject);
			camera.moveBackward(500);
			light.copyTransform(camera);
			camera.lookAt(dummyObject);
		}
	}
}

Tags: ,

  • LATCHO
    How did you create the arrow class ?
  • David T
    Trippy!! brings back memory's of the good ol mushroom.
  • Dang bro - that's freakin' wicked.
blog comments powered by Disqus

Search

Recommended Books

Speaking at FITC Toronto

Recent Comments

 

December 2008
M T W T F S S
« Nov   Jan »
1234567
891011121314
15161718192021
22232425262728
293031  

Preferred Video Tutorial Resolution

  • 1024x768 (53%, 85 Votes)
  • 1280x1024 (15%, 24 Votes)
  • 1920x1080 (15%, 24 Votes)
  • 800x600 (13%, 20 Votes)
  • 480x320 (4%, 6 Votes)
  • 640x480 (0%, 2 Votes)

Total Voters: 160

Loading ... Loading ...