“真实世界对象”、表面、AR 锚点之间有什么区别?

What is difference between “real-world object” , surface, AR anchors?

我正在寻找问题的技术答案:

ARkit 中“真实世界对象”、表面、AR 锚点之间有什么区别?

我相信并且据我所知: 1) ARkit 提供了 3 种不同的方法来搜索“真实世界的对象”、表面、AR Anchors。

我了解要查找在视图中显示的 SceneKit /SpriteKit 内容,您需要使用不同的 hitTest 方法。

我只是不明白什么是“真实世界的物体” vs surface vs AR anchor?

我的最佳猜测是:

真实世界对象: - 我不知道? 表面: - 特征点 - 估计的水平面 -estimatedVerticalPlane AR主播: AR图像锚点 ARFaceAnchor ARPlaneAnchor

我想你明白了....ARKit 中的“真实世界对象”是什么?

任何帮助都会很棒。该文档似乎真正强调了“真实对象或表面”之间的区别。

谢谢 聪明狗 我们都通过分享我们所知道的来学习

我的直觉是,无论谁写了 Apple 的文档,都会让事情变得模棱两可,因为 a) 您可以将这些方法用于多种类型的命中测试,并且 b) ARKit 真的 不知道它在看什么。

如果您对任何与平面相关的类型(existingPlaneestimatedHorizontalPlane 等)进行命中测试,您正在寻找真实世界的平坦表面。或者更确切地说,您正在寻找 ARKit“认为”看起来像水平(或垂直,在 iOS 11.3 及更高版本中)表面的东西。这些可能会也可能不会准确反映现实世界在任何给定时刻的形状,但它们是 ARKit 的最佳猜测。您搜索哪种与飞机相关的类型决定了您是否获得了现有的 ARAnchor.

(注意漏报比漏报更常见。例如,您可能会在桌面的某个角落未被 ARKit 映射的点上找不到命中结果,但您不太可能找到平面命中结果没有对应的真实世界平面。)

如果您进行 featurePoint 命中测试,您将针对 ARKit 的用户环境稀疏地图进行测试。如果你打开 ARSCNView 中的 showFeaturePoints 选项,你可以看到这张地图——在每一帧视频中,它会找到几十到几百个视觉上足够有趣的点(好吧,“有趣”来自一个特定算法的观点),它可以关联它们在帧之间的 2D 位置,并使用视差差异来估计它们与相机的距离和 3D 中的位置 space。 (反过来,这会告知 ARKit 设备本身在 3D 中的位置 space。)

因为“特征点”可以是相机图像中任何小的、高对比度的区域,它与现实世界中任何特定类型的事物并不真正相关。如果您正在看一张带有漂亮木纹图案的桌子,您会在桌面平面上看到很多特征点。如果你正在看一张桌子,比如说,上面有一盆植物,你会在桌面上看到一些点,在花盆上看到一些点,在树叶上看到一些点......没有足够的点让你(或 CV 算法) 真的可以凭直觉了解植物的形状。但足够了,如果用户点击其中一个点,您的应用程序可以将一些 3D 对象放在那里,并且它可能看起来像粘在植物上一样令人信服。

所以,从最一般的意义上讲,ARKit 命中测试是在“现实世界”(ARKit 所感知的)中寻找某种“对象”,但除非你在寻找平面(表面)真的不能更具体地说明“对象”可能是什么。