专栏首页向治洪谷歌增强现实技术ARCore

谷歌增强现实技术ARCore

简介

随着,今年苹果在6月的WWDC 2017上发布的ARKit,谷歌也在前不久(8月29日),发布了用于Android平台的AR SDK——ARCore。这弥补了AR在Android市场上的空缺,让无数Android用户激动不已,要知道Android拥有超过20亿活跃设备,如果说ARKit是苹果AR的起点,那么说ARCore掀起了移动AR市场的狂潮,ARCore的横空出世意味着AR进入手机大群体用户的生活成为可能。

大约3年前,Google曾发布一个Tango AR,而ARCore也可以看做是Tango的升级版本。据了解,目前Google ARCore只支持Google Pixel和Samsung Galaxy S8两种型号的设备,谷歌表示,他们正在积极与三星、华硕、LG、华为等厂商开展合作,预计今年11月份,将会有超过1亿的Android用户可以访问ARCore的应用程序。

AR今年还只是起步阶段,有很多权威机构预测2018年将是AR技术快速发展的一年。

ARCore工作原理

要理解ARCore的工作原理,首先需要理解以下的物理概念:

  1. 运动跟踪:它利用IMU传感器和设备的相机来发现空间的特征点,由此确定Android设备的位置和方向。此外,使用VPS,可以让AR物体每次看起来似乎都在同一位置。
  2. 环境感知:虚拟物体一般都是放置于平坦平面上的,用ARCore可以检测物体的水平表面,建立环境认知感,以保证虚拟的对象可以准确放置,然后让您看到放置在这些表面上的AR物体。
  3. 光线预测:ARCore根据环境的光强度,使开发人员可以与周围环境相匹配的方式点亮虚拟对象。此外,最近的一个实验发现,虚拟阴影在真实环境光照下的调整功能也是如此,这样就可以使AR物体的外观更为逼真。

ARCore与Tango对比

ARCore和Tango两者的性能都很强大,但最突出的差别是对硬件的要求,ARCore不需要额外的硬件就能在Android上运行,而Tango需要专属的定制硬件联想PHAB 2 PRO或华硕Zenfone AR上才能运行,这两款硬件产品的处理器配置低、巨大的边框设计和不良的电池寿命让用户牺牲了很多体验。在这一点上,ARCore比Tango升级不少。

ARCore与ARKit对比

ARKit是2017年6月6日,苹果发布iOS11系统所新增框架,它能够帮助我们以最简单快捷的方式实现AR技术功能。为了体验ARKit的新功能,笔者特意将相关环境做了升级。随着相关模型的完善,以及开发示例的完善,相信ARKit一定能加强app的相关体验。 ARCore与ARKit对比有如下的相同点和异同点:

相同点

  1. ARKit在iOS中的工作原理与ARCore上述的原理大致相同。两者都是使用现有手机的单个摄像头来感知并跟踪您的手机相对于现实世界的运动,并能调整虚拟物体与现实世界的匹配程度。
  2. 两者都能与Java/OpenGL,Unity和Unreal配合使用,并且都不需要其他特制硬件就可以在手机系统上运行。
  3. 两者都是先面向开发者,后面向消费者,他们希望开发人员能够轻松创建AR应用程序,理论上可以在现有的数亿手机上应用。

不同点

ARKit可以将AR应用程序运行在任何具有A9处理器的iOS 11系统以上,这意味着任何iPhone 6S或更高版本或任何iPad Pro都将能运行这些AR应用程序,但是对Android来说,由于不同厂商的手机型号会有兼容性的问题以及摄像头的不同,这在很大程度上限制ARCore在Android的推广,为此,Google还需做大量的工作。

ARCore 上手

支持设备

ARCore 被设计用来支持数量广大的 Android 设备,要求系统不低于 Android N。在当前,主要支持Google Pixel/Pixel X和Samsung Galaxy S8 (SM-G950U, SM-G950N, SM-G950F, SM-G950FD, SM-G950W, SM-G950U1)。

快速上手

Android 上手

安装版本 2.3 或更高的 Android Studio,内含版本 7.0(API 等级 24)或更高的 Android SDK Platform。并且需要使用上面提到的能支持 ARCore 的 Android 设备。开发AR你还需要具备OpenGLOpenGL官网相关的知识。

由于AR用到了很多的传感器,所以模拟器是不支持测试的。要测试开发的程序,启用开发者选项,启用 USB debugging,然后在设备上安装 ARCore Service。当然,读者可以使用arcore体验apk

打开示例项目: 在 Android Studio 中,找到 /samples/java_arcore_hello_ar,并打开 HelloAR 示例项目。示例项目依赖于特定版本的软件,如 Gradle 和 Android SDK 等。如果所需的依赖项未能安装,Android Studio 将请求在您的开发机上对其进行下载和安装。然后点击运行即可。

随着设备的移动,应用会自动侦测到水平表面,并绘制出棱形网格。点击网格即可在平面上放置 Android 机器人即可完成移动。之后,您可以通过 “添加为依赖项” 的方式,将 ARCore AAR Library 整合至现有的项目中。您的应用的 minSDKVersion 必须为 19 或更高。

Unity 上手

Unity环境下使用ARCore需要如下的环境支持:

  • 安装版本 7.0(API 等级 24)或更高的 Android SDK。
  • 安装 Unity 2017.2 Beta 9,并附加 Android Build Support 组件。
  • 下载 SDK Preview for Unity 并解压

创建项目

  1. 在 Unity 中选择 “文件” > “新项目”。将您的项目命名为HelloAR,保留 3D 模式的选中状态,并点击 “创建项目”。
  2. 导入 arcore-unity-sdk-preview.unitypackage:在 Unity 里点击菜单 “资源” > “导入包” > “全部”,导入 Unity 包的全部内容。
  3. 点击 “文件” > “Build 设置” 以打开 Build Settings 窗口,配置相关环境。
  1. 将目标平台更改为 Android 并点击 Switch Platform; 点击 Player Settings 打开 Android Player Settings,随后更改以下设置:Other Settings > Multithreaded Rendering: 关闭; Other Settings > Package Name: 改为一个独特的应用 ID,看起来像是 JAVA 包的名称,如:com.example.helloAR; XR Settings > Tango Supported: 开启; 当然,‍你还可以设置场景,在项目窗口中通过 Assets > GoogleARCore > HelloARExample > Scenes 选中场景。 然后,点击 “编译并运行”即可。

web上手

Google为了扩大AR的使用范围,占领市场,AR 引入Web,认为其是“AR未来的关键组成部分”, 并发布了两个实验性的浏览器——以AR为重点的Chromium浏览器版本:一个是在Android的基础上,可使用ARCore的浏览器;一个是基于iOS,可使用ARKit的浏览器。

今天的 Web 上并没有适用于 AR 的标准,开发者们可以使用网络工具进行实验,利用 AR 来增强网络体验,手段包括 Java 代码库、three.ar.js 以及适用于 ARCore on Android 和 ARKit on iOS 的试验型浏览器等。

⚠ 请注意:WebARonARCore 和 WebARonARKit 不是全功能的网络浏览器。它们基于的 Java 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://googlear.github.io/three.ar.js/examples/boilerplate.html)

想要为 WebARonARCore 和 WebARonARKit 搭建属于自己的 AR 体验,请遵循 three.ar.js的操作指引: https://github.com/google-ar/three.ar.js#threearjs

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 谷歌增强现实技术ARCore

    简介 随着,今年苹果在6月的WWDC 2017上发布的ARKit,谷歌也在前不久(8月29日),发布了用于Android平台的AR SDK——ARCore。这弥...

    xiangzhihong
  • android studio比较长用的几款插件

    不懂安装studio插件,看参考博文:android stuido插件安装:http://blog.csdn.net/liang5630/article/de...

    xiangzhihong
  • Android Topeka介绍

    概述 当你已经做Android开发一段时间,并苦于进入瓶颈,这个时候阅读一些优秀App的源码是最好的学习进阶方式,前几天,邀请去参加一个Android大会,我作...

    xiangzhihong
  • 谷歌增强现实技术ARCore

    简介 随着,今年苹果在6月的WWDC 2017上发布的ARKit,谷歌也在前不久(8月29日),发布了用于Android平台的AR SDK——ARCore。这弥...

    xiangzhihong
  • 什么是SAP PCo

    https://help.sap.com/viewer/p/SAP_PLANT_CONNECTIVITY

    Jerry Wang
  • 使用SAP云平台Mobile Service开发移动应用

    这是Jerry 2020年的第33篇文章,也是汪子熙公众号总共第216篇原创文章。

    Jerry Wang
  • CSS-自定义高度的元素背景图如何自适应以及after伪类在ie下的处理

    xing.org1^
  • 金庸的武侠世界和SAP的江湖

    2018年10月30日晚,成都地铁一号线,Jerry手机app上突然弹出来一条金庸去世的新闻。

    Jerry Wang
  • mySAP 供应链管理-成功故事3

    WACKER SILTRONIC: mySAP供应链管理中的有效后勤管理 Wacker SiItronic,世界著名的制造商之一,半导体工业中高纯度硅的供应商,...

    SAP最佳业务实践
  • Open Source C# (Mono Compatible) Library for Sending Push Notifications To iOS (iPhone/iPad APNS), A

    下面是一个C#库(兼容Mono),允许你推送通知到iOS应用程序和Android,Windows Phone和一些黑莓应用程序。在iOS和Android开发中给...

    张善友

扫码关注云+社区

领取腾讯云代金券