增强现实 - ArKit 中标记图像和相机之间的距离?
Augmented Reality - Distance between marker image and Camera in ArKit?
我想计算保存在 iOS 项目中用于增强现实检测的任何标记图像与您当前位置(即使用 ARKIT 的相机位置)之间的距离?
正如 Apple 的 documentation and sample code 注释:
- 检测到的图像作为
ARImageAnchor
对象报告给您的应用程序。
ARImageAnchor
是 ARAnchor
的子类。
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
是到相机的距离。
我想计算保存在 iOS 项目中用于增强现实检测的任何标记图像与您当前位置(即使用 ARKIT 的相机位置)之间的距离?
正如 Apple 的 documentation and sample code 注释:
- 检测到的图像作为
ARImageAnchor
对象报告给您的应用程序。 ARImageAnchor
是ARAnchor
的子类。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
是到相机的距离。