1
本文作者: 刘芳平 | 2016-12-05 21:06 |
关于VR,几乎人所共知的一大问题就是眩晕,而眩晕产生的重要原因就是用户看到的画面运动与身体的运动不一致。特别是在第一人称游戏当中——你在虚拟的世界里行走,而现实世界却是坐着或是站着的。
这就是为什么许多技术和产品被发明出来应对这一问题,例如VR跑步机,它可以通过用户在跑步机上的“原地踏步”来实现虚拟世界的移动,从而让你身体的运动和画面的运动保持一致;还有,一些游戏体验采用穿越式(teleportation)的位移方式,从而避免视觉上的位移感受。
而最好的解决办法,其实是像HTC Vive那样,使用空间定位技术追踪用户的位置,使用户在真实环境中的走动完全变成虚拟世界里的走动。但Vive的问题在于,其定位空间是有限的,只有房间规模,用户不可能无限制地走下去,所以很多时候仍然需要用到teleportation来进行位移。
有限的实体空间与无限的虚拟世界之间的矛盾,是VR需要解决的重要问题。即便对拥有大范围空间定位系统的VR主题公园来说也是如此。
这也是魏立一教授演讲开场时向大家介绍的VR问题。
2016年12月5日,这位香港大学教授在澳门举办的SIGGRAPH Asia大会上进行了题目为“Inception, Wide Awake”的演讲,介绍如何像《盗梦空间》那样,在有限的VR空间定位范围内,塞进大范围的虚拟地图,应用类似“鬼打墙”一样的设计。其演讲内容基于此前发表的一篇论文《Mapping Virtual and Physical Reality》,作者除了魏立一教授,还包括Qi Sun和Arie Kaufman。
a. 虚拟世界地图;b. 现实空间的地面大小;c. 现实空间的实验室设置;d. 虚拟世界画面;e. 用户头显看到的画面
那么这种“鬼打墙”的技术到底是如何如何实现的呢?魏立一教授进行了详细解答。
为了在一个小空间里实现更大的虚拟世界,就需要引导用户的移动,这在全封闭的VR头显中是可以做到的。关键在于不让用户发觉,保持画面的真实感。
实现的过程包含两个关键步骤:
平面映射是一种被用于解决许多问题的方法,在这项应用中,是需要在一个已经设定好的真实场景中,通过定制化的平面映射将不规则的路线映射到真实场景中。
如上图所示,最左边的a是虚拟地图的静态映射,整个空间面积需要200 × 200;b、c、d和e都是平面映射到不同大小的真实场景中,其中d和e是避开障碍物的映射。
平面映射的关键在于保持VR运动的距离和角度,并引导用户不要撞上障碍物或是离开边界。
第二个关键步骤在于用特定的渲染方式,将正常的用户画面转换成扭曲过的地图上用户看到的画面。
如上图所示,左边a为假设正常渲染的的画面;b为不作扭曲渲染看到的画面,上面有一些“鬼影”;c是手动对b进行扭曲并去掉“鬼影”的画面,仅作参考;d是经过扭曲处理的画面,去遮挡的部分用绿色显示;e是用比较粗暴的方法对去遮挡部分进行填充;f是论文作者所使用的渲染办法,使用到了碎片化深度值(fragment depth values)来弥补去遮挡部分。
经过真人测试,这种方法可以在压缩地图,让用户避开障碍物的同时,不会大幅增加用户的不适感和眩晕。
虽然这种方法效果不错,但也存有一些局限,包括以下几个方面:
1、这种方法可以将高度信息加入渲染当中,比如用户跑、跳或弯腰,但如果是缓缓走上一个斜坡,它可能无法感知到。
2、画面及位移的保真程度与压缩的比例有关,如果虚拟场景大小和真实场景相关较小,保真度就高,反之则低。
3、巨大的开放空间无法被压缩进小空间里,此时可能仍需要用到teleportation。
a. 去遮挡区域,b. 画面失真
4、这种方法无法处理巨大的,且与周边环境深度信息不同的去遮挡画面,会出现画面失真的情况,如上图所示。
视频简介:
论文下载:www.liyiwei.org/papers/vr-sig16
图片来源:魏立一教授论文
雷峰网原创文章,未经授权禁止转载。详情见转载须知。