我正在尝试使用 Apple 的 ARKit,并且对相机转换有疑问。变换矩阵中的哪个值代表用户从原点出发的距离?打电话
self.sceneView.session.currentFrame!.camera.transform.columns.0.x
似乎没有产生正确的X
翻译。
Y
此外,和的正确位置是Z
什么?
我正在尝试使用 Apple 的 ARKit,并且对相机转换有疑问。变换矩阵中的哪个值代表用户从原点出发的距离?打电话
self.sceneView.session.currentFrame!.camera.transform.columns.0.x
似乎没有产生正确的X
翻译。
Y
此外,和的正确位置是Z
什么?
4x4 变换矩阵的最后一列——matrix.columns.3
在这种情况下——是平移向量。有关 4x4 变换矩阵及其工作原理的一些背景信息,请参阅这个旧答案。
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 列获取翻译后的值
获取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)