我正在尝试构建一个拾取射线来查看我在 three.js 中的 3D 身体是否已被点击。目前它不起作用,我按照这些Three.js raycast 产生空的相交数组和这些three.js Raycaster intersectObjects提示。
我目前的代码是这样的:
function checkClick() {
// On every click, check for body hit
clickInfo.x = event.clientX;
clickInfo.y = event.clientY;
var x = ( clickInfo.x / window.innerWidth ) * 2 - 1;
var y = -( clickInfo.y / window.innerHeight ) * 2 + 1;
var objects = [];
objects.push(model);
var raycaster = projector.pickingRay(directionVector.clone(),camera);
var intersects = raycaster.intersectObjects(scene.children);
if (intersects.length) {
alert("found something");
}
else {
alert("found nothing");
}
}
我现在了解到,projector.pickingRay 为我节省了很多工作,因为在上面的第二个链接示例中,用户之前需要单独计算所有这些。但它不起作用。我没有收到任何 JS 错误,只有“一无所获”消息(相交数组为空)。我在场景(模型)中确实有一个对象,我将其添加到对象中,因为我知道 raycaster.intersectObjects 需要一个数组作为其参数。它仍然不起作用。然后我按照第一个链接示例中的提示使用了scene.children。尽管如此,它总是给出“一无所获”。为什么?我究竟做错了什么?
非常感谢您的帮助。