ARCore-Unity3d教程2 - 基本概念

本文首发于“洪流学堂”微信公众号。
洪流学堂,让你快人几步成为Unity大牛!

基本概念

在使用 ARCore 之前,了解一些基本概念会有很大帮助。 这些概念共同介绍了 ARCore 怎样呈现一种逼真的体验,让虚拟内容看起来就像位于真实表面或者处于现实世界中的位置一样。

运动跟踪

当您的手机在现实世界中移动时,ARCore 会通过一个名为并行测距与映射(或 COM)的过程来理解手机相对于周围世界的位置。 ARCore 会检测捕获的摄像头图像中的视觉差异特征(称为特征点),并使用这些点来计算其位置变化。 这些视觉信息将与设备 IMU 的惯性测量结果结合,一起用于估测摄像头随着时间推移而相对于周围世界的姿态(位置和屏幕方向)。

通过将渲染 3D 内容的虚拟摄像头的姿态与 ARCore 提供的设备摄像头的姿态对齐,开发者能够从正确的透视角度渲染虚拟内容。 渲染的虚拟图像可以叠加到从设备摄像头获取的图像上,让虚拟内容看起来就像现实世界的一部分一样。

ARCore-Unity3d教程2 - 基本概念

环境理解

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

ARCore 可以查找看起来位于常见水平表面(例如桌子和书桌)上的成簇特征点,并让这些表面可以由您的应用用作平面。 ARCore 也可以确定每个平面的边界,并将该信息提供给您的应用。 您可以使用此信息将虚拟物体置于平坦的表面上。

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

ARCore-Unity3d教程2 - 基本概念

光估测

ARCore 可以检测其环境光线的相关信息,并为您提供给定摄像头图像的平均光强度。 此信息让您能够使用与周围环境相同的光照来照亮您的虚拟物体,提升它们的真实感。

ARCore-Unity3d教程2 - 基本概念

用户交互

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

定向点

定向点可以让您把虚拟物体摆放在非水平的表面上。 当您运行命中测试而返回特征点时,ARCore 将查看附近的特征点并使用它们来尝试估计给定特征点处的表面角度。 然后 ARCore 将返回一个顾及该角度的姿势。

由于 ARCore 使用特征点簇来检测表面的角度,因此可能无法正确检测到没有纹理的表面(如白色墙壁)。

锚点和可跟踪对象

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

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

了解详情

在您选择的平台上构建 AR 体验,开始将这些概念用于实践。
Unity 使用入门


ARCore-Unity3d教程2 - 基本概念


交流群:492325637
关注“洪流学堂”微信公众号,让你快人几步成为Unity大牛
ARCore-Unity3d教程2 - 基本概念

ARCore-Unity3d教程2 - 基本概念