因此,根据标题,我试图弄清楚是否有一种计算场景边界的好方法,因为通常的帧/边界属性在上下文中并不真正起作用。
我基本上需要一种方法来根据 xFov/yFov/zNear/zFar 的相机设置检查对象是否已移出可视屏幕。到目前为止,我还没有真正找到这样做的好方法。我是否在这里忽略了任何 API 方法,还是需要手动计算?
我希望我在这里有意义,如果不是,请告诉我,我会进一步澄清。
SCNView
符合SCNSceneRenderer
which 反过来有一个名为isNodeInsideFrustum:withPointOfView:
which 的方法是您正在寻找的。根据文档,它返回:
YES
如果被测节点的边界框与该节点定义的视锥相交pointOfView
;否则,NO
。
使用它看起来像这样:
BOOL isInside = [sceneView isNodeInsideFrustum:nodeToTest
withPointOfView:sceneView.pointOfView];
if (!isInside) {
// the bounding box of nodeToTest is not in the viewport ...
}