本文来自

《新潮电子》

2018年06期

《新潮电子》领导数码时尚新生活,坚持以人为本,把消费类电子产品的广泛应用与现代生活紧密结合,以通信、娱乐、移动、影像为四大基本报道方向,向读者提供最快、最新的数码产品资讯和最适用的数字消费指南,引导最精彩的数字时尚生活。

 

邮发代号 78-55邮发代号 78-55

邮发代号 78-55邮发代号 78-55

ISSN 1007-077X(国际统一连续出版物号)

购买纸刊

06期

05期

04期

03期

02期

01期

写了 84 篇文章,被 2 人关注,获得了 0 个喜欢

让手机变得更有趣

Google ARCore揭秘

文/ 董延斌
前言 2018年的谷歌I/O大会如期举行,AI和Android P成为了会上的主角。同时推出了ARCore 1.2的升级版,旨在帮助开发者创作出更具交互性的AR体验。然而和之前的I/O大会相比,AR这次成为了配角。谷歌似乎也一直在寻找AR的风口位置。本次ARCore 1.2包含了一个重要更新,有望解决这个问题,重新召集用户。得用户者得天下,那么ARCore能给用户带来什么?这也是我们想知道的。

心有余力不足的AR
目前比较大众化的AR的玩法并不多,AR卡算是一个。突破二次元壁,让动漫人物出现在现实生活中。淘宝上随便一搜就有很多选择,而且价格实惠,颇能满足御宅族的幻想。

 

除此之外就是各类APP,良莠不齐,也没有特别出彩的。受技术限制,现实生活中并没有更高段位的AR应用,所以我们将想象力延伸到了影视作品中,于是有了无所不能的钢铁侠——斯塔克大叔,他能通过头盔获取所有想知道的信息。当然这还不算完,以前我们曾经说过,《头号玩家》是VR的终极形态,那么《刀剑神域:序列之争》大概就是AR的最终形态了。

在片中,“Augma”是一款直接与玩家脑神经相连的AR设备,而“序列之争”是Augma专用的AR线上多人角色扮演游戏。顾名思义,这也是个打排位的游戏。其亮点在于,在启动这个戏之后,虽然玩家身处现实世界,但通过AR设备,就进入到了与现实重叠但又完全不同的另一个世界。(严格来讲这属于MR,混合现实,但其基础是建立在AR之上的)

 

在影视作品中,AR提供了非常美好的生活状态。但是饭要一口一口吃。现在的技术只能达到在现实环境中贴个三维模型的水平。并且这个模型识别环境位置的能力有限,并不能很好地区分地板和墙壁,加上人手带动设备的抖动,模型就会像患了癫痫一样。


当我们对比影视作品和现实的APP,就不难得出结论:真正优秀的AR,应该是能够识别现实世界的物体和对象,识别各种平面、斜面、立面,并以此调整姿态,同时还要建立与环境光照的互动,实现以假乱真。

 

进击的AR
虽然已经有了HoloLens,但现阶段,人手一部的智能手机无疑是更适合AR练级的舞台。苹果在WWDC 2017上推出了AR开发工具ARKit,这让不少开发者颇为惊喜,原本以为肯定需要特殊硬件支持,没想到只要是A9以上处理器的iOS设备都能用,这么算下来能运行ARkit的设备将数以亿计。


ARKit有几个特性:一是运动定位,这是最基本的AR功能;二是环境估计,这样虚拟物体才能知道自己处在什么位置,同时还要懂得根据视线距离调整大小;三是光照反应,能根据环境光表现明暗、色彩特性;最后是对各开发平台的支持。这个特性表明了,苹果的目的就是要建立一个完整的AR开发生态圈。


一直与苹果相爱相杀的谷歌,自然不能坐视不理。去年8月,谷歌发布了用于Android平台的ARCore,与ARKit正面互怼。根据官方介绍,ARCore有这样几个特性:运动跟踪,这是最基本的AR功能,利用惯性传感器和设备相机来发现空间的特征点,以此确定设备和显示对象的位置和方向。再结合去年5月份I/O大会上谷歌推出的Visual Positioning Service(视觉定位服务),就能让AR物体不受设备位置的影响,基本上固定在同一个位置。


环境感知,也就是检测平面,以保证虚拟对象的位置相对合理,避免出现反重力的现象。


利用上述特性组合,就能产生一些有趣的互动。例如,在桌面上放几个虚拟人物,当镜头对准他们时他们会挥手致意;又或者,把灯突然关掉,虚拟对象会做出害怕的反应。实际上,在谷歌公布ARCore之后,开发者们已经玩得不亦乐乎。有人甚至为谷歌办公室的咖啡机开发了应用,通过手机看它时,会看到各种操作提示。能把虚拟的物体放在现实中,这大大激发了人们的想象力。


上述这些特性也是ARKit所拥有的,总体上都是使用手机摄像头来感知、利用传感器来跟踪手机相对于现实世界的运动,同时调整虚拟对象与现实世界的匹配程度。ARCore和ARKit都支持利用Java/OpenGL、Unity和Unreal开发虚拟角色,都不需要什么特殊硬件就能在手机系统里运行。


但ARKit有个先天优势那就是苹果封闭的生态圈,使得AR程序可以运行在任何具有A9处理器、iOS 11系统以上的设备。但是对Android来说,OEM派系林立带来手机兼容问题以及摄像头的不同,很大程度上会限制ARCore在Android的推广。


不过谷歌也有别的打算。首先是将AR引入Web,并发布了两个实验性的以AR为重点的Chromium浏览器:一个是基于Android,可使用ARCore的浏览器;另一个是基于iOS,可使用ARKit的浏览器。这样一来,用户可以在浏览器上实现某些AR功能,而不需要安装特定的APP。


此外,谷歌还在探索增强现实与视觉搜索的结合。将ARCore与Google Lens之类的视觉搜索工具结合,通过搜索来识别物体,通过AR提供动态的操作提示。前面提到的谷歌办公室的咖啡机,正是这样的尝试。没错,这也是科幻影视中实时环境分析的雏形,就像通过钢铁侠的头盔,或者终结者T800看到的那样。这一点无疑让人非常期待。

 

今年1月,苹果对ARKit进行了升级,推出了1.5版本。前不久的I/O大会上,谷歌则推出了ARCore的1.2版升级版本。新版本增添了两大新功能:Augmented Images、Cloud Anchors,并搭载了新的开发工具Sceneform。


Augmented Images新增了垂直平面检测功能(Vertical Plane Detection),这意味着 AR 虚拟对象能出现在镜头中的更多地方,包括墙上这将为用户开启全新体验。在官方演示中,通过识别产品的垂直包装面,即呈现出包装内的产品。其实原理并不难,现阶段的AR扫描和QR码也能实现,天猫超市就在包装盒上玩过这种小游戏。区别在于,Augmented Images可视为一个通用的图像识别系统,开发人员可以为其应用程序指定上千种2D特征图像,让ARCore能够检测到更多的物体。这意味着,今后用手机一扫电影海报或者广告宣传单,就能了解相关内容,而不需要刻意去找QR码之类的标记。

 

Cloud Anchors简单说来就是支持多人AR体验,这是ARCore1.2版本的重大更新。目前,每个人的AR体验都是独有的,视界无法共享。即使两个人看的是同一个AR场景,得到的体验也不尽相同。就算相同,也无法做到多人协同和交互。在新版本中,ARCore识别平面特征并创建Anchors锚点,多个用户产生的锚点及其周围的视觉特征信息会被上传到Google云,云端处理生成Cloud Anchors云锚点信息,并对比这些信息得到所有参与者的位置和姿态。然后就可以根据不同设备的视角,对同一个虚拟对象进行相应角度的渲染,呈现到用户面前,让所有参与者共享AR的“视界”。


数据上传是否会导致数据泄露?谷歌也考虑到了这个问题。官方开发文档中提到,Cloud Anchors上传的视觉信息数据在7天后销毁,用来与云端匹配计算相对位置的特征点信息也不会在云端存储。


Sceneform是一个旨在减轻开发工作量的新版SDK。因为AR需要显示3D对象,这就要求AR开发者得会使用Android NDK、OpenGL以及Unity这样的游戏引擎。对于2D Java程序员们而言无疑让人头痛,再说就算学会了也不见得薪水能够比例增长。Sceneform让开发人员无需学习API就能轻松创建AR对象,并且还针对移动设备进行了优化。

 

老将归隐
有的读者大人应该还记得,谷歌早在2014年就推出了AR平台:Project Tango,同时发布了对应的Android手机,不仅能够实现基础的AR功能,还包含了人工智能和机器学习。


实际上Tango非常强大,除了AR之外还有SLAM算法,能让设备彻底明白自己到处在什么位置。而ARCore只是通过软件算法来检测表面,它并不知道自己看到的是什么,只是根据相机的反馈进行环境估计。但Tango这种强大是建立在特殊硬件上的,它需要在专门的定制机型上才能运行,这种机型仅有联想PHAB 2 PRO和华硕Zenfone AR两款。这两款产品配备了红外感应深度摄像头,直接测量环境距离,实现更逼真的虚拟效果。


很明显,在AR还没找准市场位置的前提下,Tango还要增加各种昂贵硬件,谈钱是很伤感情的,没有OEM厂愿意去冒险。缺乏设备的支持也阻碍了平台的发展。在Google Play里面,只有极少数Tango的应用下载量突破四位数。这么一说就能看出,不需要特殊硬件的ARKit有多高明了,所以谷歌也必须走这条路,将Tango的关键部分分离出来,以适应普通手机,这就是ARCore,它本质上是简化版的Tango。Tango将退居幕后,但仍将作为ARCore的技术支持力量。有人戏称,ARCore SDK就是把Tango SDK改个名字,删掉深度相机那块代码,改一种编译标志。

 

说句题外话,Tango这个名字也很有问题。虽然官方描述为“一款知道自己定位的手机”,但还是云山雾罩。提到ARCore起码大家都会明白是和AR相关的,一提到Tango……难道是跳舞相关的?

 

努力与较量
苹果ARKit的演示效果超出了开发者预期。前面提到,由于苹果是软硬件一手抓,这种封闭的生态圈非常有利于AR推广。苹果需要做的,就是解决一些标定问题,包括相机的光学几何标定、光度标定、IMU惯性传感器误差消除等,此外还有传感器的时钟同步。标定需要统计、分析,并做更多的迭代才能减少误差,增加稳定性。系统标定得越好,位置追踪就会越准确。


谷歌这边OEM众多,需要研发能力出众者才能堪此大任,数来数去只有谷歌和三星是站在食物链顶端的了。所以起初谷歌只选择了Pixel和三星S8作为支持设备,因为它们已经经过了传感器标定的优化,以适配DayDream 的 Inside-Out 追踪。谷歌为了融合Tango和Daydream SDK做了不少工作,这意味着ARCore能够充分利用Daydream传感器融合的成果。


据业内人士透露,为了节省成本,IMU传感器在工厂里只是在单一温度下进行标定。这样的后果就是,温度偏离越多,误差就越大,尤其手机发热的时候。这在大部分应用环境下没什么问题,但在AR中就会导致计算结果漂移。谷歌为了保证追踪效果,对 IMU 精度提了很高的要求,所以并不是所有 Android 7.0以上系统的手机都能良好支持。苹果由于硬件规格统一,其设备的IMU及相关算法比 Android 阵营要好很多。苹果可以将VIO(视觉惯性里程计)算法与传感器紧密耦合,从硬件层面来校准VIO系统,以减少空间定位时的误差。ARCore则只能从软件层面调校,对设备就有较高的要求。谷歌也正在试图与小米、华为等主流手机厂商展开合作。


当然ARCore也有一个显著优势领域,那就是地图构建,即SLAM中的“M”。它将真实世界的环境信息存到内存中,供追踪器定位,这样设备就能知道自己在环境中所处的位置。最简单形式的 SLAM是一些离散的 3D 点云数据,它们是从相机拍摄的照片中提取的光学特征点的位置。当运行ARCore/ARKit相关APP时,追踪器会通过测量和计算,提取3D点云,构建出新的地图,这样系统里就有了相机视角下的一个小范围3D图。随着用户四处走动,相机不断捕捉环境特征点,更多的 3D 点云加入到地图中,地图就会越变越大。这就带来一个问题,如果地图大到超出系统控制范围,追踪就会变得很糟糕,所以如何控制地图也是SLAM的重要课题。


Tango从诞生伊始就专注于SLAM算法和设备位置的追踪。也就是说,谷歌及其开发者,在Tango和Daydream上都积累了颇为丰富的开发经验,转换到ARCore环境自然轻车熟路,也使得ARCore更加成熟。虽然苹果财大气粗收购了Metaio 和 Flyby 两家公司,但ARCore比ARKit至少多了两年的实践测试。这就是为什么苹果发布ARKit之后,谷歌能够快速反应,展开点对点的精准互怼。

 

“锚点”是AR开发中的一个重要概念。当虚拟对象被定为到一个物理位置之后,开发者扔下一个锚点,目的是告诉系统“记住这个点周围的地图,不要把它丢了”。这样一来,该位置信息和内容就不会因为用户走动而丢失。对于用户而言,就是下楼再上楼,AR物体依然在原地,感觉地图覆盖了更大的空间面积。当然也有可能因为积累的误差漂移导致出现偏差,这是OEM厂需要解决的问题。


所以前面提到,ARCore 1.2里的Cloud Anchors是一个非常重要的特性。如果没有锚点,随着地图构建的扩大,系统搜索、匹配环境的频率会更高,更耗时,自然也更耗电。由于手机当前的位置永远不会与过去某个时刻的位置精确吻合,这也加大了定位难度。此外,如果锚点不能共享,多人AR也根本无法实现。B用户必须站在离A用户非常近的地方,以几乎同样的姿势拿着手机,才能看到同样的视界。但B用户明显只想坐在对面沙发上,看到同样位置的AR内容。


也许有人会有疑问,ARCore和ARKit分属不同平台,是否说明在多人AR中,果粉和安卓粉就不能在一起了?其实谷歌已经解决了这个问题,毕竟科技领头羊的地位不是白来的。Cloud Achors能够兼容iOS,在iOS设备中,系统正常使用ARKit功能,并将运动及环境数据同步到云端,当开发人员为两种平台构建相同的应用程序后,用户就能在Android和iOS之间同步AR数据以共享体验。由于官方并未公布具体技术细节,业内人士猜测谷歌应该是向ARKit提供了一套Cloud Achors API,允许iOS进行数据交换,同时做对应的上层封装,以避免跨平台开发带来的问题。


当然,我们从另一个角度猜测,虽然Android阵营机型众多,但高端型号并不多,这阻碍了基于ARCore应用的普及。所以,考虑到苹果用户的庞大数量,为了开展多人AR,ARCore通过上层兼容ARKit是非常合情合理的,只是目前并不太清楚苹果会有怎样的反应。

 

多人互动,必由之路
目前的AR并没有足够的元素来吸引用户,除了AR体验还在很假以外,缺少社交元素,无法交流分享也是一大问题,用AR相机拍张照片发朋友圈那不叫AR互动。只有当AR体验可以在人和人之间分享的时候,它才会真正成为日常生活中主流的,必不可少的工具,就像朋友圈、Instagram一样。Cloud Achors则是解决这个问题的钥匙,这个特性是那样充满创意和想象,让人不由得佩服谷歌对于AR的理解和观察。

 

看到这里,游戏玩家会充满了期待:难道实现《刀剑神域:序列之争》所描绘的场景已经指日可待?想法固然好,但一方面Cloud Achors对于共享的用户人数可能会有限制;另一方面,真人AR MMO需要构建与现实环境等比例的AR地图,这带来的数据处理量堪称天文数字,无论是云端还是终端都不敢拍胸脯保证能胜任。Cloud Achors只能构建局部的小地图,怎样构建1:1的、大范围、多人共享、持续更新的AR地图,目前并没有解决之道。

 

登录注册 后评论。
n
Copyright © 2016 vantk.com 远望资讯 版权声明. 经营许可证:渝B2-20030004-10

渝公网安备 50019002500898号