Browse Source

add pickingRay method

Justin Sermeno 14 years ago
parent
commit
bc27e18424
1 changed files with 15 additions and 20 deletions
  1. 15 20
      src/core/Projector.js

+ 15 - 20
src/core/Projector.js

@@ -36,39 +36,34 @@ THREE.Projector = function() {
 
 	this.projectVector = function ( vector, camera ) {
 		
-        _projScreenMatrix.multiply( camera.projectionMatrix, camera.matrixWorldInverse );
+		_projScreenMatrix.multiply( camera.projectionMatrix, camera.matrixWorldInverse );
 		_projScreenMatrix.multiplyVector3( vector );
 
 		return vector;
 	};
 
-	this.unprojectVector = function ( vector, camera, ray ) {
-        var end, dir, t;
-
-        //if ( camera instanceof THREE.OrthographicCamera ) {
-        
-            vector.z = -1.0;
-            end = new THREE.Vector3( vector.x, vector.y, 1.0);        
-            
-        //}
+	this.unprojectVector = function ( vector, camera ) {
 
 		_projScreenMatrix.multiply( camera.matrixWorld, THREE.Matrix4.makeInvert( camera.projectionMatrix ) );
 		_projScreenMatrix.multiplyVector3( vector );
 
-       // if ( camera instanceof THREE.OrthographicCamera ) {
+		return vector;
+	};
+
+	this.pickingRay = function ( vector, camera ) {
+		var end, dir, ray, t;
 
-            _projScreenMatrix.multiplyVector3( end );
+		vector.z = -1.0;
+		end = new THREE.Vector3( vector.x, vector.y, 1.0 );
 
-            dir = new THREE.Vector3();
-            dir.sub( end, vector );
-            dir.normalize();
-        
-            ray.origin = vector;
-            ray.direction = dir;
-       // }
+		this.unprojectVector( vector, camera );
+		this.unprojectVector( end, camera );
 
-		return vector;
+		dir = new THREE.Vector3();
+		dir.sub( end, vector );
+		dir.normalize();
 
+		return new THREE.Ray( vector, dir );
 	};
 
 	this.projectObjects = function ( scene, camera, sort ) {