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)
    }
}