在今年的Google I/O大会上,Daydream产品经理Nathan Martz 公布了最新的AR软件开发套件ARCore新版本ARCore 1.2,该版本带来了三大重要功能——Cloud Anchors、Augmented Images、SDK Sceneform。
Cloud Anchors功能,允许多用户通过网络连接共享的增强现实(AR)空间,实现多用户的AR体验。
Augmented Images类似于以前的AR扫描和QR码,但之前只能平面识别,此次新增了垂直平面识别,能更准确识别不规则物体表面。例如现在可以识别产品垂直包装面,以AR的方式呈现出包装内的产品。
全新的SDK Sceneform是一个旨在帮助Java开发者快速创建AR场景的新版SDK,无需处理整个3D开发堆栈。
ARCore 1.2 最大的更新是Cloud Anchors功能,除了多用户共享AR体验外,还有一个重要的点是,支持跨设备共享AR体验, Android和iOS用户都能通过Cloud Anchors获得多用户AR体验。
本文将从Cloud Anchors 多用户AR体验的实现原理、功能缺陷以及应用场景方面进行深入的探讨。VR陀螺请到了网易AR游戏《悠梦》的开发者应新港、Directive games的联合创始人张竹云、视+AR高级算法工程师王强对Cloud Anchors进行深度解读。
Cloud Anchors如何实现多用户共享同一个AR场景?
“这个功能其实是一个Cloud Anchors概念,anchor本身对于ARCore是一个非常重要的概念,” 视+AR王强表示,“ARCore中通过AR往现实中放置一个交互虚拟物体,需要通过Anchor指定其空间位置,只不过这个anchor以前是不能够多人共享的。”
什么是Anchors?虚拟物体在现实世界中的固定位置就是Anchors,有了这个锚点,虚拟物体就不会发生偏移,可以很好的贴合在现实环境中。要形成一个Anchors,首先需要一个SLAM系统提供相机的位置,通过相机扫描现实位置放置虚拟物体,虚拟物体的位置就会形成一个anchors,它包括了一个物理位置和一堆视觉特征。
王强补充道:“正因为有Anchors这个概念的存在,所以现在所谓的云Anchors 就很好理解了,用户A首先将本地anchor和anchor周围局部的视觉信息(比如特征点、线等),上传到云端,云端通过处理并生成三维点云信息,生成cloud anchors,同时返回其对应的ID,该ID可以共享给其他用户。其他用户(例如用户B,C等)通过该ID访问已有的cloud anchors,ARCore将本地的视觉信息上传到云端服务器,云端服务器尝试将接收的视觉信息与云端cloud anchor对应的的三维点云进行对齐,从而将多个用户的位置和姿态统一到同一坐标系下。”
Directive games张竹云对Cloud Anchors的原理分析和王强大致相同,“谷歌在ARCore 1.2的更新中加入了所谓多人模式的概念,这个机能是通过“云锚定”(Cloud anchor)来实现的。简单来说,ARcore将捕捉到用于进行运动追踪的特征点,上传并储存到云锚定的服务介质上,对比同一场景下不同用户各自的特征点,系统就可以把内容物体在不同的设备上渲染到空间中相同的位置。”
网易AR游戏应新港则认为:“它应该是通过特征点的共享(还没接入还不太确定),然后再逐渐谈到应用场景,就是它可以实现将虚拟场景的方位与朝向在多台机子上统一,这样很多多人游戏都可以做了。”
Cloud Anchors如何兼容iOS,为什么要兼容iOS?
张竹云分析其原理和安卓设备之间的AR数据交换是相同的,谷歌提供给iOS一套相应的Cloud anchor API,允许iOS 应用将对应的特征点数据上传到云端以分享至其他的设备。
王强的分析也有一定的共同点,他认为谷歌通过针对ARKit做对应的上层封装,对于开发者来说可以避免跨平台的开发带来的问题。由于ARCore在推出之时,功能和接口设计就与ARKit非常类似,因此 ARCore可以相对容易的提供一套封装和接口,从而同时兼容两个系统。
Cloud Anchor 能实现多用户AR交互是让人兴奋的,它还能够兼容iOS是令人惊讶的,但不算意外。
王强补充说道,“虽然此次I/O大会谷歌强调ARCore已经支持1亿台以上的安卓设备,但考虑到市面上安卓设备数量,实际上它的普及速度是偏慢的。目前支持ARCore的机型基本只有少数几个品牌的旗舰级的手机,因此对于AR的用户普及来说,安卓比苹果要低很多的。当谷歌表示Cloud Anchors兼容ARKit的时候大家表示惊讶,但考虑到苹果的AR用户的庞大数量,对于多人AR体验来说,通过上层兼容ARKit也是非常合理的。”