0

所以我正在使用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 );

}

当我打电话

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

它将与这些对象相交。但是,如果我首先像这样创建一个“子场景”:

var subScene = new THREE.Object3D();
scene.add(subScene);

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

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

提前感谢您的时间,

艾萨克

4

1 回答 1

7

您只需要设置recursive标志:

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

三.js r.58

于 2013-07-12T06:02:28.447 回答