多人AR体验,为什么实现起来那么困难?(1)

作者:Matt Miesnieks,CEO of 6D.ai。经其本人同意,小万转译,推广学习。

本论题分两部分,第一部分介绍多人AR体验(Multiplayer)的基本技术原理,第二部分介绍目前的技术解决方案、研究进展以及未来的技术出路。

本文是第一部分:原理篇。

我写过一些关于怎么打造一款好用的智能手机AR应用程序的文章,以及为什么ARKit和ARCore解决了一个难以置信的硬技术问题和创建AR内容的开发平台,达到主流的使用需求。当然要达到消费者级别的广泛采用,仍然需要几年时间,但今天的AR应用程序已经在一些大的利基市场(to B)有一定价值了。因此,开发人员正努力在这条学习曲线上攀登,从狗屁不通的炫技应用到很有实用价值的应用。

多人AR体验,为什么实现起来那么困难?(1)_第1张图片

关于AR,很多人都在询问的一个功能点是“多玩家协同”(Multi-player)。“多玩家”这个术语实际上是用词不当,因为我们所指的是能够与其他人或许多人实时分享你的AR体验。因此称其为“多用户”、“分享式AR”、“社交式AR”、“AR通信”都是一个很好的术语,但现在大家似乎都在用“多玩家”这个称呼,可能是因为大多数3D AR开发工具来自游戏领域,它是游戏玩家经常使用的术语。

顺便说一句,我更期待出现新的AR开发工具和工作流程形成,目前还是与传统的设计学科(架构师、产品设计师、UX设计师等)的工作流程保持一致。我认为新的工具将大大推动AR应用程序的实用性。

我还认为,除非AR能让我们以前所未有的、沉浸式的方式进行交流和分享,否则AR不会真正影响我们的所有日常生活。这种类型的通信需要实时多人协同(Muiti-Player)。就个人而言,我认为以游戏为中心的术语“多玩家”,限制了我们对这些功能的真正重要性的思考。

因此,如果Muiti-Player是人们要求的主要AR功能,为什么我们不拥有它呢?

回答这个问题,需要深入了解使多人AR成为可能的计算机视觉技术、低延迟网络技术、一致世界地图模型的维护、共享式的音频+视频技术以及其他协作互动技术。这篇文章主要分析其在计算机视觉技术方面所面临的挑战,这些挑战尚未真正解决。

当前的Multi-player AR有点像几年前的6DoF位置跟踪。以简单粗暴的方式做起来并不难,但由此产生的用户体验(UX)障碍对消费者来说太高了。要获得消费级别的Multi-player用户体验,目前还是一个棘手的技术问题。有许多技术可用于实现Multi-player,需要重点注意的是“重定位技术”(Relocalization)。我将在后面解释这个技术意味着什么。Multi-player另一个不太直观的技术是它需要云上的一些基础设施才能“正常”工作,在之前的AR Cloud的文章中有提到过。详见:AR Cloud云平台曙光初现

1. 基础设施AR Cloud

AR Cloud这个词,我们已经看到它出现在大量具有AR角度的“云化”想法中。我在提到ARCloud时的意思,是它与常规云服务不同。

多人AR体验,为什么实现起来那么困难?(1)_第2张图片

分析一下AR云服务的各个部分,我倾向于将“云”水平分割,并将它的上半部分归为“值得拥有”的东西,下半部分归为“必须要有”的东西。

值得拥有的部分通常与应用程序和内容相关,你可以轻松构建和管理应用程序和用户。

AR Cloud的下半部分是我所感兴趣的部分。就其本质而言,AR系统对于单个设备来说太大了。AR世界太大,一个手机装不下,这就像试图将所有谷歌地图和网络中其他部分都部署到你的手机或AR头盔上。关键的一点是,如果你希望你的AR应用程序能够在任何位置分享体验或运作良好(即了解其存在的3D世界),如果不能访问这些底层云服务,这个应用程序都没法使用。

AR Cloud的下半部分与操作系统API一样重要,可让你的应用与网络驱动程序、触摸屏或磁盘访问进行通信。AR系统需要部分地存在于设备上的操作系统,部分地存在于云中。网络/云数据服务对于AR应用程序至关重要,网络用来通信。回想一下,在智能手机时代之前,没有网络的旧诺基亚手机仍然可以作为计算器,你还可以玩贪吃蛇,但它的实用性非常有限。网络和AR Cloud对AR应用程序同样重要。我们可以把今天的ARKit/ARCore应用程序类比为当年的离线“诺基亚”手机上的贪吃蛇游戏,把有AR Cloud加持的类比为以前的支持网络连接的智能手机。

多人AR体验,为什么实现起来那么困难?(1)_第3张图片

今天没有ARCloud连接的AR应用程序就像当年只能玩Snake的手机一样

2. Multiplayer AR如何实现?

要让多人AR体验正常工作,我们需要设置一些东西:

(1)首先,两个设备需要知道它们相对于彼此的位置。

从技术上讲,这意味着他们需要共享一个共同的坐标系,并在每个视频帧中都了解彼此的坐标。坐标系可以是世界系统坐标系(例如纬度/经度),或者是同意其他设备都使用来自于第一个设备的坐标系。

试想一下,每个设备启动时通常只会说“我现在所在的任何位置都是我的(0,0,0)坐标”,然后它开始跟踪基于那个地方的移动。我的(0,0,0)坐标在物理上与你的(0,0,0)坐标不同。为了将我的坐标系转换为你的坐标,我需要将自己重新定位到你的SLAM地图中并在其坐标中获取正确的姿势,然后相应地调整我的地图。SLAM地图是所有存储的数据,可以让我跟踪我的位置。

(2)然后,我们需要确保每一帧、我们每个人都知道对方在哪里。每个设备都有自己的跟踪器,每一帧都会不断更新姿态。因此,对于多人体验,我们需要将该姿势广播给系统中的所有其他用户。这需要某种类型的网络连接,点对点(Peer-2-peer)或通过云服务。通常还会有姿态预测和平滑过渡的某些功能,以解决任何轻微的网络故障。

(3)在那之后,我们期望任何一台3D设备所拥有的3D环境感知与理解,都可以与同一网络中其他设备共享。这意味着需要将采集的一些3D网格和语义信息与姿态数据一起流式传输。

例如,如果我的设备捕获了一个包含物理和遮挡数据的房间3D模型,当你加入我的应用中时,你能够利用已捕获的这些数据;并且在应用体验进行时,可以在各个设备之间更新这些数据。

(4)最后,还有一些所有在线实时多用户应用程序都需要的东西。这包括:管理用户权限、实时状态,并管理所有各种共享的数据资产。这些基础技术性功能对于AR和非AR应用程序完全相同。

主要区别在于,到目前为止它们实际上多数只是为游戏而开发,而AR则需要把它们用于各种类型的应用程序。幸运的是,所有这些功能都已在移动MMO游戏中进行了成熟的应用,并且将它们用于常规非游戏应用程序并不是很难。

多人AR体验,为什么实现起来那么困难?(1)_第4张图片

这个建筑领域的多人AR应用都需要MMO多人游戏的一些技术才能实现

3. Multiplayer AR的难点?

想象一下,你在一个没有窗户的房间里,给你一张城市人行道的相机快照。它显示了一些建筑物和商店名称,以及街道、汽车、行人等。你以前从未来过这里,这对你来说是完全陌生的,就连上面的文字也是外国的。你的任务是确定这张照片*精确*的拍摄位置,准确度约为1厘米。你已经从GPS获得了粗略的经度/经度,并且只能粗略地知道你所面对的方向,而且你知道GPS可能有20-40m的误差。所有你可以继续参照的是最近在同一近似区域内由其他人拍摄的一堆快照,每个都标有确切的位置。你要在这个地方完成重定位,想象有多难。

而这种情况对于AR体验却很常见。它们是你的AR系统每次启动并首次打开相机时必须处理的问题,或者是当相机被临时覆盖住而“丢失跟踪”时,或者是当相机指向无法跟踪的东西(白墙或蓝天等)时。如果你想加入朋友的AR体验,这也是需要解决的问题。你采集的照片是设备相机的实时图像,还有一堆照片是你已加载到内存中的SLAM地图(可能是从朋友设备或过去构建的设备中复制过来的)。

多人AR体验,为什么实现起来那么困难?(1)_第5张图片

为了说明这个问题,我们举两个极端的例子。

第一种情况,这一堆供参照的照片看起来几乎与你自己采集的照片完全相同。你可以轻松估计你的照片位于这一堆参照照片位置的左后方,因此你现在可以准确估计拍摄照片的位置。这相当于当用户2开始体验时,先要求“用户2”站在“用户1”的旁边。然后用户2的系统很容易找出它相对于用户1的位置,并且系统可以对齐他们的坐标(位置),这样应用程序可以愉快地运行。

另一个例子,事实证明,你参照的所有照片都面向大致南方,而你的照片则朝向北方。你的照片和照片堆里的东西几乎没有任何共同之处。这时AR体验就相当于你尝试玩虚拟棋盘游戏,玩家1位于桌子的一侧,而玩家2坐在对面,并试图加入游戏。除了桌子本身的某些部分,其他地方都反着的,系统同步它们的地图(重新定位)是非常困难的。

这些例子之间的区别说明了为什么会有人声称他们的技术或应用可以支持“多人协同的”AR,这可能意味着用户需要做出一些重大的用户体验方面的妥协。根据我自2012年以来构建多人AR系统的经验,第一个例子(要求人们并排开始体验)的用户体验的挑战对于用户来说太难以克服。他们需要大量的手持操作和口头的解释。获得消费者级别的多用户AR体验意味着需要解决第二种情况(以及更多的情况)遇到的问题。

除了上面的第二种情况,供参照的照片集可能来自不同的距离,在不同的光照条件下(早晨与下午的光照阴影会反转)或使用不同的相机计算模型。你甚至可能没有可用的GPS(例如在室内),所以你甚至都无法通过粗略估计出自己的位置来开始后续的重定位工作。

所有让用户最终的“AR体验乐趣”反转的,是用户无聊的等待。如果重定位过程需要1-2秒以上,用户通常会在这期间继续移动设备,所以你必须再一次重新开始定位!

准确而强大的重新定位技术仍然是AR(以及机器人和自动驾驶汽车等)的突出难题之一。

4. 重定位是如何实现的?

重定位(Relocalization)到底是如何实现的?今天如何解决这些问题?接下来还会有什么新的方法不断成熟?

重定位的技术核心,是一种非常特殊的搜索问题。

你搜索覆盖物理区域的SLAM地图,以查找设备此时在该地图坐标中的位置。SLAM地图通常包含两种类型的数据:该空间中所有可跟踪3D点的稀疏点云、一大堆关键帧。关键帧只是捕获的一帧帧视频,并在系统运行时随时保存为照片。系统根据自上一个关键帧结束的位置、设备移动的距离以及系统设计人员对性能进行权衡,来决定要捕获的关键帧数量。保存更多关键帧意味着在重定位时更有可能找到匹配项,但会占用更多存储空间,并且意味着关键帧集需要更长时间才能完成搜索。

所以搜索过程实际上有两个部分。第一部分如上面的地图快照为例,你正在将当前实时摄像机图像与SLAM地图中的关键帧集进行比较。第二部分是,只要你打开相机,你的设备会根据拍摄的内容,立即构建一小组自己的3D点,并搜索SLAM稀疏点云以进行匹配。这就像拥有一个3D拼图块,其中每一块两面都是平坦的灰色,而你要试图在一个巨大的3D拼图中找到匹配的位置。

多人AR体验,为什么实现起来那么困难?(1)_第6张图片

在用户感到厌倦之前,可用的搜索时间有限,再加上当今移动设备的计算能力也很有限,重新定位的大部分计算工作都是在做必不可少的暴力强制搜索,所以需要尽量缩小这个“搜索窗口”的大小。更好的GPS、跟踪器和IMU传感器在这方面都非常有帮助。

下一篇更精彩,论述目前多人AR体验的技术应用现状、研究现状以及未来的发展方向与具体路径。

往期回顾:

ARCore在哪些方面比ARKit更优秀?

ARCore发展到什么程度了?

AR Cloud云平台曙光初现

为什么AR将是建筑业的解决方案?

参考资料:https://medium.com/6d-ai/multiplayer-ar-why-its-quite-hard-43efdb378418

欢迎转发,建议收藏学习!

扫码关注,万间持续放送!

阅读原文,深入了解应用!

多人AR体验,为什么实现起来那么困难?(1)_第7张图片
多人AR体验,为什么实现起来那么困难?(1)_第8张图片

发布于 2019-04-14

你可能感兴趣的:(多人AR体验,为什么实现起来那么困难?(1))