Я пытаюсь выбрать объекты в сцене, где я использую ортогональную камеру. мой фрагмент кода уже работает, но он не точен. Я уже нашел несколько ответов на stackoverflow, но они устарели или больше не будут работать. вот мой код onMouseDown
function onDocumentMouseUp( event ) {
event.preventDefault();
mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;
var vector = new THREE.Vector3(mouse.x, mouse.y, 0.5);
var pos = camera.position;
var ray = new THREE.Raycaster(pos, vector.unproject(camera).sub(camera.position).normalize());
var intersects = ray.intersectObjects(objects);
if (intersects.length > 0) {
console.log("touched:" + intersects[0]);
}
else {
console.log("not touched");
}
}
см. http://jsfiddle.net/ujzpe07t/1/
если вы щелкнете на несколько пикселей влево / вправо / выше / ниже куба, он все равно скажет мне, что объект был затронут.
Я использую three.js r69.
любые подсказки будут очень признательны. спасибо, ура!