基本概念

在深入了解 ARCore 之前,了解一些基本概念会很有帮助。这些概念共同说明了 ARCore 如何实现虚拟内容看起来就像是呈现在真实的表面上或附加到现实世界中的位置一样。

运动追踪

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

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

环境理解

ARCore 会检测特征点和平面,从而不断提高对现实世界环境的理解。

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

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

深度理解

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

光估测

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

用户互动

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

定向点

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

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

锚点和可跟踪对象

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

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

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

增强图像

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

ARCore 还会跟踪移动图像,例如移动公交车侧的广告牌。

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

分享

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

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

了解详情

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