I have a problem with detecting intersections of objects using THREE.js. My objects are extruded from 2D geometry, for example:
var geoShape = new THREE.Shape(vertexes); var geometry = new THREE.ExtrudeGeometry(geoShape, { bevelEnabled: false, amount: 3 }); var mesh = THREE.SceneUtils.createMultiMaterialObject(geometry, [new THREE.MeshLambertMaterial({ color: '#493D26' })] ); scene.add(mesh);
Then I try to detect the intersection as follows:
container.mousedown(function (e) { event.preventDefault(); var vector = new THREE.Vector3((e.clientX / window.innerWidth) * 2 - 1, -(e.clientY / window.innerHeight) * 2 + 1, 0.5); projector.unprojectVector(vector, camera); var raycaster = new THREE.Raycaster(camera.position, vector.sub(camera.position).normalize()); var intersects = raycaster.intersectObjects(scene.children); console.log(intersects); });
Each time my intersection array is empty. If I add a sphere to the scene, I get intersections, but only if I am enlarged to z <18. Any suggestions?
source share