package geometry._theory { import flash.events.KeyboardEvent; import flash.geom.Vector3D; import triga.shapes.CrossHair; import triga.shapes.Tick; /** * @author Nicolas Barradeau * http://en.nicoptere.net */ public class K_UnprojectMouse extends BaseScene { private var tick:Tick; public function K_UnprojectMouse() { setup(); addMesh( tick = new Tick(new Vector3D, 25, WHITE ) ); addMesh( new CrossHair( 100, 100, 100 ) ); addChild( GlobalTextField.instance ); _trace( 'give focus then\npress any key to unproject mouse' ); } override protected function onKeyDown(e:KeyboardEvent):void { //unproject the 2D mouse position in 3D var mouse:Vector3D = view.unproject( view.mouseX, view.mouseY ); //get the camera position var cam:Vector3D = view.camera.position; //create an axis from the camera throught the unprojected Vector var dir:Vector3D = mouse.subtract( cam ); //normalizing dir.normalize(); //then rescale it dir.scaleBy( 100 ); //sets the tick mesh position tick.position = camera.position.add( dir ); } } }