|
@@ -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 ) {
|