【问题标题】:Three.js cast an picking arrayThree.js 投射一个拾取数组
【发布时间】:2013-06-07 07:12:45
【问题描述】:

我正在尝试构建一个拾取射线来查看我在 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。尽管如此,它总是给出“一无所获”。为什么?我做错了什么?

非常感谢您的帮助。

【问题讨论】:

  • 请发布一个完整代码的实时示例的链接,以便更容易找出问题所在。
  • @Lee Stemkoski:我想上传一个活生生的例子,但我不能,因为我不知道任何允许使用 .obj 文件的免费主机。如果你能告诉我,我可以上传一个活生生的例子!
  • @Lee Stemkoski:我可以在那里上传 body.obj,是的,但我不能在在线实时示例中使用它。当在某处的 freehoster 上托管 test.html 并在加载程序代码中添加 dropbox/mylink/body.obj 时,由于安全原因,它不会让我这样做。而且我无法在 Dropbox 上上传完整的 html 代码,因为它不会让它像 apache 服务器一样运行。

标签: javascript three.js


【解决方案1】:

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

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

希望对你有帮助!

【讨论】:

  • 我之前已经找到了这个例子,但是简单地复制代码是行不通的,它仍然使用 unprojectVector 等方法,这些方法与我迄今为止所学的相比已经过时了,因为在最新版本中你应该可以只使用projector.pickingRay(directionVector.clone(),camera);它应该可以工作。但事实并非如此!
猜你喜欢
  • 1970-01-01
  • 2016-03-17
  • 1970-01-01
  • 2016-06-21
  • 1970-01-01
  • 1970-01-01
  • 2013-08-03
  • 1970-01-01
相关资源
最近更新 更多