SceneKit - 遮挡剔除

Van*_*yen 1 occlusion-culling scenekit ios8

我已经在iOS 8上使用SceneKit很长一段时间了,最​​近,我遇到了一种情况,我需要检测节点是否出现在视口上.遮挡剔除可能是一种可能的解决方案.因此,SceneKit是否有任何遮挡剔除选项,如果没有,我可能想尝试的其他建议是什么?谢谢!

ric*_*ter 6

isNodeInsideFrustum:withPointOfView: 方法告诉您节点是否在摄像机的视野内,但它不会告诉您它是否被其他场景几何体遮挡.

如果您需要遮挡测试,平截头体测试是一个很好的起点.一旦您知道某个节点位于视锥体中,您就可以执行命中测试以查看其间是否有任何节点.如果命中测试的结果包括目标以外的节点,则可能至少部分模糊.

命中测试不会给你带来极端细节(比如一个节点的任何渲染像素是否会在其他节点后面可见),但它可能足以满足你的需要.您可以使用options参数稍微优化命中测试的灵敏度,并选择要测试的点 - 例如,只是目标节点的中心或其边界框的角.命中测试也具有CPU性能成本,因此您必须在所需功能和目标帧速率之间找到正确的权衡.