我该如何尽快检测出一个threejs对象是否对相机视野可见?obj.visible属性是一个setter,所以没有用。而且frustumCullum也不够,因为它只能指示对象是否超出了相机视口。我需要知道一个对象是否被另一个更大的对象遮挡。
有人有想法吗?
谢谢
马库斯
有人有想法吗?
谢谢
马库斯
var intersects = raycaster.intersectObjects( objects );
if ( intersects.length > 0 ) {
// find the object by name? intersects[0].
// Hidden if index > 0
}
您可以使用 RayCaster 对感兴趣的对象进行射线投射,然后检查数组 raycaster.intersectObjects([]) 返回的结果。一个简单的概述可能如下:
var raycaster = projector.pickingRay( objectScreenPositionVector, camera );
var intersects = raycaster.intersectObjects( ObjectsArray ); //the objects you're interested in.
相交的物体将会按照距离排序,最近的在前。
网上有很多关于在 Three 中进行拾取的教程,据我所知,这是一个相对高效的操作。我快速查看了一下http://soledadpenades.com/articles/three-js-tutorials/object-picking/来刷新我的记忆,了解命令名称。