有什么方法可以检查当前ARSCNView中的某个ARAnchor / SCNNode是否在屏幕上呈现

时间:2019-01-24 16:10:28

标签: ios swift scenekit arkit

我正在iOS 12上使用ARKit。当前,我已经创建并保存了添加的ARAnchor及其对应的SCNNode的列表。现在,我尝试检测何时在当前会话框架中渲染锚点/节点(即何时它们出现在屏幕上)。

我在文档中几乎遍及所有地方,除了session(_:didUpdate:)之外找不到其他合适的内容。我试图遍历frame.anchors并也保存在ARAnchor列表中并打印一些内容

func session(_ session: ARSession, didUpdate frame: ARFrame) {

        DispatchQueue.main.async {
            self.updateMappingState(frame.worldMappingStatus)
        }

        if isGameStarted {
            for anchor in frame.anchors where boxes[anchor] != nil {
                let box = boxes[anchor]
                print("Box found: \(box.) \(frame.timestamp)")
                box?.flashAnchor()
                flashFoundBox()
            }
        }
    }

但是即使没有在屏幕上显示预期的定位点,它也会不停地打印Box found

我在这里错过了什么吗?还是有另一种方法?

0 个答案:

没有答案