To detect a mouse (far or near! No matter what!) Do the following:
put this in your global:
var pointerDetectRay, projector, mouse2D;
put this in your init () function:
pointerDetectRay = new THREE.Raycaster(); pointerDetectRay.ray.direction.set(0, -1, 0); projector = new THREE.Projector(); mouse2D = new THREE.Vector3(0, 0, 0);
put this in your render () loop function:
pointerDetectRay = projector.pickingRay(mouse2D.clone(), camera);
and this is a mouse event:
function onDocumentMouseMove(event) { event.preventDefault(); mouse2D.x = (event.clientX / window.innerWidth) * 2 - 1; mouse2D.y = -(event.clientY / window.innerHeight) * 2 + 1; }
Now, where you want to detect objects under the mouse pointer, use this:
var intersects = pointerDetectRay.intersectObjects(scene.children); if (intersects.length > 0) { var intersect = intersects[0];
source share