三个JS:如何检测对象是否呈现/可见

时间:2013-10-09 17:59:31

标签: three.js

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

有人有想法吗?

干杯

马库斯

2 个答案:

答案 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/以更新我对命令名称的记忆。