rooms.projector = new function(){ projector = new THREE.Projector(); vector = new THREE.Vector3( mouse.x, mouse.y, 0.5 ); projector.unprojectVector( vector, camera ); raycaster = new THREE.Raycaster( camera.position, vector.sub( camera.position ).normalize() ); intersects = raycaster.intersectObjects( scene.children, true ); } THREE.Projector = function () { _viewProjectionMatrix = new THREE.Matrix4(), this.unprojectVector = function ( vector, camera ) { camera.projectionMatrixInverse.getInverse( camera.projectionMatrix ); _viewProjectionMatrix.multiplyMatrices( camera.matrixWorld, camera.projectionMatrixInverse ); return vector.applyProjection( _viewProjectionMatrix ); }; }