javascript - Three.js 转换一个选取数组

标签 javascript three.js

我正在尝试构建一个拾取射线来查看我的 Three.js 中的 3D 主体是否已被单击。目前不起作用,我按照这些 Three.js raycast produces empty intersects array 进行操作还有这些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 代替。但它总是给出“什么也没发现”。为什么?我做错了什么?

非常感谢您的帮助。

最佳答案

这是一个工作示例的链接,其中当鼠标悬停在 3D 对象上时,该对象会改变颜色。也许可以调整此代码以满足您的需求?

http://stemkoski.github.io/Three.js/Mouse-Over.html

希望对你有帮助!

关于javascript - Three.js 转换一个选取数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17044070/

相关文章:

javascript - JQuery Ajax 用 Jquery 函数替换项目

javascript - bootstrap dualistbox 如何获取选择的值

javascript - 将 location.href 附加到 iframe 内的表单

javascript - 如何对多个维度求和

javascript - Three.js 根据坐标定位对象

javascript - Three.js - 对象 viewAt() 与其行进路径垂直 90 度

javascript - ThreeJS 场景以 60FPS 运行,但让我的粉丝兴奋不已,最终崩溃了

javascript - 如何顺序调用延迟函数?

javascript - ThreeJS 如何绘制具有弯曲边缘的形状

reactjs - 引用回调和 this.mount -reactJS