使用 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 文档中以获取更多关于矩阵的信息。
我想要日志 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 文档中以获取更多关于矩阵的信息。