Swift: 通过 UIbuttion 点击访问 ARsession 参数
Swift: Access ARsession parameters through a UIbuttion click
我正在尝试打印 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]])
但是,我想 access/print 单击按钮时的参数。我尝试了以下方法:
@IBAction private func startPressed() {
print(ARSession.init().currentFrame?.camera.projectionMatrix)
}
但是上面的结果returnsnil
。我是否遗漏了一些明显的问题,有人可以帮助我解决这个问题,以便我可以在单击按钮时正确访问相机参数吗?
提前致谢!
您正在通过调用 ARSession.init()
来初始化一个新会话,难怪 returns nil
。您应该改用 currently 运行 ARSession
的实例。假设您使用 ARSCNView
来渲染 AR 体验,正确的代码如下所示:
@IBAction private func startPressed() {
if let matrix = sceneView.session.currentFrame?.camera.projectionMatrix {
print(matrix)
}
}
我正在尝试打印 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]])
但是,我想 access/print 单击按钮时的参数。我尝试了以下方法:
@IBAction private func startPressed() {
print(ARSession.init().currentFrame?.camera.projectionMatrix)
}
但是上面的结果returnsnil
。我是否遗漏了一些明显的问题,有人可以帮助我解决这个问题,以便我可以在单击按钮时正确访问相机参数吗?
提前致谢!
您正在通过调用 ARSession.init()
来初始化一个新会话,难怪 returns nil
。您应该改用 currently 运行 ARSession
的实例。假设您使用 ARSCNView
来渲染 AR 体验,正确的代码如下所示:
@IBAction private func startPressed() {
if let matrix = sceneView.session.currentFrame?.camera.projectionMatrix {
print(matrix)
}
}