ARKit – 如何在 ARSession 期间跟踪 iPhone 相机位置?

ARKit – How to track iPhone camera location during ARSession?

我是 Xcode 的新手,所以任何帮助都是天赐之物。我正在尝试编写一个应用程序,以设定的时间间隔从 iPhone 保存位置和旋转数据并将其保存到文件中。现在,我不确定在获取该数据时应该去哪里查看。

CoreMotion 似乎还不够,所以我正在使用 ARKit。我有一个 sceneView,我可以在其中看到原点和特征点,但同样,当涉及到摄像机的位置或什至跟踪摄像机的位置时,我还是卡住了。

您可以通过变换矩阵 (simd_float4x4) 检索 ARCamera 的位置和旋转。此数据包含在 运行 ARSession(用于自拍或后置摄像头)的每个 ARFrame 中。

let sceneView = ARSCNView(frame: .zero)
sceneView.delegate = self

let frame: ARFrame = sceneView.session.currentFrame!
let cameraPosition: simd_float4 = frame.camera.transform.columns.3
let cameraRotation: simd_float3 = frame.camera.eulerAngles

这些行的最佳位置是 SceneKit 的 renderer(_:didUpdate:for:) 实例方法。考虑到来自 IMU 传感器的 ARCamera 变换值经过特殊过滤。