ARKit 或 ARCore 使用什么算法来检测平面?

Fas*_*eno 6 augmented-reality arkit arcore

我正在致力于创建简单的 AR 应用程序,并且使用了 ARCore 和 ARKit。我对现实世界中虚拟物体定位的准确性印象深刻,因为我玩的手机没有深度传感器,也没有多个摄像头,所以我想知道:这些 SDK 实现平面检测的算法是什么?

ARG*_*Geo 6

\n

基本上,ARCore 使用一种称为并发里程计和绘图( COM ) 的技术,而 ARKit 使用一种称为视觉惯性里程计( VIO )的技术来了解智能手机相对于其周围真实环境的位置。

\n
\n

在第一阶段 \xe2\x80\x93运动跟踪\xe2\x80\x93 每个智能手机结合来自RGB camera sensor(60 fps)的视觉数据和来自(1000 fps)的运动数据,以使用视差accelerometer and gyroscope sensors计算高对比度的位置公式。该信息允许 ARCore 和 ARKit 获得虚拟相机在六个自由度 (6 DoF) 的位置和方向。feature points

\n

下一阶段 \xe2\x80\x93场景理解\xe2\x80\x93 帮助 ARCore 和 ARKit 理解多个特征点(又名稀疏点云)共面的位置 \xe2\x80\x93,从而让智能手机找出检测到的特征点飞机将会。

\n

ARCore 的最后一个阶段是光估计,ARKit 的最后一个阶段是渲染you don\'t even need to import SceneKit因为 ARKit 包含所有必要的 SceneKit 类 \xe2\x80\x93,请检查这一点)。

\n
\n

正如您所看到的,制造商无需提供具有多个RGB cameras或 的智能手机Depth rear camera,因为只需RGB 和 IMU 传感器即可完成这项工作

\n
\n

  • 嘿安迪,我喜欢你的回答,因为它很好地总结了这两种技术的工作原理,但是你有消息来源说渲染是 ARKit 的最后阶段吗?在我看来,这是没有意义的,因为 ARKit 基本上是一个场景理解框架,这与它的渲染方式“无关”(例如,我们可以使用 ARKit 获取场景信息并使用 Metal 或 Vulkan 进行渲染)。 (2认同)
  • 嘿@MarcelAlves,请观看 ARKit WWDC 2017 会议(时间 05:00),关于“场景理解”之后的“ARKit 的第三层”。由于 Xcode 中的 ARKit 包含所有必需的 SceneKit 类,因此在制作 iOS AR 应用程序时甚至不需要导入 SceneKit 模块。https://developer.apple.com/videos/play/wwdc2017/602 (2认同)