从ARCamera获取相机翻译

问题描述 投票:3回答:3

我正在试验Apple的ARKit,并对摄像机转换有疑问。变换矩阵中的哪个值表示用户从原点移动了多远?调用

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

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

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

swift cocoa-touch matrix augmented-reality arkit
3个回答
5
投票

4x4变换矩阵的最后一列 - 在这种情况下是matrix.columns.3 - 是平移向量。有关4x4变换矩阵的一些背景知识以及它们的工作原理,请参阅this old answer


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)

0
投票
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
 }
© www.soinside.com 2019 - 2024. All rights reserved.