一、什么是VR

  虚拟现实技术是一种可以创建和体验虚拟世界的计算机仿真系统,它利用计算机生成一种模拟环境,是一种多源信息融合的、交互式的三维动态视景和实体行为的系统仿真使用户沉浸到该环境中。

  这里我不会对概念做过多的介绍,而是简单介绍一些目前VR的一些实现,以及一些主流厂商的支持,更多的是对VR的展现形式做介绍。不管厂商做了什么设备,目的都是“使用户沉浸到该环境中”。

  广义的VR还包括一些其他交互方式,如语音识别、手势识别,如微软xbox kinect,不过其精准程度目前还远不如VR手柄。Kinect适用一些如攀岩、保龄球等对延迟和精准度要求不高的休闲类游戏,并不适合如CF等精度要求较高的操作体验,并且xbox目前没有头盔,无法提供360度的全方位视觉沉浸体验。这里主要介绍一下摄像头、头盔、手柄这三种常见设备。
 

VR项目从技术原理到测试简介

 


  目前提供VR设备的主流厂商有oculusVR、HTC vive、索尼的PS VR,这些都是比较高品质的PC端硬件产品,价格在几千元RMB左右;还有一些主流设备如三星Gear VR、谷歌的、Daydream,则是简易的移动端VR设备,一般在几百元RMB左右。移动VR设备成本价格相对低一个数量级,通常高端一点的VR设备也只是多提供了一些手机操作接口而已,在手机放入头盔中不方便操作时用于通过头盔按键操作手机。谷歌的Cardboard长成下面这样,其他的移动VR设备也只是做的漂亮一点,加了一些控制功能,虽然不是全沉浸,但成本低了很多。
 

VR项目从技术原理到测试简介

 


  二、VR设备的技术原理

  1、显示原理

  参考文献:http://mt.sohu.com/20160330/n442803575.shtml

  参考下列四张图:

  (1)首先人的眼睛根据光线平行的角度判断物体远近,比如无限远的物体反射光线接近平行
 

VR项目从技术原理到测试简介

 


  (2)近处的物体光线成一定角度,需要晶状体调节曲率警醒对焦,如果物体太近,晶状体调节幅度限制,则不能对焦
 

VR项目从技术原理到测试简介

 


  (3)头盔中的眼镜,或者说光源距离眼睛非常近,为了解决对焦问题,就需要在光源和眼睛中间加一层透镜,改变光线汇聚角度,来确保视网膜对焦
 

VR项目从技术原理到测试简介

 

  (4)为了将透镜做的轻薄,减轻头盔重量,可以将透镜做成下面螺纹形状
 

VR项目从技术原理到测试简介

 


  (5)该透镜成像会有一定损失,因为螺纹边缘的光线传播路径与想要达到的效果不一致,会有部分光线没有沿着我们想要的轨道传播
 

VR项目从技术原理到测试简介

 


  2、3D成像原理

  这块难度不大,相信大家都了解,不过还是简单讲一下。

  如果你对自己的视觉好奇过,你应该尝试过单睁左眼、然后再单睁右眼,头部保持不动,不停的对比两只眼睛看到物体的角度和视野范围。
 

VR项目从技术原理到测试简介

 


  3D电影就是这个原理。通过技术手段,让两只眼睛看到的图像,在角度和视野范围符合人眼自然观看的结果,那么图像就有了立体感。早起的3D是通过红蓝光镜片,将左右眼看到的图像分离,屏幕上显示的是两个颜色叠加的图像,如上图所示。这种技术会使影响有色差。现在普遍的电影院才用的是偏振技术,使用偏振原理将左右眼影响进行过滤,偏振技术的3D效果是目前常见3D技术中效果最好的,唯一的缺点是偏振镜片会滤掉一半的光线,使影片看起来偏暗。

  目前裸眼3D技术也有比较成熟的运用(不是全息投影),主流技术有柱状透镜技术、MLD技术、指向光源技术。

  其实原理本身就是就是将左眼和右眼看到的图像分开,当然真3D拍摄的时候也要求两台摄像机同时拍摄才行,然后在播放的时候将两种图像混合(可以通过偏振或者红蓝片过滤使其分开)或者交替播放,如每秒24帧的影片,做成3D就要左眼影像24帧,右眼影像24帧交替播放。

  不过对于VR头盔或者说眼睛来讲,实现起来要方便一些,因为VR头盔本身就有两个“显示器”可以将左眼图像和右眼图像直接分开显示在不同的“显示器”上。仔细看,可以看出下图中两只眼睛看到的影像的区别。
 

VR项目从技术原理到测试简介

 


  3、渲染流程

  由于以上3D成像原理需要渲染两张不同角度方位的图像,这在渲染流程上也增加了一些处理环节。如下图所示:
 

VR项目从技术原理到测试简介

 


  在以上渲染流程图中,与传统渲染流程有差异的主要是在“剪裁投影”环节,这个环节做了以下几件事情:

  (1)剪裁掉屏幕上不显示的元素;

  (2)将三维世界的景象投影到二维平面,为渲染到屏幕做准备;

  (3)这时要在摄像机的位置前方确定一个矩形区域,叫做“视口”,用于观察三维世界。

  由于传统渲染流程中屏幕只有一个,或者说显示窗口只有一个,所以只需要确定一个视口,但是VR头盔中需要显示两张不同角度的图,那么在VR渲染流程中就需要两个摄像机和两个视口。也就是同一个三维世界中的场景,要在两个平面上以稍有差别的角度进行投影,就如同两部相机同时在两个位置进行拍照。

  那么以上的三个流程中步骤(3)将要做出一些改变,就是本来需要确定“一个”视口,那么渲染到VR设备时,需要确定“两个”视口,以及摄像机。在一开始的开发过程中,需要人为的设置两个摄像机和视口,随着开发引擎版本的更新,这个过程将不再需要开发者来考虑。但是对于设备的数据而言,针对每一个相机无论是顶点shader程序的处理、变换矩阵、3D剪裁都需要做两次,栅格化之后的片元shader、光照雾化处理、模板处理、缓冲区处理也都是双倍的数据量。

  栅格化之后两个视口的片元将合成一张矩形的片元矩阵(混合处理之前的像素称作片元),渲染到VR设备的栅格化图像将变成类似以下图像的样子
 

VR项目从技术原理到测试简介

 


  实际渲染像素要高于屏幕形状裁剪之后显示的有效像素值,因为设备内只能渲染方形的数据矩阵。而传统的像素矩阵,看上去是这个样子
 

VR项目从技术原理到测试简介

 


  那么在后续渲染流程中,直到显示到屏幕中,始终是双眼的图像作为一张图像尽心处理的,但是数据量却是双倍的。另外再加上对为防止眩晕,减少两帧渲染时间间隔,VR游戏帧率的最低值为90帧,而不是PC游戏的最低值60帧。分辨率最低为1080p,而不像PC可以随意一点。因为头盔镜片的畸变、螺纹、中心像素的放大、屏幕与眼睛的距离等综合因素,VR设备实际的视觉体验与PC的1080p还是有区别的。

  4、定位原理

  定位技术其实没有看上去那么简单,并不是简单的红外传感器位置捕捉,而是多重传感器同时发回作用,使动作的扑捉和处理精度达到“亚毫米级”。此处参考文章出处:

  http://www.elecfans.com/vr/441329.html

  位置传感器

  为了显示精确的画面,当你环顾周围时,头盔必须以亚毫米级的精度跟踪你的头部运动。这是通过各种内置传感器来实现的。有了这些传感器提供的各种数据,头盔就可以实现真正的“六自由度”,跟踪头盔可以跟随头部做出的任何运动。(注:物体在空间具有六个自由度,即沿x、y、z三个直角坐标轴方向的移动自由度和绕这三个坐标轴的转动自由度。)

  磁力计可以测量地球的磁场,因此总是知道“磁北”在哪个方向。这样就可以确保它指向的是正确的方向,防止出现“偏移”错误——即头盔以为自己朝着某一个方向时,其实朝着的却是另一个方向。

  加速度计有几个用途,一个是检测重力,让头盔知道上方是哪个方向。智能手机自动转换横竖屏,靠的就是加速度计。而且正如它的名字所说,它可以测量沿着一个轴的加速度,因此它能提供有用的数据,让头盔知道一个对象运动的速度。

  陀螺仪可以跟踪沿着一条轴的微小偏移(例如你稍微倾斜头部或点头的时候),来提供更精确的物体旋转信息。

  三星Gear VR没有采用更先进的红外跟踪方法,而是使用了惯性测量单元(IMU),它是集磁力计、加速度计和陀螺仪为一体的“多合一”设备。与大多数智能手机不同的是,这个IMU是专门用来减少滞后现象和改善头部跟踪性能的。

  红外跟踪

  Oculus Rift和HTC Vive都使用红外激光来跟踪头盔的移动,但各有各的方法。

  Oculus使用的是放在办公桌上的“星座”(ConstellaTIon)红外摄像头,跟踪Oculus Rift头盔前后都有的红外发射器。如果使用Oculus Touch控制器,你还需要另外再配一个摄像头,以避免在跟踪头盔和控制器上的红外灯时出现混淆。每个传感器都是单独跟踪的,计算机收集所有信息来渲染画面,让你在任何时候从任何角度看的图像都是正确的。所有这一切几乎都需要立即完成,这意味着每个红外传感器的坐标被立即捕获和处理,图像也就马上显示出来,几乎没有滞后。

  HTC Vive使用的是“灯塔”(Lighthouse)红外发射器,它被放置在游戏空间的角落里,可以快速发射激光,扫过房间。Vive上的红外传感器捕捉到它,并对其在一个空间内的位置进行测量。这个系统的工作原理类似于Oculus,但本质上它是把“灯塔”作为了发射器,把头盔作为了摄像头,角色刚好反了过来。

  伴侣系统

  Vive头盔除了有“灯塔”红外跟踪系统之外,还有一个前置摄像头,它可以使用“伴侣”系统,来帮助检测你是否离开了游戏空间的边界。因此,如果你快要撞上墙壁或家具了,Vive就可以巧妙地给你发送视觉提示,让你知道自己已经到达了VR空间的边缘。

  控制器

  Rift和Vive都有无线运动控制器,让你与3D空间中的物体进行充分交互,从而增强沉浸感。

  像头盔一样,每个控制器都配备了磁力计、加速度计和陀螺仪以及红外传感器,对运动进行亚毫米级的精度跟踪。

  定位控制系统最大的敌人是延迟,可能出现的延迟如下:

  1、 传感器反应延迟;

  2、 控制信号传输延迟;

  3、 设备驱动信号处理延迟;

  4、 游戏渲染延迟(该部分硬件依赖于显卡);

  5、 图像显示延迟。

  5、其他

  音频

  很多头盔内置了耳机,可以产生3D音频。这样游戏就可以添加相对于你的位置的音频提示,让你可以听到好像是来自后面、上面,甚至下面的声音。

  隐藏的麦克风可以给游戏开发者提供更多的选择,在游戏中添加更多的沉浸式功能。使用麦克风,游戏可以检测你在隐形游戏中产生的噪音量,或者把它作为在VR中进行语音交流的方法。

  线材

  Vive和Rift都需要用线材将头盔连接到计算机上,以便传输数据和电能,让显示屏以90帧/秒的速度显示高清图像。如果你是坐着使用头盔和游戏手柄,那没有什么问题,但当你在室内走动时,线材确实可能会变得碍手碍脚。不过Vive有消息称下一代头盔将采用无线技术。

  三、给测试带来的挑战

  对于PC端VR设备来讲,我们开发的游戏产品所使用的输入输出设备发生了变化。那么对于测试而言,功能测试、专项测试的方法和测试目标也发生了一些变化。

  1、功能测试

  首先VR设备本身采购价比较贵,以Oculus Rift和HTC Vive为例,采购价在分别为599$和799$,按照些文章当前人民币对美元汇率6.87计算,人民币价格分别为4115人民币和5473人民币。再加上运行VR设备的机器要求配置也比较高,通常能流畅体验VR游戏的显卡要求为英伟达1080系列,市价5k人民币左右,能带的动该显卡的CPU、内存、主板以及机箱制冷系统通常加在一起大约在12k以上(含显卡),不考虑显示器和其他设备的情况下。那么一套全效测试设备的市场采购价为17k左右。目前项目组也只有两套可以全效体验的环境,而且还是开发和策划共用。

  所以测试设备数量是最大的限制,按照传统的RPG游戏的内容充实度和迭代速度,就算增加测试人力,也无法完成测试。那么有一种方法,就是设置PC模式进行测试?但是基于以下几个原因,VR游戏在PC上进行测试并不可行:

  (1)    PC与VR的部分操作方式实现不同:比如VR的拾取动作、VR的甩手换弹夹动作,PC与VR的实现并不相同;

  (2)    PC默认的移动模式与PC默认的移动模式不同:VR可以通过头盔和手柄的定位识别进行移动(移动受玩家真实的游戏空间限制),而PC只能通过键盘操作移动(无法设定由于玩家真实游戏空间带来的限制)。

  基于以下三个原因,测试暂时不会面临设备、内容与测试人力不匹配的问题:

  (1)    系统少

  VR游戏无论是玩法还是市场目前都处于探索阶段,游戏内容通常以展现VR玩法为主,例如滑翔伞等极限运动、FPS等,只有关卡、成绩,没有成长系统、装备系统、技能系统、角色系统、背包系统等,甚至有些游戏没有排行榜系统。所以,以VR游戏单一的体验式玩法,测试并不耗费太多人力。

  但如果VR市场成熟起来,多系统的加入是不可避免的。不过随着时间的推移VR成本的降低或者向移动端的转移,可能会平衡给测试带来的问题,即可以采购大量的设备,不会使设备数量成为测试和开发的瓶颈。

  (2)    单机性

  主机VR呈现很高的平台型,各个VR厂商几乎都有自己的或者合作的游戏平台。例如Oculus有自己的游戏商城,HTC Vive则是与Steam合作,PS VR就更不用说了。单机游戏的复杂性,从业务逻辑的实现并不复杂啊,所以不会出现一些前后台同步,多玩家交互同步以及状态转换带来的一些奇葩问题。且端游为了适应大众玩家的配置,通常不会把客户端做的很重。

  端游的难点通常在于美术、动画、渲染、特效、物理,而这些虽然是技术开发的难点,但对于测试而言反而更加直观,所以VR游戏的单机特性,即降低了业务逻辑实现的复杂性,也给功能测试减轻了一些压力。但是同上一种情况相同,随着VR市场和技术的成熟,业务重心向后端的偏移也是也是必不可少的。

  (3)    UI差异

  由于VR的视觉特性(所有UI都投射到3D空间中)、操作特性(无键盘鼠标)、移动特性(UI跟随视线移动)等原因,VR产品的UI设计与传统完全不同。VR的UI分为两种,一种是视角固定的UI,就是始终在眼前,跟随视角移动的;一种是场景内的3D UI,与场景相对位置固定不变,和场景融合。
 

VR项目从技术原理到测试简介

 

VR项目从技术原理到测试简介

 


  a) 视觉特性。对于固定视角的UI,由于所有UI都投射到3D空间中,所以不能像PC一样,玩家可以随意调节眼睛到屏幕UI之间的距离。所以一旦UI的视野范围和距离出现问题,玩家无法使用,开发调试也比较耗时。而且功能性UI操作方位只能放在屏幕中心(如暂停之后的恢复按钮),才便于操作,不能在边角放置按钮,限制性很大,游戏内很少使用,更多的是位置固定在场景中的UI。

  b) 操作特性。VR游戏中的操作使用的是射线模式,通过手柄在视野中投射的射线,选中UI操作,由于UI是投射到3D空间中,所以如果UI与玩家头盔所在位置中间如果有阻挡,可能会导致UI不可见。比如攀爬过程中玩家前方视野是山体,并且距离玩家的眼睛很近,如果此时不做处理一些系统的UI(如暂停之后的恢复按钮)很有可能会出现在山体内部,导致视觉上的不可见而无法操作。所以通常出现结算之类的重要UI一般需要对3D场景做特殊处理,或者切换到一个空旷的3D空间。
 

VR项目从技术原理到测试简介

 

VR项目从技术原理到测试简介

 


  c) 移动特性。这里所说的移动特性是指头部移动时,可能会有部分功能UI随着头盔的旋转在视野中一起移动。那么这种随视野移动功能UI不能太多,也不能太紧凑。第一,该类型UI不符合移动规律,就是头在移动的时候视野本来应该转换,但UI还是在固定的视角没有移动,容易造成晕眩;第二,该固定视角类型的UI只能小面积的放在中间,不能放在角落或者大面积铺开,因为UI随视野移动,角落的UI非常不好选择。

  (4)    角色移动方式
标签: vr