去年7月28日HYPEREAL Pano发布会上,HYPEREAL发布了自主研发的产品、游戏内容。在此前,HYPEREAL一直是一家默默无闻的技术公司,而CJ前两天过后,经过一些媒体的报道,HYPEREAL俨然被视为“VR界的黑马”,在受到大量赞赏的同时,关于产品的外观和技术HYPEREAL也面对了一些质疑,甚至有人专门来体验区拍摄HYPEREAL头显和手柄的sensor点布局。
很多人说HYPEREAL的定位像Vive,但事实上HYPEREAL与Vive有很多不同:Vive采用的是光同步,HYPEREAL采用的是无线同步,其次sensor点的布局完全不同,结构和算法也完全不同。HYPEREAL的技术总监陈禄在去年7月28日的CGDC上发表了主题演讲《虚拟现实交互的圣杯——灯塔跟踪技术》,分享了HYPEREAL空间定位——HyTrack的技术细节。
陈禄,HYPEREAL图形技术总监,图形学博士
毕业于浙江大学竺可桢学院和CAD&CG国家重点实验室;
博士期间研究方向为虚拟现实和几何建模,发表过多篇顶级期刊和会议论文;
曾就职于宝马中国技术中心,担任虚拟现实和人工智能两个方向的研发团队负责人;
根本目标:用跟踪技术为用户带来沉浸感
陈:VR的终极目的是为了完全接管人体所有的感知器官,然后通过计算机模拟的方式去提供反馈,让用户形成一种很强烈的沉浸和临场感。除了视觉显示,还要用到跟踪技术。跟踪技术的意义是能够把真实世界的东西带到虚拟世界当中去。毕竟人的身体,包括一些周围的环境都还是在真实世界当中,所以必须要用跟踪技术来使得真实世界的东西在虚拟场景中有一个对应,以及和虚拟场景发生交互。
跟踪技术
跟踪技术是分阶段的。最初级阶段,便是实现头盔旋转的跟踪。现在移动端大部分产品,基本上都能实现这一点,通过追踪头部旋转,已经可以达到一定的沉浸感。但问题是,当用户看到VR场景之后,接下来的需求就是希望与这个虚拟场景进行交互。这其中,交互的方式有很多种,包括用手,或者用身体,这就是为什么现在所有的PC的方案基本上都会有头部的平移以及手柄的跟踪,这会给用户提供更好的沉浸感,因为他可以感到他身体的一部分——头部和两只手,可以和虚拟当中的物体发生交互。
诚然,为了达到完美的沉浸感和逼真的效果,还有很多东西需要做,比如说手指、全身、眼球的跟踪,以及对周围环境的感知。这些也都是大家能看得到的VR的发展方向,我们也在同时研究和关注这些技术。
我们今天介绍的HyTrack跟踪系统主要是侧重于解决PC方案中头盔和手柄的运动跟踪问题。
HyTrack——最精确的毫米级定位系统
在讲解了跟踪技术之后,陈禄介绍了HYPEREAL自主研发的灯塔技术原理。
灯塔跟踪技术的前世今生
灯塔定位技术的最早原型是在1989年被提出的Minnesota Scanner,其原理就是利用扫描激光面对于空间进行编码进而对物体做跟踪。而后有很多人基于相似原理做了改进用于不同领域的应用中。Valve之前首先把它成功的带到了VR消费电子领域。
陈:这是我们公司自己研发的比较早期的原型,做得比较裸。左边是灯塔,有两个电机,电机上面有透镜,这里有一个小动画演示灯塔的结构,可以看到通过透镜把一束激光变为一个扇面,再利用电机使得激光面匀速扫描。中间的部分是我们头显的早期原型,上面有很多小的线路板就是我们自己制作的传感器模块,每一个中心有一个光电二极管。传感器把光信号转成电信号再到数字信号,然后传到计算机里。基本原理如上图,左边这一块是激光扫描扇面的顶视图,激光会从一个基准位置开始向下扫。在扫过基准位置时刻,我们会发射一个无线同步信号。蓝线是扫到每个光电二极管的激光面。右边的图是传感器上面的时序图,从收到无线同步信号的时候开始计时,当被光扫过的时候,会留下一个很小的间距的光脉冲,测量脉冲中点时刻,结合电机转速,我们可以计算得到该扫描面相对基准平面的夹角。这样我们就知道这个点处在空间当中哪一个平面上。通过两个方向的扫描,被照到的传感器点我们可以确定其在空间当中的某条直线上。在这里我们和VIVE采用了不同的技术方案,他们使用的光同步,灯塔会有LED灯。无线同步的好处是,灯塔之间不用同步线连接了,或者灯塔不用互相对着摆放。两种方案在工程实现上的区别很大,测量手段也会不一样,但是本质上都是为了获得同步信号时间。
HyTrack早期原型、基本原理
而后是算法逻辑,这主要基于一个数学模型。
数学模型
我们通过光学系统所得到的其实是两个角度,这样就可以知道,这个物体的某些点在投影平面上的坐标。这里等同于一个小孔成像的相机模型,也可以很好地表达成一个线性的约束。在静止状态下我们已知传感器点的相对位置,当物体运动过之后,可以得到某些点的扫描观测值,因为它被照到,它会处在这个空间当中某两个面的交线上,这个可以很好的写成一个线性约束表达式,可以把它们联立起来,相当于做一个最优化的问题,我需要求解在满足这些约束情况下最优的旋转和平移。这个问题其实是一个比较标准的问题,求解的方法也非常多,其实在视觉领域,对这类问题有很多人做过不同的方法,比如说你怎么样参数化你的旋转,就会有不同的方法,基本上这个应该算是一个比较成熟的问题。
HyTrack算法流程图
这就是我们的算法流程图。以上我们提到的是激光系统的原理,但不要忘了,在头盔和手柄上还可以利用IMU。其实在有陀螺仪、加速器和磁力器的情况下,IMU本身也可以做定位工作,但是它有个很大的问题——会漂移。其实我们对这个物体姿态有两个数据来源,一个是IMU,一个是激光系统,这两套系统理论上都可以独立对这个姿态进行估计,IMU的好处是采样频率高在短时间内相对来说比较精确,坏处是稍微长一点时间就会有较大漂移。而激光系统则是在大尺度下相对比较精确,但是它可能被遮挡和有误差。我们要做的工作之一就是怎么把这两个信号融合在一起。
这就是我们HyTrack定位系统的基本原理。
如果你对于灯塔技术比较关注的话,会知道有这样一个人,他叫艾伦,是Valve的灯塔技术负责人。他说过一句话——“其实任何人都可以在非常短的时间内构建一套自己的激光定位或者灯塔追踪系统。但是当你搭出你的第一个原形,并且对它的性能做过实际测试之后,你就会知道你面前的路有多长。”因为我们HYPEREAL实际走过这一条路,我对他的这句话非常认同。定位系统的原理就像我刚刚说的,并非难于登天的壁垒,而且基本理论和方法在学术界已经被研究了很久,但是,我们所面临的是很多很多工程的问题,包括机械系统、光学系统、模拟电路、数值精度的问题,每一块都可能会引入相当误差,怎么样去减少误差的存在,对误差进行建模,减少各个系统之间的耦合性,其实需要做非常多的工作。
举个例子,传感器的分布。什么样的传感器的分布是好的?比如说我们在设计头盔时,在规划头盔上面传感器分布的时候,需要考虑在每个角度上可照射的传感器点的数量,因为从理论上来讲,一个灯塔要至少照射到4个点以上才能比较稳定的求解姿态。还有可见张角问题,一般从设计来讲,上面要覆盖一个膜,或者透光的介质,相对的传感器点比表面要凹下去,这样可见张角可能就不是180度,或者是120-140,考虑的时候每个点覆盖范围没有那么大。还有数值稳定性,比如说我可能看到4个点,或者5个点,这4个点或者5个点如果是共面,就可能对数值稳定性造成很大问题。这张图片是我们开发的一个内部工具的截图,这个工具可根据设计师提供的几何模型,对传感器点的分布进行自动评估和调整,借助于这样的工具我们可以更加有效的设计传感器点的位置和支持更加自由的设计。
关于灯塔技术的拓展
陈:原理上来说,一个灯塔已经足以定位头盔和手柄,两个灯塔的作用主要是解决遮挡。当你在360度任意旋转你的身体时,如果灯塔只放在一边,你转过身,你的身体就会对光造成自遮挡。现在一个灯塔覆盖范围是5米,能不能更大呢?由于激光的特性,单灯塔的辐射范围是有限的。如果你想支持大空间,我们可以通过铺设多个灯塔来衔接。
第二点是可以处理非刚性物体。根据我之前介绍的原理每个sensor点被一个灯塔照到之后,可以确定空间当中的一条线,它如果被两个灯塔同时照到,就能够确定在空间当中的一个点,基于这一点,这个跟踪技术其实也可以用于非刚性物体,比如说手指,或者人的身体上,每个关节上放一个传感器点,只要这个点同时保证被两个灯塔照到,就可以对它的位置进行解算。后面还有多传感器融合方面的拓展。比如说无人驾驶车或者机器人这个领域它会同时用多个传感器,激光,摄像头,雷达,GPS等等因为每个传感器可能在不同的环境下,有它独特的优势,如果你想使整个系统做得非常稳定,其实利用多个传感器是一个比较好的策略,也可能实现一些新的功能和效果。
从内容层面谈交互
陈:我们公司的愿景,是希望能够给所有人提供一个在VR中创造梦想中的世界和表达自己的途径。为此,我们不仅提供硬件,而且基于这套硬件的特性提供了一整套的工具和软件,来使大家可以很容易地在VR空间当中进行创造。这些创造的工具都是基于我们对于这套定位系统,或者说对VR交互的理解。
《Zombies Never Die》武器交互设计
就拿这款《Zombies Never Die》来说好了,这是我们自己的团队做的游戏。玩家可以在场景内选择不同的武器,其实这些武器的选择都考虑了很多,你可以拿枪、剑、弓,这些都适合于在站立情况下大尺度的VR交互的,其中弓箭的交互效果比较突出,因为你需要两手同时使用,而且我们添加了手柄上的对应振动和声音,给用户造成反馈,交互的效果非常好。在选择菜单的时候,我们也采用了比较直观的方案,让用户自己去拿手去抓相应的武器来完成交互。至于枪,我们实现了三点一线的瞄准射击方法,一些玩惯了FPS的人不太习惯因为没有准星,但是他们忘记了,枪在现实世界中原本就应该这样去用。根据我们测试的经验和体验区的反响,这个游戏,大部分人都可以很快上手,各种武器都非常符合大家的使用预期,这才是VR真正有力量所在,它与传统的游戏不同,不需要把操作映射到手柄上,VR中应当基于用户对该武器原有的一些知识和经验来完成交互的过程。
下面一个是我们叫HyBuilder,展现的是用户在虚拟空间中创造一个世界的过程。目前的内容是创造一个街区,可以看到在这个过程当中,用户充分使用最自然的方式进行和虚拟世界进行交互。比如说如果你想在空间当中创造一个立方体你会怎么做,如果你想改变这个立方体的大小,你应该会做什么样的操作,我们的设计采用最直接的动作方式,完全符合用户的经验和想象。实际体验中我们发现即使是儿童也可以顺利的熟悉并完成我们的交互,用户可以充分地享受造物主的乐趣。
《HyBuilder》交互过程
以上是HYPEREAL技术总监陈禄在VR交互方面所做的一些工作的分享。
公司从最初的十多人,迅速发展壮大,现在已经是一个110多人的大团队,在这半年里完成了整套设备的研发,虽然时间并不算多长,但这依然耗费了HYPEREAL大量的人力物力,陈禄所分享的HyTrack,在研发过程中,除了研究算法,硬件配置上也有不小的消耗。
至于部分媒体报道的“5人1个月”、“10人3个月”的开发过程,这着实太夸张了,硬件、软件底层、Track、游戏,任何一个开发部门的人数都不止这个数字。我们的研发效率确实非常高,但是媒体报道的数字偏差还是太大了。
陈:我们是一家年轻但是有理想的公司。VR还处在相对早期的阶段,我们希望和在座的各位同行一起来努力,推动这个产业的发展,实现我们的愿景。这也是我们为什么愿意在这里和大家分享很多我们的工作和技术细节的原因。我们之后也会在自己的网站或者其他方分享更多的技术内容,供大家一起交流学习。谢谢大家!
(审核编辑: 林静)