Distance to Mouse using a dummy 3d object

Saturday, November 29th, 2008 | snippets
package
{
	import flash.events.Event;
 
	import org.papervision3d.core.math.Number3D;
	import org.papervision3d.objects.DisplayObject3D;
	import org.papervision3d.objects.primitives.Sphere;
	import org.papervision3d.view.BasicView;
 
	[SWF(width="640", height="480", backgroundColor="#000000", frameRate="60")]
	public class DistanceFrom3DMouse extends BasicView
	{
		private var sphere:Sphere = new Sphere();
		private var mouseDO3D:DisplayObject3D = new Sphere();
 
		public function DistanceFrom3DMouse ()
		{
			sphere.x = -500;
			sphere.y = 200;
 
//			scene.addChild(mouseDO3D); uncomment to see mouse sphere
			scene.addChild(sphere);
 
			startRendering();
		}
 
		override protected function onRenderTick(event:Event=null):void
		{
			var ray:Number3D = camera.unproject(viewport.containerSprite.mouseX, viewport.containerSprite.mouseY);
			ray.normalize();
			ray.multiplyEq(sphere.distanceTo(camera));
			ray = Number3D.add(ray, camera.position);
 
			mouseDO3D.position = ray;
 
			var distance:Number = sphere.distanceTo(mouseDO3D);
 
			renderer.renderScene(scene, camera, viewport);
		}
	}
}

I’m open to suggestions for a better way to do this :)

Tags: ,

  • 万安平

    var ray:Number3D=camera.unproject(this.viewport.containerSprite.mouseX,this.viewport.containerSprite.mouseY);
    ray.normalize();
    ray.multiplyEq(this.sphere.distanceTo(this.camera));
    ray=Number3D.add(ray,this.camera.position);

    why?

  • Werner

    Thank you! Works great!

blog comments powered by Disqus

Search

Recommended Books

Speaking at FITC Toronto

 

November 2008
M T W T F S S
    Dec »
 12
3456789
10111213141516
17181920212223
24252627282930

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 ...