四分钟内明白 ARCore + 上手

2017 年 9 月 8 日 引力空间站


最速了解 ARCore

ARCore 是一个用来在 Android 上搭建增强现实(Augmented Reality, AR)应用的平台。我们在里面使用了三项关键技术来整合虚拟内容和现实世界:

  • 运动跟踪技术让手机能够理解并追踪自身在环境中的相对位置;

  • 环境理解技术让手机可以侦测到扁平的水平面,如地表或咖啡桌;

  • 光照强度估测技术可以估量当前环境的光照情况。


重点来了:ARCore 已经进入抢先体验阶段,您现在就可以开始尝试搭建全新 AR 应用。这同时也是一个难得的机遇,您可以利用它来为早期版本的 API 提供反馈信息。事实上我们准备这篇文章也是希望帮助您迈出旅程的第一步,帮助您在整个 Android 生态系统中开启 AR 能力。



哪些设备能用?

ARCore 被设计用来支持数量广大的 Android 设备,要求系统不低于 Android N。在 SDK 预览期间,ARCore 支持下列设备:

  • Google Pixel 和 Pixel XL

  • Samsung Galaxy S8 (SM-G950U, SM-G950N, SM-G950F, SM-G950FD, SM-G950W, SM-G950U1)


ARCore 的运作原理是什么?

简单来说的话,ARCore 其实只做两件事:

  1. 在移动设备移动时追踪它们的位置;

  2. 逐渐用自己的方式对现实世界进行理解。


ARCore 的运动跟踪技术使用手机摄像头来辨识关键点(又叫做特征点),并跟踪这些点随时间运动的轨迹。结合了这些点的移动轨迹和手机的惯性传感器之后,ARCore 就可以在手机移动时判定它的位置和走向。


能识别点,自然就能识别面。在辨识关键点的基础上,ARCore 还可以侦测平面,比如桌子或地板,并估测它周围的平均光照强度。这些能力在结合起来之后,可以让 ARCore 建立起周边世界的概念。


在 ARCore 了解了周边的现实世界后,您就可以把虚拟的物品、标注信息或其他您想要展现的内容与现实世界进行无缝整合。您可以在咖啡桌角落上放一只打盹的小猫,或是在画作上添加关于画家个人信息的注释。运动跟踪功能意味着您可以到处移动,从不同的角度观看这些物品,在您掉头离开房间后,只要您返回原处,那只小猫或那条注释仍会原封不动地呆在那里。


当然,本文的目标是 “最速了解”,所以这里就不展开细说了。有兴趣的读者可以打开下面的链接了解更详细的运作概念:

https://developers.google.cn/ar/discover/concepts


最速上手

我们相信下面 4 个平台已经能覆盖大多数开发者的选择了,大家可以现在就跳至自己的主场,按照说明开始使用我们的 SDK。


Android Studio 上手

搭建开发环境:

  • 安装版本 2.3 或更高的 Android Studio,内含版本 7.0(API 等级 24)或更高的 Android SDK Platform。

  • 需要使用上面提到的能支持 ARCore 的 Android 设备。

  • 需要为 Android Studio 提供 ARCore SDK,您可以:

    • 下载 SDK preview for Android Studio 并解压

    • - 或 -

    • 使用这条命令复制 SDK 进来:

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

  • 您需要大概了如何使用 OpenGL。如果您之前没有接触过 OpenGL,我们帮您准备了一篇教程:

    https://developer.android.cn/training/graphics/opengl/index.html


*注意,必须使用受支持的实体设备。ARCore 不支持 Android Emulator 等虚拟设备。在设备上作如下准备:

  • 启用开发者选项

  • 启用 USB debugging

  • 在设备上安装 ARCore Service:

    • 下载 ARCore Service

      (https://github.com/google-ar/arcore-android-sdk/releases/download/sdk-preview/arcore-preview.apk)

    • 使用 USB 线缆连接您的 Android 设备和开发机

    • 使用这条 adb 命令安装服务:

      adb install -r -d arcore-preview.apk


打开示例项目:

在 Android Studio 中,找到 <ARCore SDK Folder>/samples/java_arcore_hello_ar,并打开 HelloAR 示例项目。


示例项目依赖于特定版本的软件,如 Gradle 和 Android SDK 等。如果所需的依赖项未能安装,Android Studio 将请求在您的开发机上对其进行下载和安装。

请确保您的 Android 设备连接到了开发机,并在 Android Studio 中点击 “运行”。随后,选中您的设备作为部署目标,并点击 “OK”。


Android Studio 会将您的项目写入一个可 debug 的 APK,并安装该 APK,随后在您的设备上运行该应用。


△ Hello, AR!


随着设备的移动,应用会自动侦测到水平表面,并绘制出棱形网格。点击网格即可在平面上放置 Android 机器人。


之后,您可以通过 “添加为依赖项” 的方式,将 ARCore AAR Library 整合至现有的项目中。您的应用的 minSDKVersion  必须为 19 或更高。


Unity 上手

搭建开发环境:

  • 安装版本 7.0(API 等级 24)或更高的 Android SDK。

  • 安装 Unity 2017.2 Beta 9,并附加 Android Build Support 组件。

  • 您需要在 Unity 中采用 ARCore SDK,您可以:

    • 下载 SDK Preview for Unity 并解压

    • - 或 -

    • 使用这条的命令复制储存库:

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


实体设备的准备工作请参考上面 Android Studio 的上手部分。


创建新项目:

  • 在 Unity 中选择 “文件” > “新项目”。

  • 将您的项目命名为 HelloAR,保留 3D 模式的选中状态,并点击 “创建项目”。


导入 SDK:

  • 导入 arcore-unity-sdk-preview.unitypackage:在 Unity 里点击菜单 “资源” > “导入包” > “全部”,导入 Unity 包的全部内容。

  • 在 Unity 的 Project 窗口中,您可以看到 Unity SDK 文件和 HelloAR 示例应用。


配置 Build 设置:

点击 “文件” > “Build 设置” 以打开 Build Settings  窗口。

然后做如下修改:

  • 将目标平台更改为 Android 并点击 Switch Platform。

  • 点击 Player Settings 打开 Android Player Settings,随后更改以下设置:

    • Other Settings > Multithreaded Rendering: 关闭

    • Other Settings > Package Name: 改为一个独特的应用 ID,看起来像是 JAVA 包的名称,如:com.example.helloAR

    • Other Settings > Minimum API Level: Android 7.0 或更高

    • Other Settings > Target API Level: Android 7.0 或 7.1

    • XR Settings > Tango Supported: 开启

  • Scenes in Build 列出了您的项目中有哪些场景会被包含在您的构建中。按照下面的方法即可从 HelloAR 示例应用中添加场景到您的构建中:

    • 在项目窗口中通过 Assets > GoogleARCore > HelloARExample > Scenes 选中场景。

    • 点击场景并将其放进 Scenes in Build。   


编译并运行示例应用:

请确保您的 Android 设备连接到了开发机,并点击 “编译并运行”。Unity 会将您的项目写入一个 Android APK,并在您的设备上安装并运行该项目。

随着设备的移动,应用会自动侦测到水平表面,并绘制出棱形网格。点击网格即可在平面上放置 Android 机器人。


您可以使用 Android Logcat 查看日志信息,也可以使用 Android Device Monitor 对设备进行详细分析。


Unreal 上手

搭建开发环境:

  • 遵循下面三个步骤即可使用 ARCore 插件搭建 Unreal Engine:

    • 取得 Epic's GitHub 储存库的使用权限:

      (https://www.unrealengine.com/ue4-on-github)

    • 使用这条代码获得代 ARCore 插件的 Unreal 源代码:

      git clone -b 4.17-arcore-sdk-preview https://github.com/google-ar-unreal/UnrealEngine.git

    • 从源代码编译 Unreal Engine。

  • 参考 Unreal Android Quick Start:

    (https://docs.unrealengine.com/latest/INT/Platforms/Android/GettingStarted/index.html)

    搭建 Unreal 编辑器以便进行 Android 开发。请确保安装了版本 7.0(API 等级 24)或以上的 Android SDK Platform。

  • 获得 Unreal HelloAR 示例项目。您可以:

    • 直接从

      https://github.com/google-ar/arcore-unreal-sdk/releases/download/sdk-preview/arcore-unreal-sdk-preview.zip

      下载示例项目库并解压。

    • - 或 -

    • 使用下面的命令复制储存库:

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


实体设备的准备工作请参考上面 Android Studio 的上手部分。


打开示例项目 HelloAR:

设定 Android 开发设置:

  • 在菜单栏中,点击 “编辑” > “项目设置”

  • 在 Android SDK 平台下的 Project Settings 中,请确保所有路径正确地设置到了您的 Android SDK 和 Android NDK 安装位置。将 SDK API Level 设置为 “matchndk”,然后将 NDK API Level 设置为 android-24 或更高

编译并运行示例应用:

打包 HelloAR 项目。在菜单栏中选择 File > Package Project > Android > Android (ASTC)。

此时会出现一个对话框。在对话框中创建名为 Builds 的新文件夹并点击 Select。


Unreal 开始打包项目,并在状态窗口(位于右下角)中显示进程。想要详细了解打包进程,参见 Output Log 窗口。

项目打包完成后,请确保您的设备仍连接着电脑。打开 Builds 文件夹,双击文件 Install_HelloARUnreal_Development-armv7-es2.bat (Windows 用户)或 Install_HelloARUnreal_Development-armv7-es2.command (Mac 用户),在您的 Android 智能手机上安装项目。


安装完成后,在您的设备上寻找名为 HelloAR UE4 的应用,并开始运行。

 

随着设备的移动,应用会自动侦测到水平表面,并绘制出棱形网格。点击网格即可在平面上放置 Android 机器人。


Web 上手

在上手前大家需要了解,AR 仍然是最尖端的技术,今天的 Web 上并没有适用于 AR 的标准,开发者们可以使用网络工具进行实验,利用 AR 来增强网络体验,手段包括 JavaScript 代码库、three.ar.js 以及适用于 ARCore on Android 和 ARKit on iOS 的试验型浏览器等。

⚠ 请注意:WebARonARCore 和 WebARonARKit 不是全功能的网络浏览器。它们基于的 JavaScript API 或是不够标准,或是不在标准化路径上。它们的意义仅限于供网络开发者来完成自己的实验。


请遵循下面链接中的指令来在您所选择的平台上下载并安装应用:

  • WebARonARCore (Android, https://github.com/google-ar/WebARonARCore)

  • WebARonARKit (iOS, https://github.com/google-ar/WebARonARKit)


查看示例:

下面的示例要求 WebARonARCore 或 WebARonARKit,使用 three.ar.js 进行搭建,three.ar.js 是为 three.js 所准备的 helper 库:

  • SpawnAtCamera (https://google-ar.github.io/three.ar.js/examples/spawn-at-camera.html)

  • SpawnAtSurface (https://google-ar.github.io/three.ar.js/examples/spawn-at-surface.html)

  • Reticle (https://google-ar.github.io/three.ar.js/examples/reticle.html)

  • Boilerplate (https://google-ar.github.io/three.ar.js/examples/boilerplate.html)


想要为 WebARonARCore 和 WebARonARKit 搭建属于自己的 AR 体验,请遵循 three.ar.js的操作指引:

https://github.com/google-ar/three.ar.js#threearjs


呼…… 这次的内容就这些。如果大家想了解更多更详细的 ARCore 信息的话,请点击 “阅读原文” 进到 ARCore 官网,那里有您想知道的一切。



登录查看更多
0

相关内容

SDK(Software Development Kit, 即软件开发工具包 )一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
Python地理数据处理,362页pdf,Geoprocessing with Python
专知会员服务
113+阅读 · 2020年5月24日
【干货书】R语言书: 编程和统计的第一课程,
专知会员服务
111+阅读 · 2020年5月9日
【干货书】流畅Python,766页pdf,中英文版
专知会员服务
225+阅读 · 2020年3月22日
【强化学习】深度强化学习初学者指南
专知会员服务
179+阅读 · 2019年12月14日
【泡泡读者来稿】VINS 论文推导及代码解析(四)
泡泡机器人SLAM
33+阅读 · 2019年3月17日
【泡泡读者来稿】VINS 论文推导及代码解析(一)
泡泡机器人SLAM
114+阅读 · 2019年3月3日
【泡泡一分钟】CVI-SLAM –协同视觉惯性SLAM
泡泡机器人SLAM
21+阅读 · 2018年12月18日
从零开始一起学习SLAM | SLAM有什么用?
计算机视觉life
18+阅读 · 2018年9月17日
机器学习各种熵:从入门到全面掌握
AI研习社
10+阅读 · 2018年3月22日
中美日全球美女机器人大PK,哪一款是你想要的味道?
机器人大讲堂
4+阅读 · 2017年9月16日
SLAM初识
计算机视觉life
5+阅读 · 2017年6月4日
SepNE: Bringing Separability to Network Embedding
Arxiv
3+阅读 · 2019年2月26日
Arxiv
6+阅读 · 2018年11月29日
Arxiv
3+阅读 · 2018年10月5日
Arxiv
9+阅读 · 2018年1月30日
VIP会员
相关VIP内容
相关资讯
【泡泡读者来稿】VINS 论文推导及代码解析(四)
泡泡机器人SLAM
33+阅读 · 2019年3月17日
【泡泡读者来稿】VINS 论文推导及代码解析(一)
泡泡机器人SLAM
114+阅读 · 2019年3月3日
【泡泡一分钟】CVI-SLAM –协同视觉惯性SLAM
泡泡机器人SLAM
21+阅读 · 2018年12月18日
从零开始一起学习SLAM | SLAM有什么用?
计算机视觉life
18+阅读 · 2018年9月17日
机器学习各种熵:从入门到全面掌握
AI研习社
10+阅读 · 2018年3月22日
中美日全球美女机器人大PK,哪一款是你想要的味道?
机器人大讲堂
4+阅读 · 2017年9月16日
SLAM初识
计算机视觉life
5+阅读 · 2017年6月4日
Top
微信扫码咨询专知VIP会员