在three.js中对'subscenes'进行光线投射

Cab*_*ibo 0 html5 webgl three.js raycasting

所以我正在使用three.js示例中的webgl_interactive_cubes.html,我有一个相对简单的问题:是否可以测试光线与对象子节点的交集.

例如,如果我做了类似的事情:

for ( var i = 0; i < 2000; i ++ ) {

var object = new THREE.Mesh( geometry, new THREE.MeshLambertMaterial( { color: Math.random() * 0xffffff } ) );
scene.add( object );

}
Run Code Online (Sandbox Code Playgroud)

我打电话的时候

var intersects = raycaster.intersectObjects( scene.children );
Run Code Online (Sandbox Code Playgroud)

它将与这些对象相交.但是,如果我首先创建一个'subScene',如下所示:

var subScene = new THREE.Object3D();
scene.add(subScene);
Run Code Online (Sandbox Code Playgroud)

然后将所有这些对象添加到subScene而不是场景,将不再发生交集.

是否可以在场景和子场景中交叉所有对象(在最终项目中我希望有多层嵌套的subScenes)或者如果我使用光线投射,我应该尝试将所有对象保留在同一场景中吗?

提前感谢您的时间,

艾萨克

Wes*_*ley 7

你只需要设置recursive标志:

var intersects = raycaster.intersectObjects( scene.children, true );
Run Code Online (Sandbox Code Playgroud)

three.js r.58