4

如果相机的眼睛可以看到threejs对象,我怎样才能尽快检测到?obj.visible属性是一个 setter,所以没用。frustumCullum也是不够的,因为它仅指示对象是否在相机视口之外。我需要知道一个对象是否隐藏在另一个更大的对象后面。

有人有想法吗?

干杯

马库斯

4

2 回答 2

5

也许你可以使用 THREE.Raycaster()?

var intersects = raycaster.intersectObjects( objects );
if ( intersects.length > 0 ) {
    // find the object by name? intersects[0].
    // Hidden if index > 0
}
于 2013-10-09T18:19:04.997 回答
1

您可以使用 RayCaster 向您感兴趣的对象发射光线,然后检查数组 raycaster.intersectObjects([]) 返回。快速大纲可能如下所示:

var raycaster = projector.pickingRay( objectScreenPositionVector, camera );
var intersects = raycaster.intersectObjects( ObjectsArray ); //the objects you're interested in.

intersects 将按距离排序,最近的在前。

网上有很多关于三选一的教程,AFAIK,这是一个相对有效的操作。我快速浏览了http://soledadpenades.com/articles/three-js-tutorials/object-picking/以刷新我对命令名称的记忆。

于 2013-10-09T18:23:04.210 回答