早在乔帮主时代,因为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。
![](https://i-blog.csdnimg.cn/blog_migrate/e187c0f2b24076c5398920d0c4fd835d.png)
按照Google 官方的说法(https://developers.google.com/ar/discover/),ARCore使用三大关键技术来实现Android手机上的增强现实:
1.Motion tracking(运动追踪)
可以让手机了解并追踪其在现实世界中的位置
而ARKit也可以使用摄像头和运动传感器来检测设备位置的变化。
![](https://i-blog.csdnimg.cn/blog_migrate/2f5ac2597902831aaf55929c7fdb204c.png)
2.Environmental understanding(环境理解)
可以让手机检测到类似地板或咖啡桌的平面大小和位置。
这个功能和ARKit中ARWorldTrackingConfiguration所提供的Plane Detection功能如出一辙。
![](https://i-blog.csdnimg.cn/blog_migrate/c6ba99c42c29ef06dc68adcd1e12e6cc.png)
3.Light estimation(光线评估)
可以让手机评估真实世界环境中的光照条件。
![](https://i-blog.csdnimg.cn/blog_migrate/0ccedb318735e047338cff7b49f6bda3.png)
这个功能和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开发》
从新手到专家
ISBN:978-7-111-58463-6
作 者:王寒 曾坤 张义红 著
定 价:99.00元
出版时间:2018/01
内容简介:
资深专家与社区鼎力推荐,知名专家撰写,从入门到进阶,贯穿热点实战与设备;细化到编程语言、脚本与设计,从Unity应用策划到发布,真正贴近实际AR/VR开发。
点击“阅读原文”查看书籍详情