使用 ARKit 检测 phone 移动轨迹和距离

Use ARKit detect phone moving trail and distance

我想要日志 phone 移动轨迹和距离。

因为我们可以使用 ARKit 测量真实世界的物体。

func distance(from vector: SCNVector3) -> Float {
    let distanceX = self.x - vector.x
    let distanceY = self.y - vector.y
    let distanceZ = self.z - vector.z

    return sqrtf( (distanceX * distanceX) + (distanceY * distanceY) + (distanceZ * distanceZ))
}

我可以得到 2 个 SCNVector3 之间的距离。

但我不知道如何在 AR 场景中记录 phone 的当前 SCNVector3

是否可以使用 ARKit 测量 phone 移动距离和移动轨迹?

当您创建 ARSession 时,相机位于 0,0,0 并随着您移动 phone 而移动。所以如果你想知道phone离它原来的位置有多远,只要看一下当前帧的相机变换矩阵的平移部分:

frame.camera.transform

如果您不熟悉数学,则 x y 和 z 转换组件位于 m41, m42 and m43 respectively. See the apple core animation 文档中以获取更多关于矩阵的信息。