基本概念

在深入了解 ARCore 之前,了解一些基本概念会很有帮助。这些概念共同说明了 ARCore 如何实现如下体验:让虚拟内容看起来位于真实表面上,或者被附加到真实地点。

运动追踪

当您的手机在现实世界中移动时,ARCore 会使用一种称为同时定位和映射(即 SLAM)的过程来理解手机相对于周围环境的位置。ARCore 会检测捕获的摄像头图像中视觉上不同的特征(称为特征点),并使用这些点来计算其位置变化。这些视觉信息会与设备 IMU 的惯性测量结果相结合,以估算摄像头相对于周围世界的姿态(位置和方向)。

通过将渲染 3D 内容的虚拟摄像头的方向与 ARCore 提供的设备摄像头的方向对齐,开发者能够从正确的视角渲染虚拟内容。渲染的虚拟图像可以叠加在从设备相机获取的图像上,使虚拟内容看起来像是现实世界的一部分。

环境识别

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

ARCore 会查找看起来位于常见水平或垂直表面(如桌子或墙)上的成组特征点,并将这些表面以几何平面的形式提供给您的应用。ARCore 还可以确定每个几何平面的边界,并将该信息提供给您的应用。您可以使用这些信息将虚拟对象放置在平坦的表面上。

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

深度理解

ARCore 可以使用支持的设备上的主 RGB 摄像头创建深度图,即包含有关表面与给定点之间距离的数据的图像。您可以使用深度图提供的信息来实现身临其境的逼真用户体验,例如使虚拟对象与观察到的表面准确发生碰撞,或使虚拟对象显示在真实对象的前面或后面。

光估测

ARCore 可以检测其环境光线的相关信息,并为您提供给定摄像头图像的平均强度和色彩校正。通过这些信息,您可以在与周围环境相同的条件下为虚拟对象提供光照,从而增强现实感。

用户互动

ARCore 使用点击测试获取与手机屏幕对应的 (x,y) 坐标(通过点按或您希望应用支持的任何其他互动提供),并将光线投射到相机的视野中,返回光线相交的所有几何平面或特征点,以及该交叉点在世界空间中的姿态。这样,用户就可以选择环境中的对象或以其他方式与它们互动。

定向的点

借助定向点,您可以将虚拟对象放置在有角度的表面上。当您执行会返回特征点的点击测试时,ARCore 将查看附近的特征点,并利用这些特征点来估算表面在给定特征点处的角度。然后,ARCore 会返回一个将该角度考虑在内的姿势。

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

锚点和可跟踪对象

姿态会随着 ARCore 改进其对自身位置和环境的理解而变化。当您想要放置虚拟对象时,您需要定义一个锚点,以确保 ARCore 可以随着时间跟踪对象的位置。您通常需要根据点击测试返回的姿势创建锚点,如用户互动中所述。

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

如需了解详情,请参阅使用锚点

增强图像

借助增强图像功能,您可以构建能够响应特定 2D 图像(例如产品包装或电影海报)的 AR 应用。当用户将手机的相机对准特定图片时,可以触发 AR 体验。例如,用户将手机的相机对准电影海报,让一个角色弹出并演绎场景。

ARCore 还可以跟踪动态图像,例如,行驶中的公交车旁边的广告牌。

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

分享

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

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

了解详情

在您选择的平台上打造 AR 体验,开始将这些概念付诸实践。