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