最速了解 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 官网,那里有您想知道的一切。

我们期待着大家的作品!

推荐阅读:

Android O 让安装应用更安全

Android Oreo 后台运行限制

【中文视频首发】今年I/O上我们针对VR/AR讲了很多

如何利用AR技术进行创新,为用户提供沉浸式体验?

全球数亿次总下载量,立足成都的Libii Game如何畅游海外市场?

四分钟内明白 ARCore + 上手相关推荐

  1. 利用SAP 0day,四分钟内黑掉华尔街

    本文讲的是利用SAP 0day,四分钟内黑掉华尔街,2017年5月20日,由唯品会信息安全部主办,唯品会安全应急响应中心承办的"因唯安全,所以信赖--深度揭秘唯品会信息安全建设实践 2017 ...

  2. NeurIPS 22|四分钟内就能训练目标检测器!( AGVM)

    文章目录 引言 方法介绍 实验过程 结果分析 引言 来自商汤的基模型团队和香港大学等机构的研究人员提出了一种大批量训练算法 AGVM,该研究已被NeurIPS 2022接收. 本文提出了一种大批量训练 ...

  3. SSRS从入门到放弃?? 零基础:教你5分钟内轻松制作一张报表(Intouch、IFix、WinCC、组态王等均适用)

    大家好,我是June,是新成员小学妹一枚,热衷于技术分享,希望大家多多支持. 前几天,工作很久的学姐躲在楼道偷偷抹眼泪,在为她点了一杯不加奶茶不加珍珠只有抱抱的珍珠抱抱奶茶后,她对我说,领导要求她三天 ...

  4. 2015年美军将具备60分钟内打击全球目标能力(图)

    2015年美军将具备60分钟内打击全球目标能力(图) 2007-08-15 08:22:36 来源: 中国国防报 核心提示:据美<每日防务>报道,在美国会日前通过4600亿美元的2008财 ...

  5. 如何在 20 分钟内给你的 K8s PaaS 上线一个新功能?

    作者 | 孙健波(天元) 来源|阿里巴巴云原生公众号 上个月,KubeVela 正式发布了, 作为一款简单易用且高度可扩展的应用管理平台与核心引擎,可以说是广大平台工程师用来构建自己的云原生 PaaS ...

  6. erwin模型怎么保存_一行命令启动,十分钟内完成部署,Paddle Serving开放模型即服务功能...

    机器之心发布 机器之心编辑部 百度飞桨的 Paddle Serving 能够实现服务器端快速部署,最近,随着飞桨更新到 1.7 版本,Paddle Serving 也有了新变化.更新后的 Paddle ...

  7. mongodb 输出数组字段_三分钟 mongodb 开发快速上手

    三分钟 mongodb 开发快速上手 小熊昨天晚上做了一个非常真实的噩梦,有读者朋友催我"怎么又没有发文!让我们等的好辛苦",今天一睁开眼眼看后台留言,特么,居然是真的! 我bil ...

  8. 如何在一分钟内搞定面试官

    转载自   如何在一分钟内搞定面试官 很多人的求职面试的过程中都会遇到这个问题:  "请做个自我介绍." 有的人,可以口若悬河.妙语连珠讲3分钟,有的人,可能磕磕巴巴,讲了30秒, ...

  9. twilio_15分钟内使用Twilio和Stormpath在Spring Boot中进行身份管理

    twilio 建筑物身份管理,包括身份验证和授权? 尝试Stormpath! 我们的REST API和强大的Java SDK支持可以消除您的安全风险,并且可以在几分钟内实现. 注册 ,再也不会建立au ...

最新文章

  1. linux中rpm命令管理
  2. 跟我一起学Redis之五种基本类型及其应用场景举例(干了6个小时)
  3. 双目三维重建_【光电视界】简单介绍双目视觉三维重构
  4. srsLTE源码学习:协议数据单元PDU:pdu.h
  5. struts中获取多选按钮html:checkbox的值
  6. Using BLAS and LAPACK from C/C++
  7. Downie 4 for Mac(视频下载)
  8. Atitit.工作流系统的本质是dsl 图形化的dsl  4gl
  9. 怎样查看对方计算机网络密码,如何查看邻居家的wifi密码?不知道wifi密码怎么蹭网...
  10. Java 每半年就会更新一次新特性,再不掌握就要落伍了:Java17 的新特性
  11. 【Python/Pytorch - Bug】-- TypeError: type numpy.ndarray doesn‘t define _round method
  12. 香港大学韩锴课题组招收CV和深度学习方向全奖博士/博后
  13. 出生日期格式正则表达式
  14. postgres支持AES加密配置
  15. 廖雪峰Java高级架构师第一期
  16. Linux 下安装应用程序
  17. 华为hcie中QOS 流量整形 双速率的概念-ielab
  18. jeecg-boot实现分布式定时任务
  19. HR吐槽某博士程序员:简历写了12页,是不是读书读傻了
  20. Android 口袋模式

热门文章

  1. Openstack: Neutron: permitted_ethertypesarp_responder
  2. 聚合支付、单商户多商户支付、微信/支付宝/PayPal支付流程、支付政策法规
  3. python画图中的几个小技巧
  4. IP-Guard加密客户端主动选择审批流程使用说明
  5. 正点原子i2c读写24c512
  6. DFRobot温湿度传感器新品-Gravity:I2C温湿度传感器-DHT20
  7. Simscape入门指南1
  8. (2022.5.27)【Win10】Windows10微软商店升级报错0xC002001B、Win10开始菜单应用图标变暗且有走不完的进度条——解决方案
  9. 使用esp32cam和树莓派制作简易图传遥控器(基于UDP)
  10. AD拼版防止器件编号增加