5

我正在尝试使用 Apple 的 ARKit,并且对相机转换有疑问。变换矩阵中的哪个值代表用户从原点出发的距离?打电话

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

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

Y此外,和的正确位置是Z什么?

4

3 回答 3

6

4x4 变换矩阵的最后一列——matrix.columns.3在这种情况下——是平移向量。有关 4x4 变换矩阵及其工作原理的一些背景信息,请参阅这个旧答案

于 2017-06-30T05:39:24.113 回答
1
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 列获取翻译后的值

于 2019-02-18T09:20:15.067 回答
1

获取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)
于 2018-09-01T10:35:33.850 回答