如果相机的眼睛可以看到三个物体,我怎样才能尽可能快地检测到? obj.visible 属性是一个setter,因此没用。另外 frustumCullum 是不够的,因为它仅指示对象是否在摄像机视口之外。我需要知道一个对象是否隐藏在另一个更大的对象后面。
有人有想法吗?
干杯
马库斯
答案 0 :(得分:4)
也许你可以使用THREE.Raycaster()?
var intersects = raycaster.intersectObjects( objects );
if ( intersects.length > 0 ) {
// find the object by name? intersects[0].
// Hidden if index > 0
}
答案 1 :(得分:1)
您可以使用RayCaster在您感兴趣的对象上拍摄光线,然后检查数组raycaster.intersectObjects([])返回。快速大纲可能如下所示:
var raycaster = projector.pickingRay( objectScreenPositionVector, camera );
var intersects = raycaster.intersectObjects( ObjectsArray ); //the objects you're interested in.
十字架将按距离排序,距离最近。
有很多在线教程可以选择Three和AFAIK,这是一个相对有效的操作。我快速查看http://soledadpenades.com/articles/three-js-tutorials/object-picking/以更新我对命令名称的记忆。