查看原文
其他

从小白到上手 ARCore,这一篇技术贴请收好

ARCore 谷歌开发者 2019-02-14

ARCore 是 Google 的增强现实构建平台。它利用不同的 API 让你的手机能够感知环境、了解现实世界并与其交互。从一年前的 Beta 版本发布,到如今的1.5 版本,ARCore 已经进入了快速应用的阶段。无论你想开发游戏、购物还是社交类应用,想知道 ARCore 如何运作?今天就手把手教你写代码。



ARCore 的运作原理

想要使用 ARCore 创造有虚拟元素的现实世界,需要依靠手机摄像头、传感器和算法这三者配合来完成。简单来说,ARCore 只做两件事:


  1. 运动追踪:ARCore 的运动跟踪技术使用手机摄像头标识兴趣点(称为特征点),并跟踪这些点随着时间变化的移动。将这些点的移动数据与手机惯性传感器的读数组合,即使手机一直移动,也能确定位置和屏幕方向。


  2. 理解融合:除了标识关键点外,ARCore 还会检测平坦的表面(例如桌子或地面),并估测周围区域的平均光照强度。 这些功能共同构成了 ARCore 对现实世界的理解。


借助 ARCore 对现实世界的理解,你能够在现实世界中,无缝融合进物体、注释或其他信息。不论是在咖啡桌放一只小猫,还是把艺术家注释信息融入画中。 运动跟踪意味着你可从任意角度查看,你可以静止观察,也可以边走边观察,即使你离开房间,当你回来后,小猫或注释还会在原地。



不可不知的三个主要功能

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


1. 运动跟踪:让手机可以理解和跟踪它相对于现实世界的位置。


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


通过将渲染 3D 内容的虚拟摄像头的姿态与 ARCore 提供的设备摄像头的姿态对齐,开发者能够从正确的透视角度渲染虚拟内容。 渲染的虚拟图像会叠加到摄像头获取的现实环境上,让虚拟和现实无缝融合。



2. 环境理解:让手机可以检测各类表面的大小和位置。


ARCore 会通过检测特征点和平面来不断改进对现实世界环境的理解。比如查找看起来位于常见水平或垂直表面(例如桌子或墙)上的成簇特征点,作为你可应用的平面。同时确定每个平面的边界,同步给你的应用。这样你可以把虚拟物体放置在平坦的表面上。


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



再举个例子,比如你想将一个虚拟场景放置在一个桌面上,或者给墙上加一些吓人的蜘蛛传送门。ARCore 可以提取检测摄像头画面的特征点,并查找、归类那些位于水平或垂直平面上的成簇的特征点,来估算平面的位置和大小。通过 ARCore 提供的 API ,你可以获取平面的类型(水平还是垂直),平面的边界多边形以及平面的中心位置。利用 ARCore 检测到的平面,你可以很容易的将虚拟物体放置在现实世界中的平面上。


3. 光估测: 让手机可以估测环境当前的光照条件。


ARCore 可以检测真实环境的光线信息,摄像头拍摄影像后, ARCore 提供这些影像的平均光强度和色彩校正。此信息能模拟周围环境的光照,来照亮你的虚拟物体,提升它们的真实感。



例如光照由明变暗时,应用中的虚拟物会作出相应的动作。这就是光估测发挥作用的地方,让虚拟物体随着环境光照的改变作出相应的行为。


除此之外,用户交互、定向点、锚点可跟踪对象、增强图像共享等多个概念共同让 ARCore 的体验更加逼真。



我能使用什么开发环境?

ARCore 为多种开发环境提供SDK。这些 SDK 为运动跟踪、环境识别和光估测等所有必需的 AR 功能提供了原生 API。你可以利用这些功能构建全新的 AR 体验,或者通过 AR 功能增强现有的应用。



谷歌开发者网站为每一种运行环境准备了满满的干货,例如如何快速入门、启用ARCore、在模拟器上运行等,不一而足。



不如动手写出属于你的第一行 AR 代码吧

正如前面所说,这是一篇教你快速上手的文章,接下来我们一起看看 Android 开发环境的快速入门:


1. 设置开发环境

  • 安装 Android Studio 3.1 或更高版本以及 Android SDK Platform 7.0(API 级别 24)或更高版本。


  • 获取示例项目。你可以:

    - 下载并解压 ARCore SDK for Android 和 Sceneform 示例

    -或-


    - 通过以下命令克隆代码库:

    git clone https://github.com/google-ar/arcore-android-sdk.git

    git clone https://github.com/google-ar/sceneform-android-sdk.git


2. 打开示例项目

在 Android Studio 中,打开 <sceneform samples folder>/hellosceneform 中的 hellosceneform 示例项目。


该项目使用 Sceneform,这个 3D 框架可让 Java 开发者在不使用 Open GL 的情况下轻松地构建 ARCore 应用。


示例项目已在 Gradle 和 Android SDK 等软件的特定版本上设有构建依赖项。如果必备依赖项未安装,Android Studio 将请求你允许下载它们并将它们安装在你的计算机上。


3. 准备设备或模拟器

你可以在支持的设备或模拟器上运行 ARCore 应用。

在模拟器中运行 Sceneform 应用还有其他要求:


  • 你需要 Android Emulator 27.2.7 或更高版本,Android Studio 预览版 3.2 中提供了该版本。


  • Android Emulator 必须支持并启用 OpenGL ES 3.1。

    - 确保你的模拟器已配置为使用最新版本。在菜单中,选择 Settings > Advanced > Renderer maximum (up to OpenGL ES 3.1)。

    - 运行模拟器并检查是否使用了 OpenGL ES 3.1:

    adb logcat | grep eglMakeCurrent

    - 如果你看到 ver 3 1,则可以运行 Sceneform 应用。如果你看到的是更低版本,则表示你的开发计算机 GPU 不支持 OpenGL ES 3.1,那么你必须使用受支持设备来运行 Sceneform 应用。


4. 运行示例

确保你的 Android 设备已连接到开发计算机,并在 Android Studio 中点击 Run。然后,选择你的设备作为部署目标并点击 OK。


Android Studio 将你的项目构建成一个可调试的 APK,安装该 APK,然后在你的设备上运行该应用。


如果 ARCore 应用缺失或过时,系统可能会提示你进行安装或更新。选择 CONTINUE,从应用商店(国内设备是OEM应用商城,国外设备是Google Play)安装它。


hellosceneform 应用允许你在平坦表面上放置和操纵 Android 小雕像。


正在使用其他开发环境?不用怕,Google 早就为你准备了所有开发环境的入门教程,请移步

https://developers.google.cn/ar/develop/?hl=zh-cn

当然,入门之后还要实战演练,如学习如何在应用中启用ARCore、使用增强图像、利用云锚点等功能。


更多信息请参考 Google 开发者网站:

https://developers.google.cn/ar/?hl=zh-cn


快来开发你的第一款 AR 应用,如果开发过程中有什么问题或经验,欢迎留言给我们。



推荐阅读:





    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存