如何在threejs中通过raycaster从相交检查中排除辅助对象?
Posted
技术标签:
【中文标题】如何在threejs中通过raycaster从相交检查中排除辅助对象?【英文标题】:How To exclude helper objects from intersection check by raycaster in threejs? 【发布时间】:2014-03-03 13:01:02 【问题描述】:我有一个对对象进行交叉检查的threejs 场景。我将每个场景对象添加到数组中,然后由光线投射器检查。
var intersects = raycaster.intersectObjects( scene.children );
然后我检查对象的颜色并在与鼠标指针接触时更改它。
INTERSECTED.material.emissive.setHex( 0xff0000 );
如果我在场景中添加一个辅助对象,如 CameraHelper
或 GridHelper
,我会经常出错,因为辅助对象无法使用 .getHex
.setHex
。
是否可以从该检查中排除辅助对象,我将如何做到这一点?
它必须类似于 scene.children
- scene.helpers 但我无法想出办法来做到这一点。
感谢您的帮助。
【问题讨论】:
【参考方案1】:创建一个您希望Raycaster
处理的对象数组。
var objects = [];
objects.push( mesh1 );
objects.push( mesh2 );
---
var intersects = raycaster.intersectObjects( objects, recursiveFlag );
three.js r.73
【讨论】:
非常感谢。如您所述,我将对象添加到场景和一个额外的数组中,并且只处理光线投射器中的额外数组。【参考方案2】:据我了解,有两种解决方案:
https://threejs.org/docs/index.html#api/en/objects/Group https://threejs.org/docs/index.html#api/en/core/Layers您可能不想为此使用 Group 的一个原因是,您可能正在使用 Group 将多个对象保持在一起,但您只想对 Group 中的某些对象进行光线投射测试。
【讨论】:
以上是关于如何在threejs中通过raycaster从相交检查中排除辅助对象?的主要内容,如果未能解决你的问题,请参考以下文章
ThreeJS:在PlaneBufferGeometry中查找相邻面
threejs raycasting - 相机和加载的 obj 模型之间的交集