0
本文作者: airuoxuan | 2016-06-29 09:33 | 专题:VR空间定位全解:如何在虚拟世界中行走? |
雷锋网按:本文作者系VR行业从业者,雷锋网独家首发。
作为光学动作捕捉技术的代表性产品,OptiTrack凭借其稳定、高精度、高速度的优秀性能和同类产品中相对低廉的价格在业界得到了广泛的应用。由于光学动作捕捉技术的核心是标识点定位,近几年随着VR的兴起和VR对高精高速空间定位的迫切需求,OptiTrack迅速成为VR定位的一种主要解决方案,在VR行业受到追捧。但同时OptiTrack在VR应用中的问题也逐渐暴露出来。
本文就着重分析一下这些问题及其对VR应用的限制,供从业者参考。
OptiTrack定位技术属于被动式红外光学定位技术。我这里先给大家简单介绍一下OptiTrack是如何实现的。
OptiTrack采用的红外光学定位技术是基于计算机图形学原理。 每套OptiTrack系统包括一个中央处理单元和多个红外摄像头。各摄像头由中央处理单元统一控制,同步进行图像采集。同时在目标物体表面上固定红外反光率很高的标识点。在红外波段采集图像可以有效去除可见光干扰,提高系统鲁棒性。摄像头快门与集成在摄像头上的红外照明光源同步开启,保证标识点在图像中易于辨识。
OptiTrack系统在安装后需要进行标定,以确定各摄像头在世界坐标系中的空间位置T以及各摄像头坐标系到世界坐标系的转换矩阵R。R和T在后面的定位计算中都会用到。
摄像头采集的每帧图像经过畸变矫正和标识点识别,再进行从对应摄像头坐标系到世界坐标系的转换(使用R),可以得到从摄像头到图像中各标识点中心在世界坐标系下的一组方向矢量。如果一个标识点同时出现在两个或更多摄像头拍摄的图像中,根据已知的各摄像头世界坐标系空间位置(使用T)以及多帧图像中对应于该标识点的方向矢量,计算多个方向矢量的交点或近似交点,可以确定该标识点的世界坐标,如下图所示:
为了保证成像质量,OptiTrack摄像头的视场角一般都比较小。下表是OptiTrack官方给出的各款摄像头视场角参数。
同时,上文提到过OptiTrack的定位原理要求对定位空间中每一点都要有至少两个摄像头覆盖。为了保证场地的有效覆盖以及抗遮挡, OptiTrack要求摄像头向前安装。这导致摄像头下方附近无法得到很好的覆盖,尤其在有遮挡情况下,从而无法进行稳定定位。一般在安装场地边角附近一米左右的区域为不能使用的盲区,在使用面积上会有很大的损失。
这点在VR应用,尤其是商用场景中是一个很大的限制,因为用户通常希望可以使用100%的面积。相比之下,HTC Vive和StepVR使用的激光扫描定位技术则没有这个限制,因为该技术在水平和竖直方向都可以达到至少90度角的覆盖。
为什么OptiTrack用于VR会有延迟问题?
要回答这个问题,我们以多人VR游戏为例, 先看看从OptiTrack系统采集原始图像到渲染好的游戏画面显示到玩家HMD上的整个处理流程,如下:
摄像头图像预处理提取mark点→中央计算单元根据多摄像头数据计算各mark点空间位置→定位数据无线传输到玩家计算单元→玩家计算单元找出属于自己的mark点→游戏渲染。
首先是对摄像头拍摄的图像进行预处理,包括对图像进行畸变矫正,标识点的分割,对标识点的大小和中心点的计算。取决于定位空间的大小以及支持标识点的个数,为保证实时处理要求,涉及标识点处理的操作需要在摄像头和中央处理单元之间进行分配。
其次是根据前面描述的算法综合多帧图像的信息对空间所有标识点进行定位。这一步必须在中央处理单元上完成。
然后是把各标识点的定位信息传输到玩家的计算单元。为保证玩家在游戏中能自由运动,玩家身上的移动计算单元需要与中央处理单元进行无线通信。这步并不进行任何数据处理,但会引入延迟。
接下来是从所有标识点的定位信息中区分出对应每个玩家各定位点的信息。取决于系统架构,这步可以放在各玩家的移动计算单元上,也可以与上一步互换,在中央处理单元上完成。因为标识点本身无法提供编号信息,多标识点位置很接近的情况会很难处理,所以这步必须通过一些限制条件结合算法实现。比如约束各玩家的运动范围,通过空间限制确定标识点的归属;或者将多个标识点刚性连接成不同几何构型,通过几何限制用匹配的方法判断标识点的归属;或者已知玩家各标识点的起始位置,通过运动预测的方式判断标识点的对应关系。
实际应用常常会同时采用多种方法,但无论采用何种方案,随着玩家和标识点数目的增加,算法复杂度会呈超线性增长,延迟也会越来越长。
确定玩家各标识点后,游戏才能对内容进行渲染并将游戏画面最后显示到玩家的HMD上。
上图中OptiTrack官网给出的各款摄像头的延迟参数实际上只是摄像头拍摄两帧之间的时间间隔,并不代表全部系统延迟。而国内一些采用OptiTrack方案的公司所宣称的20ms延迟是从图像采集到数据传输至玩家移动计算单元的延迟,并非从图像采集到HMD显示整个流程的延迟。
OptiTrack光学系统虽然可以实现多个目标的同时定位,但是可识别目标数目有限。
同样以多人VR游戏为例, 玩家自身加道具通常需要进行多点定位及姿态捕捉。实现一个目标点的姿态捕捉需要至少不共面的4个标识点用POSIT算法进行解算,提高确定标识点对应关系算法的鲁棒性也有类似的需求。所以在比较典型的玩家有一把枪的情况下,如果只对头部和枪进行定位,每个玩家需要8个标识点。如果需要做全身动作捕捉,标识点数目会大大增加。
由于图像处理的复杂性,OptiTrack系统通常支持的最大标识点数目在100以下(官方参数)。同时确定标识点与玩家对应关系的算法复杂度也会对此进行限制。这就决定了一套OptiTrack系统只能支持有限的几个玩家。
同时, OptiTrack要求所有摄像头通过Gigabit局域网连接到中央处理单元,一套OptiTrack系统最多支持的摄像头数目也有限制,通常为96。使用顶级的Prime 41摄像头,系统支持的定位面积为676m2(官方参数),难以满足大型场地的需求。
激光扫描定位系统则不受这个限制。因为各定位单元有自己的编号,且根据激光扫描信号独立进行定位,所以定位点数目可以任意多,同时也无需确定对应关系。据公开消息显示,StepVR的方案甚至支持无限大空间扩展。
遮挡问题一直是光学定位系统最常见的工作失效原因之一,Optitrack系统也存在这样的问题。Optitrack系统需要至少两个摄像头同时拍到同一标记点方可实现该标记点的定位,而当红外光线被用户或物体遮挡时,空间点三维重构就会由于缺少必要的二维图像中的特征点间对应信息,导致定位跟踪失败。
然而每一标识点在定位空间任意位置任一时刻必须有两个以上的摄像头覆盖是非常高的要求。在多人VR交互场景下,遮挡会频繁发生。即使有一个摄像头可以覆盖标识点,也无法进行定位。反映在玩家HMD上显示的内容里,定位丢失可能会造成运动卡顿或道具丢失等非常影响体验的状况。解决方法可以通过增加摄像头,限制玩家移动范围,以及用运动估计算法短时间进行补偿。
相比之下,激光扫描定位系统中每个定位单元只需要收到一个激光发射基站的定位信号即可定位,抗遮挡性更优。
OptiTrack系统最致命的弱点是昂贵的价格。OptiTrack摄像头需要有优秀的光学质量、高分辨率、高帧率,且需要有高速的图像处理功能,导致满足VR使用需求的摄像头每个都在1000到几千美元,下表是OptiTrack官网给出的各款摄像头的价格信息:
而一套实用的系统所需要的摄像头数目根据面积需求从8个到几十个不等,再考虑到其它硬件和系统软件,一套可用于VR的OptiTrack系统通常价格在几万到几十万美元。 虽然对比同类产品比如Vicon系统OptiTrack有一定价格优势,但对VR这种大众化的应用仍然非常昂贵,即使是大多数B端的客户,如中小面积VR体验店的业主也难以承受。
而若要降低成本,即会损毁精度。OptiTrack这类光学定位系统对于大多数VR用户来讲并不是性能和价格一个很好的平衡点,这也是国内一些应用OptiTrack定位方案的公司,以及类OptiTrack定位方案的公司,其设备也非常昂贵的原因。而价格相对低廉、性能出色的激光扫描定位技术在大多数情况下可能是一个更好的选择。后面我会有专门的文章分析激光扫描定位技术的优缺点。
雷锋网注:雷锋网独家文章,转载请联系我们授权,并保留出处和作者,不得删减内容。
雷峰网原创文章,未经授权禁止转载。详情见转载须知。