什么是 ARCore?
ARCore — Google 的 AR 开发者平台 — 为创建 AR 体验提供了简单而强大的工具。
ARCore — Google’s AR developer platform — provides simple yet powerful tools for creating AR experiences.
官网地址:
https://arvr.google.com/arcore/
https://developers.google.cn/ar/
https://developers.google.com/ar/
ARCore 是 Google 用于构建增强现实体验的平台。ARCore 使用不同的 API 使您的手机能够感知环境、了解世界并与信息交互。一些 API 可在 Android 和 iOS 上使用,以实现共享的 AR 体验。
ARCore 使用三个关键功能将虚拟内容与通过手机摄像头看到的现实世界相结合:
运动跟踪:允许手机了解并跟踪其相对于世界的位置。
环境理解:使手机能够检测所有类型表面的大小和位置:水平、垂直和有角度的表面,如地面、咖啡桌或墙壁。
光估计:允许手机估计环境的当前照明条件。
ARCore 旨在用于运行 Android 7.0 (Nougat) 及更高版本的各种合格的 Android 手机。此处提供了所有受支持设备的完整列表。
从根本上说,ARCore 正在做两件事:跟踪移动设备移动时的位置,以及建立自己对现实世界的理解。
ARCore 的运动跟踪技术使用手机的摄像头来识别有趣的点,称为特征,并跟踪这些点如何随时间移动。结合这些点的移动和手机惯性传感器的读数,ARCore 可以确定手机在空间中移动时的位置和方向。
除了识别关键点之外,ARCore 还可以检测平面,例如桌子或地板,还可以估计其周围区域的平均照明。这些功能相结合,使 ARCore 能够建立自己对周围世界的理解。
2、ARCore 的特点
云锚
跨 Android 和 iOS 的持久、多用户、跨平台 AR 体验。
录音和回放
使用预先录制的 MP4 加速开发人员工作流程并解锁新用例。
深度
通过对象遮挡、沉浸和交互来增加真实感——您甚至可以进行对象和场景重建。
环境 HDR
将现实世界的照明扩展到虚拟对象,使数字对象看起来就像它们实际上是现实世界场景的一部分。
3、ARCore 的原理
3.1 运动追踪(Motion tracking)
当您的手机在世界范围内移动时,ARCore 使用称为同步定位和地图绘制(SLAM)的过程来了解手机相对于周围世界的位置。ARCore 在捕获的相机图像中检测视觉上不同的特征,称为 特征点,并使用这些点来计算其位置变化。视觉信息与来自设备 IMU 的惯性测量值相结合,以估计相机相对于世界随时间推移的姿态(位置和方向)。
通过将渲染 3D 内容的虚拟相机的姿势与 ARCore 提供的设备相机的姿势对齐,开发人员能够从正确的角度渲染虚拟内容。渲染的虚拟图像可以叠加在从设备摄像头获得的图像之上,使其看起来好像虚拟内容是现实世界的一部分。
3.2 环境理解(Environmental understanding)
ARCore 通过检测特征点和平面,不断提高对现实世界环境的理解。
ARCore 寻找看似位于常见水平或垂直表面(如桌子或墙壁)上的特征点簇,并将这些表面作为几何平面提供给您的应用程序。ARCore 还可以确定每个几何平面的边界,并将该信息提供给您的应用程序。您可以使用此信息将虚拟对象放置在平面上。
由于 ARCore 使用特征点来检测平面,因此可能无法正确检测没有纹理的平面,例如白墙。
3.3 深度了解(Depth understanding)
ARCore 可以使用受支持设备的主 RGB 摄像头创建深度图,即包含有关表面与给定点之间距离的数据的图像 。您可以使用深度图提供的信息来实现身临其境和逼真的用户体验,例如使虚拟对象与观察到的表面准确碰撞,或者使它们出现在现实世界对象的前面或后面。
3.4 光估计(Light estimation)
ARCore 可以检测有关其环境照明的信息,并为您提供给定相机图像的平均强度和色彩校正。此信息可让您在与周围环境相同的条件下照亮虚拟对象,从而增加真实感。
3.5 用户互动(User interaction)
ARCore 使用命中测试来获取与手机屏幕对应的 (x,y) 坐标(通过点击或您希望应用程序支持的任何其他交互提供)并将光线投射到相机的世界视图中,返回任何几何平面或光线相交的特征点,以及该交点在世界空间中的姿态。这允许用户选择或以其他方式与环境中的对象交互。
3.6 定向点(Oriented points)
定向点可让您将虚拟对象放置在有角度的表面上。当您执行返回特征点的命中测试时,ARCore 将查看附近的特征点并使用这些特征点来尝试估计给定特征点处的表面角度。然后 ARCore 将返回一个考虑了该角度的姿势。
由于 ARCore 使用特征点簇来检测表面的角度,因此可能无法正确检测没有纹理的表面,例如白墙。
3.7 锚点和可追踪对象(Anchors and trackables)
随着 ARCore 提高对自身位置和环境的理解,姿势可能会发生变化。当您想要放置虚拟对象时,您需要定义一个 锚点以确保 ARCore 随时间跟踪对象的位置。通常,您会根据命中测试返回的姿势创建锚点,如用户交互中所述。
姿势可以改变的事实意味着 ARCore 可能会随着时间的推移更新几何平面和特征点等环境对象的位置。平面和点是一种特殊类型的对象,称为可追踪对象。顾名思义,这些是 ARCore 将随时间跟踪的对象。您可以将虚拟对象锚定到特定的可追踪对象,以确保即使设备四处移动,您的虚拟对象与可追踪对象之间的关系也能保持稳定。这意味着,如果您在桌面上放置一个虚拟的 Android 小雕像,如果 ARCore 稍后调整了与桌面相关联的几何平面的姿势,则该 Android 小雕像仍会出现在桌子顶部。
注意:为了降低 CPU 成本,请尽可能重用锚点并分离不再需要的锚点。
3.8 增强图像(Augmented Images)
增强图像是一项功能,可让您构建可以响应特定 2D 图像(例如产品包装或电影海报)的 AR 应用程序。用户可以在将手机摄像头对准特定图像时触发 AR 体验——例如,他们可以将手机摄像头对准电影海报,然后弹出一个角色并制作一个场景。
ARCore 还跟踪移动图像,例如移动公交车侧面的广告牌。
可以离线编译图像以创建图像数据库,或者可以从设备实时添加单个图像。注册后,ARCore 将检测这些图像、图像的边界,并返回相应的姿势。
3.9 分享(Sharing)
ARCore Cloud Anchor API 可让您为 Android 和 iOS 设备创建协作或多人游戏应用程序。
使用 Cloud Anchors,一台设备将一个锚点和附近的特征点发送到云端进行托管。这些锚点可以与同一环境中 Android 或 iOS 设备上的其他用户共享。这使应用程序能够渲染附加到这些锚点的相同 3D 对象,让用户同时拥有相同的 AR 体验。