增强现实 - ArKit 中标记图像和相机之间的距离?

Augmented Reality - Distance between marker image and Camera in ArKit?

我想计算保存在 iOS 项目中用于增强现实检测的任何标记图像与您当前位置(即使用 ARKIT 的相机位置)之间的距离?

正如 Apple 的 documentation and sample code 注释:

  • 检测到的图像作为 ARImageAnchor 对象报告给您的应用程序。
  • ARImageAnchorARAnchor 的子类。
  • ARAnchor有一个transform属性,表示它在3D中的位置和方向space.
  • ARKit 还在每一帧上为您提供一个 ARCamera(或者您可以从会话的 currentFrame 中获取)。
  • ARCamera还有一个transform属性,表示相机在3D中的位置和方向space。
  • 你可以通过提取最后一个列向量得到translation vector (position) from a 4x4 transform matrix

这应该足以让您将这些点联系起来...

如果您使用的是 SceneKit 并且拥有 -(void) renderer:(id<SCNSceneRenderer>)renderer didAddNode:(SCNNode *)node forAnchor:(ARAnchor*)anchor 附带的 SCNNode*,那么 [node convertPosition:{0,0,0} toNode:self.sceneView.pointOfView].z 是到相机的距离。