从 ARCamera 获取相机翻译

Get Camera Translation from ARCamera

我正在试用 Apple 的 ARKit,对相机转换有疑问。变换矩阵中的哪个值表示用户从原点走了多远?呼叫

self.sceneView.session.currentFrame!.camera.transform.columns.0.x 

似乎没有产生正确的 X 翻译。

此外,YZ 的正确位置是什么?

4x4 变换矩阵的最后一列——在本例中为 matrix.columns.3——是平移向量。有关 4x4 变换矩阵及其工作原理的一些背景知识,请参阅 this old answer

获得ARCamera翻译的最简单方法如下:

func getCameraTransform(for sceneView: ARSCNView) -> MDLTransform {
    guard let transform = sceneView.session.currentFrame?.camera.transform else { return }
    return MDLTransform(matrix: transform)
}

let position = SCNVector3(cameraTransform.translation.x, 
                          cameraTransform.translation.y, 
                          cameraTransform.translation.z)
func session(_ session: ARSession, didUpdate frame: ARFrame)
 {
     // Do something with the new transform
     let currentTransform = frame.camera.transform
     let x = currentTransform.columns.3.x
     let y = currentTransform.columns.3.y
     let z= currentTransform.columns.3.z
 }

向量的最后一列是翻译值。您可以从第 3 列

中获取翻译后的值