Swift:通过UI按钮点击访问ARsession参数



我正在尝试打印ARsession的参数,如下所示。当我在一个会话中这样做时,它会起作用。

func session(_ session: ARSession, didUpdate frame: ARFrame) {
guard let arCamera = session.currentFrame?.camera else { return }
print("ARCamera ProjectionMatrix = (arCamera.projectionMatrix)")
}

结果:

ARCamera ProjectionMatrix = simd_float4x4([[1.774035, 0.0, 0.0, 0.0], [0.0, 2.36538, 0.0, 0.0], [-0.0011034012, 0.00073593855, -0.99999976, -1.0], [0.0, 0.0, -0.0009999998, 0.0]])

但是,我想在单击按钮时访问/打印参数。我尝试了以下方法:

@IBAction private func startPressed() {
print(ARSession.init().currentFrame?.camera.projectionMatrix)
}

但是上面的结果返回nil。我是不是错过了一些明显的东西?有人能帮我纠正这个问题吗?这样我就可以在点击按钮时正确访问相机参数?

提前感谢!

您正在通过调用ARSession.init()初始化一个新会话,因此它返回nil也就不足为奇了。您应该使用当前正在运行的ARSession的实例。假设您使用ARSCNView来呈现AR体验,正确的代码如下所示:

@IBAction private func startPressed() {
if let matrix = sceneView.session.currentFrame?.camera.projectionMatrix {
print(matrix)
}
}

最新更新