ARCore vs ARKit-热核战争的重启?

android studio 相关说明 | 2018-08-28 01:33

早在乔帮主时代,因为Android对iOS的模仿,怒不可遏的乔布斯曾经发誓会“用尽最后一口气”和苹果现金储备中的“每一分钱”,来“纠正这个错误。”“我要摧毁Android,因为这是偷来的产品,我要发动一场热核战争。。。”

帮主逝世后,谦谦君子的Cook选择了和解。如今,Android已经在市场规模上盖过了iOS,但这场热核战争似乎又要因为一个新的技术而重启。

在WWDC 2017的Keynote上,苹果新推出的ARKit和CoreML着实让所有人为之震惊。CoreML还好,暂时没有表现出超越其它竞争对手的实力。但是ARKit就不一样了,对比传统的AR SDK,包括Vuforia和Wikitude,虽然称不上秒杀,但碾压是毫无疑问的了。而坐观Google自家的Tango,包括Intel的Realsense方案,都需要定制化硬件的配合,显然会走入一个死胡同,无法在很短的时间内步入万户千家。特别是考虑到Google的基因里根本就缺少硬件产品设计的元素,这一点就更为明显了。

眼看着苹果的新品发布会要来了,Google显然有点坐不住了。因为如果仅仅是iPhone外观设计的变化,或者加上一些华而不实的硬件功能,对Google来说无关痛痒。但是ARKit和传闻中的手机AR模块非同小可,一个新的平台正在冉冉升起。

于是Google又发大招了,今天刚刚推出的ARCore基本上可以看做就是苹果ARKit的对标SDK。

按照Google 官方的说法,ARCore使用三大关键技术来实现Android手机上的增强现实:

1.Motion tracking(运动追踪)

可以让手机了解并追踪其在现实世界中的位置

而ARKit也可以使用摄像头和运动传感器来检测设备位置的变化。

2.Environmental understanding(环境理解)

可以让手机检测到类似地板或咖啡桌的平面大小和位置。

这个功能和ARKit中ARWorldTrackingConfiguration所提供的Plane Detection功能如出一辙。

3.Light estimation(光线评估)

可以让手机评估真实世界环境中的光照条件。

这个功能和ARKit中ARWorldTrackingConfiguration所提供的Light Estimation功能如出一辙。

这样一看,基本上ARCore可以说完全复制了ARKit的三大核心功能,难怪最近Wikitude来了个超级大降价~

当然,和处于beta版的ARKit一样,ARCore目前处于early preview阶段,也就是试用阶段。

ARCore目前所支持的设备如下:

1.Google Pixel和Pixel XL

2.Samsung Galaxy S8 (SM-G950U, SM-G950N, SM-G950FD,

SM-G950FD, SM-G950W, SM-G950U1)

后续ARCore将支持更多运行Android N系统的设备。

那么ARCore的工作原理是怎样的呢?

和ARKit类似,ARCore主要做了两件事:追踪移动设备的位置,并构建其对真实世界的理解。后者在行业里面有个类似的名词叫SLAM(Simultaneous Localization And Mapping,即时定位与地图构建),在机器人领域得到广泛的应用。虽然ARCore和ARKit的实时场景构建功能相比真正意义上的SLAM还有所差距,但显然已经成了今后的大趋势。

ARCore使用手机的摄像头来识别标识点,也就是特征点,并追踪这些特征点的位置变化。通过读取手机内部传感器的信息和特征点的变化,ARCore可以判断出手机在空间中的位置和朝向。

除了识别关键特征点,ARCore还可以检测平面,比如桌子或地板。此外,ARCore还可以评估区域中的光照条件。通过这些信息,ARCore可以对真实世界构建起自己的理解(或许Android机器人的第一步就在这里?)

使用以上信息,ARCore可以让我们在真实世界中放置虚拟的的物体,或是无缝集成其它信息。关于ARCore的更多工作原理信息,可以查看fundamental concepts。

ARCore的开发环境支持

目前ARCore提供了四种开发环境的选择:

1.Getting started with Android Studio

2.Getting started with Unity

3.Getting started with Unreal

4.Getting started with Web

关于以上四个环境下的开发,可以分别参考相关的文档。

(注:2017年8月31日修改,此前文中提到的ARWorldTrackingSessionConfiguration在最新的iOS 11 beta8中已被废弃,因此在文中更改为ARWorldTrackingConfiguration。)

——原文首发:笨猫快乐学编程(知乎)   作者:王寒

推荐阅读

《Unity AR/VR开发》

识别二维码,获取更多图书详情