如何在Three.js的射线检测中排除辅助对象?

5

我有一个使用threejs创建的场景,其中包含与对象的交互检查。我将每个场景对象添加到数组中,然后通过射线投射器进行检查。

var intersects = raycaster.intersectObjects( scene.children );

我会检查一个对象的颜色,并在鼠标指针接触时更改它。

INTERSECTED.material.emissive.setHex( 0xff0000 );

如果我在场景中添加一个助手对象,如CameraHelperGridHelper,那么会不断出现错误,因为助手对象无法使用.getHex .setHex。请问是否有可能排除掉这些助手对象并且如何实现呢?
可能的方法是像这样:scene.children - scene.helpers,但我无法想出具体的解决方案。感谢您的帮助。
2个回答

12
创建一个包含你想让Raycaster处理的对象的数组。
var objects = [];

objects.push( mesh1 );
objects.push( mesh2 );

---

var intersects = raycaster.intersectObjects( objects, recursiveFlag );

three.js r.73


非常感谢。我按照您的描述将对象添加到场景中,并添加了一个额外的数组,只在射线投射器中处理该额外的数组。 - sthag

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接