光线投射反对three.js所“子场景”(Raycasting against 'subsc

2019-10-29 15:05发布

所以我跟在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);

然后添加所有这些对象子场景,而不是现场的,将不再发生交集。

它是在所有可能的交叉场景和子场景中的所有对象(在最后的项目,我想有嵌套子场景的许多层)或者我应该尝试,如果我使用光线投射,以保持所有对象在同一场景?

预先感谢您的宝贵时间,

艾萨克

Answer 1:

你只需要设置recursive标志:

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

three.js所r.58



文章来源: Raycasting against 'subscenes' in three.js