ARcore---基础原理(二)

基本原理详解:--整理自RACORE官网:

运动跟踪:

       当手机在现实世界中移动时,ARCore 会通过VIO过程来获得手机相对于周围世界的Pose(为相对于世界坐标系)。

       过程是ARCore 会检测摄像头拍摄的图像中的特征点(视觉差异特征,指特征点随时间的移动),并使用这些点来计算相机位置变化。 将这些视觉信息与设备 IMU 的数据结果结合,可以实时估计出摄像头相对于周围世界坐标系的姿态(位置和方向)。

       通过将渲染 3D 内容的虚拟摄像头Pose与 ARCore 提供的设备摄像头的Pose进行对齐,开发者能够从正确的透视角度渲染虚拟内容。然后渲染的虚拟图像可以叠加到从设备摄像头拍摄的图像上,使得虚拟内容看起来就像现实世界的一部分。

ARcore---基础原理(二)_第1张图片

环境理解:

        ARCore 会通过检测特征点和平面来不断改进它对现实世界环境的理解。

       ARCore 可以查找看起来位于常见水平或垂直表面上的成簇特征点(例如桌子或墙),并让这些平面在app中显示的也是平面。 ARCore 也可以确定每个平面的边界,并让在app中也认为是平面。 你可以使用理解的这些信息将虚拟物体置于平坦的表面上。

      由于 ARCore 使用特征点来检测平面,因此可能无法正确检测像白墙一样没有纹理的平坦表面。

ARcore---基础原理(二)_第2张图片

光照估测:

       ARCore 可以检测环境中光线的相关信息,并提供拍摄图像的平均光照强度和色彩校正。这些信息能够使用与周围真实环境相同的光照来照射渲染的虚拟物体,以此来提升它们的真实效果。

ARcore---基础原理(二)_第3张图片

用户交互:

       ARCore 利用命中测试(hit test)来获取对应于手机屏幕的 (x,y) 坐标(通过点击或app支持的任何其他交互操作),并将一条射线投影到摄像头的视野中,返回这条射线贯穿的任何平面或特征点以及交叉位置在现实世界空间中的姿态。这样可以选择环境中的物体或者与它们互动。

定向点:

       借助定向点,您可以将虚拟物体置于倾斜的表面上。 当您执行会返回特征点的命中测试时,ARCore 将查看附近的特征点并使用这些特征点估算表面在给定特征点处的角度。 然后,ARCore会返回一个将该角度考虑在内的姿态。

       由于ARCore 使用成簇特征点来检测表面的角度,因此可能无法正确检测像白墙一样没有纹理的表面。

锚点(anchors)和可跟踪对象(trackble):

       随着 ARCore 更新它对自身位置和环境的理解,pose会变化。 当想要放置一个虚拟物体时,需要定义一个锚点(anchor)来确保 ARCore 可以实时跟踪物体。很多时候,需要基于命中测试(hit test)返回的姿态创建一个锚点,如用户交互中所述。

       姿态会发生变化,这就意味着 ARCore 可能会更新平面和特征点等环境物体随时间推移的位置。平面和特征点是一种特殊类型的物体,称为可跟踪对象。 顾名思义,ARCore 可以实时跟踪这些物体。可以将虚拟物体锚点到特定的可跟踪对象,这样可以确保虚拟物体与可跟踪对象之间的关系即使在设备移动时也能保持稳定。 这意味着,如果将一个虚拟的 Android 小雕像放在书桌上,即使 ARCore 稍后调整了与书桌关联的平面的姿态,Android 小雕像仍会看起来位于桌子上。

      注:为了减少 CPU 开销,请尽可能重用锚点并在不再需要时分离锚点。

增强图像:

       使用增强图像,您可以构建能够响应特定 2D 图像(如产品包装或电影海报)的 AR app。 用户可以在将手机的摄像头对准特定图像时触发 AR 体验,例如,他们可以将手机的摄像头对准电影海报,使人物弹出,然后引发一个场景。

      可离线编译图像以创建图像数据库,也可以从设备实时添加单独的图像。注册后,ARCore 将检测这些图像、图像边界,然后返回相应的姿态。

共享:

       借助 ARCore 的 Cloud Anchors API,您可以创建适用于 Android 和 iOS 设备的协作性或多人游戏应用。

        使用云锚点,一台设备可以将锚点和附近的特征点发送到云端进行托管。 可以将这些锚点与同一环境中 Android 或iOS 设备上的其他用户共享。 这使应用可以渲染连接到这些锚点的相同 3D 对象,从而让用户能够同步拥有相同的 AR 体验。

 

 

 

 

 


你可能感兴趣的:(AR/VR,SLAM)