Oculus VR 开发最佳实践指南中文版

发表于2016-02-02
评论0 1.5k浏览

 

作者:

Ÿ Richard Yao

Ÿ Tom Heath

Ÿ Aaron Davies

Ÿ Tom Forsyth

Ÿ Nate Mitchell

Ÿ Perry Hoberman

 

翻译:

Ÿ 综述 – 沉竹

Ÿ 附录A – alice xu

Ÿ 附录B – 蛋包饭

Ÿ 附录C – 肖淼

Ÿ 附录D – reflux

Ÿ 附录E – Davy1st

Ÿ 附录F – 果然

Ÿ 附录G – Davy1st / 沉竹

Ÿ 附录H – 肖淼

Ÿ 附录I – 果然

Ÿ 附录J – 地狱猫

Ÿ 附录K – 肖淼

Ÿ 附录L – 咖啡

Ÿ 校对 -『橘小猫』

本文旨在引导开发者开发出尽可能满足以下三点的虚拟现实体验:

- 眼睛舒适,避免视疲劳

- 身体舒适,避免晕和恶心的感觉

- 良好的用户体验:有趣,沉浸,引人入胜的交互

 

注意:建议不要长时间连续使用设备,这对开发者,最终用户,以及设备本身都无益。

目录

综述 .................................................................................................................................................. 4

附录A - 本文档介绍 ....................................................................................................................... 7

附录B - 视场(即FOV)与比例—SDK ver0.2 .............................................................................. 8

附录C - 双目立体成像和深度线索................................................................................................ 9

附录D - 渲染技术 ......................................................................................................................... 11

附录E - 移动/动作 ........................................................................................................................ 13

附录F - 追踪 .................................................................................................................................. 16

附录G - 晕动症分析 ..................................................................................................................... 18

附录H - 用户界面 ......................................................................................................................... 24

附录I - 用户输入和导航(移动) .................................................................................................... 28

附录J - 创建内容 .......................................................................................................................... 30

附录K - 最符合现实的虚拟现实开发思想 .................................................................................. 33

附录L - 健康与安全警告 .............................................................................................................. 34

 

综述

渲染

请使用Oculus VR的默认变形着色器。自行开发的变形解决方案,即时看上去“差不多”,也会让使用者感到不适。

请确保映射矩阵精确无误。视觉反馈与使用者头部转动的丝毫不一致,都会使人眼与身体感到不适。

请全程保持虚拟现实的沉浸体验。不要让使用者通过Rift看位置固定的静止图像。

双眼不可分开显示不同的内容。如有特殊渲染特效,一定要保证双眼显示。双眼不可有随机不一致内容,否则大脑无法正确的融合两眼看到的画面。

考虑用超级采样和抗锯齿来抵消低像素的不足,尤其是是两眼视觉中央。

 

延迟最小化

程序帧数不能小于60,垂直同步,不要缓存。虚拟现实中的延迟和帧数不稳定都会引起人体不适。

理想情况下,把从用户输入到显示之间的延迟降低到20ms内。整理代码,以把从Rift传感器读数到渲染完成这段时间减到最小。

请使用SDK里提供的追踪预测,并确保给出的时间参数精确无误。

 

优化

减低渲染缓存的分辨率来节省显存,以提高帧数。

 

头部追踪和视线

尽量保证虚拟环境的稳定性。水平方向的大幅度旋转或平移会产生不适感。

确保全程支持头部追踪和视线变化的同步。即时游戏暂停或播放过场动画的时候,也要保证使用者可以随意观看四周。

摄像机的移动和转动要与使用者的头部移动完全一致,否则会产生不适感。

 

加速

加速会造成视觉与前庭器管感知不一致。尽量少用或者尽可能短暂的使用加速来最小化这种冲突。

注意,这里的加速不是特指前进时的加速,而涉及到任何方向上的速度改变,例如突然减速或停止,移动或原地转向,主动或被动平移等。

尽量让使用者来控制加速变化。震动,颤抖和上下晃动摄像机都会产生不适感。

 

速度

用户在虚拟环境里的移动速度与真实世界里一致是最舒适的,也就是1.4m/s

移动和视觉方向不一致会导致眩晕。尽量不要制造或尽可能减少让玩家看非前进方向的场景,特别是在高速移动的时候。

 

摄像机

强制的摄像机变化会产生不适感。即使是微小的变动,例如枪支瞄准时微微把视线移到准心中央,也会让用户感到不适。

摄像机的放大和缩小会加剧晕眩感,特别是放大和缩小跟头部移动不一致时。

第三人称视角,无论游戏内人物在干嘛,摄像机的加速和移动都会让人产生恶心感。另外要全程保证使用者随意观察四周的环境,这对内容的设计可能是一个新需求。

请使用Oculus自带的头部模型来建立精准和舒适的可视角度。

不要用欧拉角度,推荐用四元数来表示角度。直上直下的看,来测试游戏内摄像机是不是也是一样直上直下的。

不要上下晃动,它会产生上下方向的加速从而产生微弱的连续不适。

 

调节与测试虚拟现实晕动症

让不同的用户来测试,以保证绝大部分的人不会感到不适。由于开发者本身较熟悉Rift与作品内容,不适感会大大降低,所以非常不适合做为测试者。

晕动症的程度因人而异。且虚拟现实设备会产生比电脑和电视显示器更强烈的晕动症感受。所以不要一开始就给用户太强烈的内容体验。

可以考虑让使用者自己调整内容的刺激度。比如改变移动速度,加速度,视场宽度等。这些设定的初始默认值都应为最低。

所有这些跟虚拟现实晕动症有关的设置,玩家可能需要实时调节。(比如更习惯了虚拟现实体验的时候,或者觉得太累的时候)。尽量让玩家可以不重启就可以实时调节这些设置。

 

游戏里的冲击和碰撞

就算游戏里有冲击和碰撞,也不要在使用者没有操作的情况下移动摄像机,即使轻微的震动和颤抖也不行。因为这种被动加速和转动会产生不适。

可以考虑为冲击和碰撞设一个使用者可调的参数。参数调低时不会在冲击和碰撞的时候震动摄像机,参数调成高的时候则震动。

 

3D立体感

在和真实世界比例一致的场景中,调用使用者设置的瞳距数据即可。注意,这种真实性也有缺点,就是在非常近的距离上,立体感会变小。但请不要因为这个去调节摄像机的左右眼设置来提高立体感。

不要把环境里的静态物体,比如HUD,放在离眼睛小于50cm的地方。近距离观察会让人的眼睛感到疲劳,且渲染上也会比较模糊。使用者可以自行选择把一些东西放到离眼睛很近的地方,但不要强制执行。

 

用户界面

用户界面最好做成3D虚拟世界的一部分,放在离人眼最少50cm的地方,不管是平面,圆筒形还是球形。

不要让使用者转动眼睛来看界面。界面最好居中并占屏幕的1/3。或让使用者转头来看完整UI。

谨慎使用那些会让UI跟着头部移动和缩放的功能。(比如一个会根据头部转动来滚动的长菜单)。如果要做,也一定要保证UI的移动跟使用者的头部移动一致,而且能一直看清楚,否则会让人不适。

最好让你的用户界面跟3D虚拟世界融合。比如,枪的子弹容量最好直接写在枪的模型的某处,而不是显示在悬浮的HUD上。

 

 

鼠标指针,光标,准星等一定要渲染到被瞄准物一致深度中。否则会产生模糊甚至重影。

不要让使用者的焦距在近远不同的两个物体间频繁切换。比如一会儿看离眼睛很近的HUD,马上又要看离自己比较远的物体。

 

游戏内人物角色的控制

戴上Rift后使用者将看不到手上的操作器。所以尽量让使用者使用熟悉的操作器。如果一定要键鼠控制,记住使用者是靠物理反馈来感受键盘的。

可以考虑用头部转动本身来作为一种控制方式,或者用来辅助主要控制方式。

 

音效

设计音效的时候要记住,如果使用者是戴着耳机的话,耳机永远是跟着使用者的耳朵转动的,但如果用音箱的话就不是这样的。让使用者可以在游戏里设置音频输出装置,然后根据使用者的选择来判定声音表现方式。

 

内容

做一个游戏内的躯干。低头看不到自己的身体会有一种出世感。不管什么躯干给他一个就好。

考虑到分辨率问题,你贴图的质量和尺寸要注意。

跟使用者真实世界不一致的垂直方向变化,会让人感到不适。比如走在一个不平整的地形上。尽量把你虚拟世界里的地面放平整,或者平稳住使用者的游戏内视线。

牢记,沉浸感因人而异。惊悚和恐怖的内容会对敏感的使用者带来深刻的心理冲击,这点虚拟现实平台比以往的任何平台都要强烈。一定要事前告知用户会有这类内容,这样他们可以自己来决定要不要尝试。

在虚拟世界里,看着奇形怪状的物体和贴图也是很奇特的体验。一些在平面显示器上不突出的内容很可能在虚拟现实里就很震撼。

不是只有3D立体效果可以体现物体的景深感。光影,贴图,视差(物体之间的距离随着人的变化而变化),等其他效果也可以给使用者体会到物体的远近变化。

调整内容,尽量不要让使用者平移,后退和旋转。

平稳一直向前的体验是最舒适的虚拟显示体验。

人们对于视觉中心以外15-20度的物体,都会转头或者转身体去看。尽量不要逼迫使用者频繁做这样的转动来减少体力疲劳。

记住,使用者是可以实时看任何方向的,不要让他看到那些违和的东西。(比如一些渲染上的问题)

 

健康提示

一定要把附录L里提到的健康提示和建议做好,来保证你和用户的健康。

 

附录A - 本文档介绍

 

此指南将帮助你开发出让人舒适,又有用的虚拟现实内容。请关注http://developer.oculusvr.com/best-practices获取更详细及时的信息。

 

此附录简述了Oculus Rift的最佳实践,以帮助你达到最佳的效果,这对于像虚拟现实这样的新兴沉浸式产品尤为重要。关于Oculus SDK的相关文档、概要,以及集成游戏引擎库(例如Unity,Unreal Engine和UDK)可以在http://developer.oculusvr.com被找到。

虚拟现实是一种沉浸式媒体形式。它创造一种被完全传送到3D虚拟(或真实的,数码重置的)世界的错觉,相比基于显示屏的设备,它将带给你一段更加震撼肺腑的体验。为了提供这样的体验,相比传统的显示屏,要求开发者在细节方面做的更好。 打个比方,开发基于显示器显示的内容就好比通过一扇窗看一个房间,而虚拟现实是走过一扇门进入房间,而且可以自由移动。

Oculus Rift是独树一帜的虚拟现实设备:价格实惠,高端高质量,宽视野,延迟少。直到现在,虚拟现实的使用主要被局限于研究实验室,政府机构以及其他的高端机构。随着Oculus Rift的诞生,开发者,设计师和艺术家们将能够把所创造的虚拟世界带给全球的观众。

如果开发的内容不遵循这个最佳实践指南,会造成虚拟现实晕动症——包括眼睛疲劳、晕眩、恶心反胃。通常这些症状都是由于质量糟糕的虚拟现实硬件造成,例如系统延迟。Oculus Rift代表了新一代的虚拟现实设备,修复了之前设备的很多问题以及不足。但即便是一个发展完全的设备,设计不当的内容仍可带来不舒适的体验。

由于虚拟现实一直是想当深奥、专业的项目,很多方面我们还没有足够的学习和认知去

对他进行权威性的解说。在这些情况下,我们会参考已知的原理和实际观察的情况。用户测试对于提供舒适、到位的设计是起决定性作用的。虚拟现实作为一个流行的媒介还没有形成一个可依赖的公约。我们相信你,Oculus Rift社区的开发者们,来提供回馈帮助我们使这个文档更加成熟。

 

附录B - 视场(即FOV)与比例—SDK ver0.2

 

现实世界及虚拟视场(FOV)(这里简称cFOV和dFOV)需要相互协调。通常来说,不要把dFOV和默认视场(default FOV)搞混了。

 

为了追求精确,首先我们必须消除视场(FOV)的不同方面的用法的歧义。我们称使用者在虚拟显示仪器中的那一部分视野称为显示视场(display field of view,即dFOV)。这是硬件和光学器件的物理特性。

另一种视场叫做摄像机视场(camera field of view,即cFOV),它指的是在任何特定的时间中,渲染摄像机(rendering camera)所看到的虚拟世界。所有的视场都是由平行,垂直或是角度的测量所定义的。

在传统的以屏幕为基础的计算机图形中,你通常可以自由地将摄像机的摄像机视场设置在任何你想设置的东西上:上至鱼眼镜头(广视角),下至摄远镜头(窄视角)。能这样做是因为在显示器上的图像仅仅是观察者看到的所有东西的一部分二维物体。虽然这个图像可能是十分吸引人,但它不会占用使用者的整个视野,对于大多数人来说摄像机视场和显示视场的不同也不会有任何问题。

在虚拟现实中,是看不到真实世界的;虚拟世界充满了你的视野的绝大部分,并且保证了只有头部运动才会产生虚拟世界的反馈。因此使摄像机视场和显示视场相互协调显得尤为重要。这两个值之间存在一个比值,而在虚拟显示中这个比值需要恒为1。

显示视场和摄像机视场间的偏差会造成人体不适。场景的比例和现实不相应,头部的动作和眼部动作不一致,并且Oculus Rift默认的图像变形将导致渲染场景扭曲。控制摄像机视场会促使晕动症的产生并且导致前庭眼(即当头部运动时,维持眼睛稳定注视一处的功能的部位)的反射不良。

在任何环境下,你都不应该改变任何关于视场或是比例的默认设定,如果要取得视角的比例,也要遵循SDK的方式不要去做变动。正如在其他部分提到的,这样是很容易得出的一个似是而非的视角,并会导致使用者迷茫和不适。

 

附录C - 双目立体成像于景深

 

大脑使用两眼看到的图像差异来感知视觉深度

利用OVR配置工具来把两个虚拟摄像机间的距离设成跟使用者瞳距一样

不要忽略单眼视深的重要性,例如光影效果的纹理与照明等。

在实际应用中最舒适的视距是0.5米-2米,此数据同样作为VR的参考标准

开发时应确保双目所观测到物体的重合性不要出现重影,不要出现某种特效只在一个眼镜里出现,或者两个眼镜看到的效果差别很大的情况

 

基础要素

在VR中的双目视觉成像与现实是有很大差别的。每只眼睛看到的视界是具有轻微差距的,这些信息与我们的大脑进行汇聚与处理并最终形成三维立体的统一视像,即立体视觉。我们的左眼和右眼看到的视界有轻微不同,这就产生了双眼视差。立体视觉是确实存在的,不管是我们看真实物体还是仅仅具有不同的位置距离的两张平面图片来模拟出的这种感觉。

OR利用两个相互具有一定位移的虚拟摄像机为两只眼睛各提供了一个视界。双眼之间的距离称为内瞳距(IPD)。并且我们将这两台摄影机的距离称为内置相机距离(ICD)。虽然IPD的变化差在52毫米到78毫米不等,但基于4000名美国大兵的调查数据,我们基本可将这一距离的均值定为63.5毫米这数据同样应用于OR的轴间距(IAD),这轴间距指OR的两个镜片中心的距离。(根据本指南的修订)

总之,ICD是应与用户IPD而不是轴间距相匹配的,以便矫正用户的视界


单眼视觉深度线索

立体视觉只是我们大脑众多深度线索的过程之一,绝大多数的视深线索是由单眼视深提供的,即只使用一只眼睛看的物体,或者是两眼看单一平面图像。对于VR来说,头部运动时产生的运动视差也是不能忽视的。其他重要的深度线索包括:(当直线延伸到远处时汇聚的)曲线,(当物体近大远小的)比例,(近的物体比远的物体更大能阻挡我们视线的)视界,(远处物体比近的物体更模糊的)透视感,(物体密集消退时的重复模式中的)(消退)结构极差,还有光影效果。

当下的2D显示器广泛应用以上线索。但是我们提及他们却是因为这些线索很容易被立体3D的新颖性所忽视。


人体工程学中潜在问题的避免

使用者所要观看的物体距离超过0.5-2米为最舒适视距,当然也因人而异。物体距离使用者越近,双眼的视界就越不同,这就需要融合双眼视界。最终近距离的物体变为一个无法继续融合的具体影像,如果还要继续融合,观看效果将变得极不舒适。

避免用户过度关注近距离物体的另一个原因是人眼的调节反射,这是双眼视界向一点聚焦的原因。然而,OR的光源模拟图像一般设定为一个固定距离而不是依照人体适配一个聚焦点。这就有可能导致双眼对物体视距匹配困难产生不适感。

明显我们无法控制用户选择他们的视线与关注物体之间的距离差。即使我们知道这可能会产生视疲劳并且我们也采取了严格的手段来防止这发生。例如为了防止使用者行走而设置碰撞设置,但是这会影响用户体验。对于那些开发者知道一直会在使用者视野里出现的物体,比如HUD,手和武器等,这些都要放在视线前至少50厘米。还要适当给使用者去设置这些参数的权利,例如调整HUD的深度距离。

改变ICD也是影响用户体验的重要方式之一。如果加深ICD值,那么这将创造一个被夸大了的立体透视视界。如果下降,这立体感将减弱。


改变ICD对用户有两方面的影响

其一,他改变了双眼视线角度使他们汇聚于某个要呈现的事物。当你增加ICD距离时,用户必须汇聚视线于某个你要他们观察的物体并且这会带来视疲劳。所以我们们并不建议贸然修改ICD和实际IPD距离值。

其二,它会影响用户视线范围的大小。例如增加ICD距离值外人物的比例会使这个模拟出的虚拟世界“小型化”,这是由于他制造了不同的双眼(比较)差异(比较不同事物大小),这种感觉在你平时看很小的物体的时候也会出现。在未来我们致力实现能实现这种效果的SDK。直到我们确实认证了这种效果不会影响体验者的舒适度时,我们都不建议尝试(此种效果)。基于相同考虑,同样,我们也不建议尝试hypo-stereo,也就是前面提到过的过分立体的感觉,(hypo-stereo---ICD设置下的不同用户物理IPD)。

(即使)从双眼视角定义时(双眼视角会产生)差异,但是确保两只眼睛所观察到的图像不会不同也是十分重要的 。 这种巨大的不同是显而易见的,并且它会使你在观看物体时斗鸡眼,但是,过小的视距差也是不好的。例如你要确保你的渲染效果会出现在双眼的任何视角。否则的话,你所呈现给用户的图像将会极不稳定的闪烁,这(体验)是极不舒适的。

 

附录D - 渲染技术

 

显示分辨率

要注意Rift的屏幕分辨率,特别针对精细的细节内容。确保文本足够大且清晰以便阅读,避免使用厚度过小的对象,避免在使用者会集中注意力的地方使用华丽的纹理。 

Oculus Rift 一代开发工具包(DK1)中设备的显示面板分辨率是1280×800,拥有大约100度视场(确切数值取决于使用者的眼距和瞳距)。因此每度视角大约使用6像素。随着显示技术的提高,Oculus Rift及其未来的型号将提供更高清的体验。

由于单个像素是可见的,所以就产生了被我们称作“纱窗效应”的现象——图像看起来被黑色网格图案覆盖。这个图案实际是像素之间的空隙。这导致了锯齿和远处对象的细节损失。虽然较高的分辨率会稍微缓解“纱窗效应”,但当前显示技术下的像素密度尚不能将它彻底消除。


渲染分辨率

Rift拥有1280×800的显示分辨率,但一个使用标准投影方式渲染的场景在显示之前,必须经过变形处理来抵消透镜的影响。这个处理过程在SDK中有详细描述。请注意投影和变形处理过程使得图像在不同位置改变了像素密度,尤其对图像边缘进行了挤压变形(然后透镜将图像边缘展开再展示给使用者的眼睛),从而将Rift有限的分辨率集中使用在图像中心这个最需要视觉细节的范围内。这意味着要想使用标准的线性投影方式渲染一个3D场景来从图像中心匹配Rift的像素密度,这个标准场景通常需要比Rift的物理显示范围大很多的。

SDK可以处理大部分的细节,但要注意Rift硬件的物理分辨率和场景渲染目标的尺寸是没有直接关系的。举一个具体例子,在眼距10毫米、横向视场100度的情况下,要从中心匹配Rift的显示像素密度,需要每只眼910像素宽——共1820像素宽的图像,比1280像素的物理显示尺寸要宽得多,这就是透镜变形图像方式的直接结果。

这么大的渲染目标对某些显卡来说可能出现性能问题,而丢帧会带来不好的虚拟现实体验,所以开发时可以选择降低分辨率来提升性能表现。与其降低发送到Rift的视频信号的分辨率,不如降低用于渲染场景的纹理分辨率,然后作为变形处理过程的一部分,根据需要按比增加或减小。这将在提高性能的同时保留尽可能多的视觉保真度。此过程详见SDK。


动态渲染替身

此方法可减少两次渲染整个场景的计算负担(每只眼各一次)。通过将场景各部分渲染到纹理,你可以使大部分的渲染工作只进行一次,随后分别在左右眼图像中使用同一个纹理渲染一个多边形。作为一个整体,替身被立体地放置在离眼睛正确的距离,但替身或本身的内部都没有变化。可见这项技术最适合在距摄像机一定的距离地方应用(至少6米),才不会注意到替身内部缺乏深度变化。

此方法可以作用于大片的普通风景以及非连续的对象上,只要搞定替身部分之间的接合部即可。

 

附录E - 移动/动作

 

采用较慢的移动速度(如行走/慢跑)会给刚接触的使用者带来最舒适感受

不用或尽量少或短暂使用加速移动

视角变化应始终匹配用户的动作.

第一人称游戏中不要让视角上下晃动.

尽量减少使用者向后移动或侧身移动能带来舒适体验.

谨慎使用那些会在视觉上带来强烈移动感觉的场景,比如在爬楼梯时一直看到重复移动的台阶.

 

运动和加速度的快慢选择

运动的速度越快,引发虚拟现实晕动症的速度也越快,但随后不一定会带来晕动症强度或频率的增加2。我们建议开发者尽量将运动速度设定为接近人类正常的移动速度(步行约为1.4米/秒,持续的慢跑速度约为3m/s),或是将运动速度开放给用户自行调节。

在VR体验中,加速度会是一个更大的麻烦。因为人类主要靠前庭系统感知加速度,而在人头部和身体没有感受到加速度的情况下体验VR中的运动加速度,会造成不适感。(参加本书虚拟现实晕动症部分,那里会有更详尽的原理解释)

请注意,“加速度”应从物理学的立场上理解,这一概念适用于虚拟现实世界中使用者角色在任何方向上随时间变化产生的速度变化。我们通常会认为加速度就是“向前加速移动”,而加速度的概念也同时适用于:减速移动(负加速度)或停止;在运动或静止时的旋转、转向或倾斜;以及侧向和垂直方向上的启停运动。

Oculus虚拟现实实验室的非正式测试表明,短时瞬间的加速比持续性的加速更易接受。因为一段时间的加速运动会在这段时间内带来感官上的冲突,不适感将随着加速运动的频率、快慢和持续时间的增加而增加。虽然存在例外情况,但我们原则上建议尽量减少加速运动的持续时间和出现频率。


控制的程度

就好比车上的司机比乘客更不容易晕车,让使用者掌控他们的运动能防止他们出现虚拟现实晕动症。允许使用者自行移动而非被动移动,并避免使用者角色在被射击或击打等类似情况下抖动镜头(这种方法在平面显示器上会有很好的效果,但在头戴显示器中会让人晕眩)。还有需要注意的是,要让头显视角全程响应使用者的头部运动,永远不要锁死视角。总的说来,就是要避免任何原因导致的视角变化和使用者动作的不匹配。


头部上下晃动

在有的第一人称游戏中,镜头会随着运动轻微的上下晃动以模仿真实走路时的视觉效果。这种方式在电脑或电视屏幕上效果很好,但在沉浸式VR头戴显示器上采用时会对很多人造成困扰。每次镜头的上下晃动都相当于对使用者视角产生的轻微加速度,如上文所述,这一加速度会产生不适感。我们建议不要使用任何不基于使用者头部真实动作的上下晃动效果或镜头方向、位置变化。


前向和侧向移动

在现实世界中,我们最主要的行动动作是站立不动和向前运动。我们很少后退行走,也几乎不会“横移”(侧向移动)。因此让使用者做向前运动是最舒服的,而且向前运动能与有立体深度的场景共同造成一种景深感。前向运动时使用者视线往往集中在视野中央,中央视野是均匀且逐渐变化的,而周围视野是快速移动变化的。

左右侧向移动相比前向运动问题更多,我们一般不会侧向移动,因为在在这样的运动状态下视线焦点会不停从从一个物体跳向另一个物体。一般说来,你得尊重人体运动力学。现实世界中人体运动方式是有限制的,你也应该把这样的限制带入到你的作品里。

虚拟场景中上下楼梯或攀爬陡坡对很多人来说都是很不舒服的。这种敏感性似乎与“视错觉”有关(由视觉而不是实际运动引发的运动错觉)3。除了在垂直方向上的加速错觉,台阶同向移动的水平边缘会填充大部分视野。而使用者在现实情况下是不会看到这种场景的,除非他在移动时盯着旁边有纹理的墙或地板看。我们建议开发者在场景中谨慎使用陡坡和楼梯。这个警告同样适用于其他会产生强烈视错觉的场景,比如在电梯井里向上移动时四周的纹理光影向下方移动。

强烈建议开发者认真思考这些指南在执行过程中对使用者产生的实际影响。举例来说,在控制列表中取消侧向和后向移动在理论上似乎是可行的,但这样做会强迫使用者采取更多的动作去实现位置的改变(比如转向、前行、然后再转向)。除了会影响用户体验,多余的动作会带来更强烈的虚拟现实晕动感,因为这会让使用者觉得不是自己在控制身体或视角(比如在翻越障碍时复杂的动作)。所以说,最宽泛的建议和道理也并不一定适用所有的内容和环境。因此,为了实现最好的用户体验和舒适度,通过周密的考虑、大量的用户测试和反复的修正设计就显得尤为关键。


2 So, R.H.Y., Lo, W.T., & Ho, A.T.K. (2001). Effects of navigation speed on motion sickness caused by an immersive virtual environment(运动速度对沉浸式虚拟现实环境下晕动症带来的影响).

Human Factors《人因工程学期刊》, 43 (3), 452-461

3 Hettinger, L.J., Berbaum, K.S., Kennedy, R.S., Dunlap, W.P., & Nolan, M.D. (1990). Vection and simulator sickness(视错觉和虚拟现实晕动症).

Military Psychology《军事心理学》, 2(3), 171-181.

4 Stanney, K.M. & Hash, P. (1998). Locus of user-initiated control in virtual

environments: Influences on

Cybersickness(虚拟环境中的用户控制行为轨迹:对虚拟晕动症的影响)

Presence, 7(5), 447-459.

 

附录F - 追踪

 

Rift上的传感器能收集使用者头部水平转动,左右倾斜,上下摆动等信息。位置追踪会在未来版本加入。

在SDK的演示中使用Head model代码模块来调整镜头转向

通过优化你引擎的渲染管线来降低延迟。

使用Oculus VR的预测追踪代码(SDK的演示里有)来进一步降低延迟。

如果延迟无法避免,那么保持不变的延迟会比不断变化的好。

 

转向追踪

Oculus Rift硬件带有一个陀螺仪,一个加速度计,和一个磁力计。我们用“传感器融合算法”处理这些传感器信息,从而得到使用者头部的真实转向,并同步使用者在虚拟环境的视角方向。通过这些传感器提供的数据可以精确追踪和还原水平转动,左右倾斜,上下摆动等动作。

为了将头部转动转化为镜头转动,我们建立了一个相当简单的头颈模型来精确翻译传感器信息。我们称之为“head model”,该模型基于一个事实:头部在三个方向上任意一个方向的旋转,实际上都是以脖子上靠近喉咙的位置为原点的旋转。这意味着随着头部转动,视觉看到的图像也需要转变,才能生成运动视差,才有景深感,并比较舒适。


位置追踪

DK1 Rift只能追踪使用者转向(头部旋转),不能追踪位置变化。而在三维空间中,一个实体有六个自由度(x,y和z位置和沿着x,y,z转动),如果要充分理解它的姿态我们需要知道它的转向和位置[注释5]。如果没有增加位置追踪硬件,使用者只限于用鼠标或游戏手柄来调整位置信息。这样就无法进行符合使用者行为的自然操作,比如在虚拟现实中走到角落探出头看看。Rift的未来版本将会支持即插即用的位置追踪。


延迟

我们定义延迟为使用者头部移动到新图像显示的时间差(运动到显示),这包括了传感器反应,传感器数据融合,渲染,图像传送,显示器刷新的时间总和。

延迟最小化是产生有沉浸并且舒适的虚拟现实体验的关键。 而低延迟的头部追踪也是Rift区别于其他技术的关键。在游戏中越低的“运动到显示”时间延迟,越能够给使用者提供有沉浸感且没有不适感的体验。

一个降低延迟影响的方法是使用我们的预测追踪技术。这个技术不是通过降低“运动到显示”这一渲染管线的时间长度来起作用,而是利用渲染管线中的信息来预测使用者将

会向哪里看。这样是通过预测使用者转动后将会看到的地方并提前局部渲染那部分环境,而不是传感器读取数据时使用者刚好看到的那部分环境,来补偿读取传感器数据到渲染后图形显示出来的延迟。我们鼓励开发者使用SDK里面的预测追踪代码。这个机制的详细工作原理请参考Steve LaValle的博客http://www.oculusvr.com/blog/the-latent-power-of-prediction/ 和参照相关的SDK文档。

对Oculus来说,我们认定实现引人入胜的虚拟现实的延迟阀值是20毫秒。多于20毫秒,使用者在虚拟环境中就会感到不够沉浸和舒适。当延迟达到60毫秒时,使用者头部移动和虚拟世界的移动的间断将会让人感到图像不同步,引起不适和方向错乱。高延迟被认为是引起虚拟现实晕动症的主要因素之一。任何情况下,延迟都会给使用者交互和临场感制造混乱。很明显在理想状态下,越接近零延迟越好。

现实情况是无法达到理想状态的,不过我们通过一些研究文献发现延迟也是有差异的。有些研究表明在特定误差范围内变化的延迟跟长延迟一样让人不适。而另一方面,有些研究表明如果延迟保持固定不变,即使延迟提高也不会造成不适感加重。这表明人们最后能习惯于固定不变且可预测的延迟,而波动且不可预测的延迟总是引起不适。

 

附录G - 晕动症分析

 

“虚拟现实晕动症”指的是使用虚拟现实环境时,出现的不适症状。

主要归因于视觉和身体感觉的冲突

导致虚拟现实晕动症的因素有很多,包括但不限于以下这些

加速度:降低加速度的大小和出现频率

控制程度:不要剥夺使用者的控制权

体验长度:要允许并鼓励使用者体验一会儿休息一会儿

视角高度:不要让视野里看到的大部分都是地面

双目视觉显示:有些人会觉得看立体图像不舒服

视场:一个少许狭窄的视场可能降低不适感

延迟:延迟和掉帧在虚拟现实里会让人很不舒服

变形复原:用Oculus Rift的SDK自带的变形复原算法

闪烁:不要显示闪烁的画面

年龄:现在还不知道年龄和虚拟现实晕动症的关系

经验:越长的虚拟现实使用经验会提高你的虚拟现实晕动症耐受度。所以开发者自己是最不推荐的测试用户

 

简介

 

虚拟现实晕动症与你平时经历的晕动症不同,这是一种由视觉诱发的晕动症。晕动症带来的主要不适感是由于在没有发生实际运动的情况下,虚拟环境给出了移动的视觉信息造成的,而大家所熟悉的一般晕动症是由真实的运动带来的(如摇晃的船舶带来的晕船)。在这两类情况下,都存在着视觉和前庭感觉间的冲突。此外,虚拟现实晕动症还会产生在虚拟现实环境下特有的症状,如眼紧张/疲劳。有的使用者会在使用头戴式显示器短时间内产生虚拟现实晕动症,而有的人却从不会产生这类症状。

虚拟现实晕动症给使用者和开发者带来了严重的问题;不管你的软件内容从根本上有着多好的吸引力,或是使用者有多么急切的想体验它,没人愿意因此去忍受虚拟现实晕动症。因此,理解这一问题的成因并采取策略最大程度的降低其发生几率显得尤为重要。不幸的是,虚拟现实晕动症的确切成因仍在研究之中(其他任何形式的晕动症也一样)。虚拟现实晕动症有着复杂的病理成因,这些原因都是产生不适感的充分条件但不必要条件,而要真正实现虚拟现实晕动症的“治疗”却要把这些问题全部解决。

Oculus Rift的出现给这个复杂情况增添了新问题。虽然我们的确对虚拟现实晕动症的基本成因有了一定的了解,但对Oculus Rift的技术和应用实例却未在现有文献中进行过模拟研究。

虚拟现实晕动症有一系列症状,但主要特征有:迷失方向(包括共济失调,一种平衡丧失感),恶心(应该是来自于视错觉,对自身运动的虚幻知觉)以及动眼神经不

适(例如,动眼神经为纠正视觉错误而连续运转,带来眼部疲劳)。这些问题都反映在研究者用于评估虚拟环境使用者症状所用的虚拟现实晕动症调查统计表中(SSQ)9。


虚拟现实晕动症的理论

感觉冲突理论是虚拟现实晕动症理论中最被广泛接受的,这一理论认为视觉和身体(前庭感受和本体感受)运动知觉间的不匹配导致了不适感10。换句话说,就是视觉告诉你在移动,但身体感觉仍在原地。这是当前VR的基本现状,例如我们想扮演走路的感觉,我们只能从视觉上实现,而使用者不用真的去走。有的厂商积极尝试着通过运动平台和跑步机的方式给使用者带来适当的运动感,虽然这些产品可能会带来更复杂的情况和新的问题。

此外还有两个截然不同的理论,给出了虚拟现实晕动症成因的其他解释。第一种为毒理论,认定是由于摄取了毒素所以前庭感觉系统和视觉系统才会产生冲突。该理论认为,恶心和呕吐是一种感官冲突,是为了让动物吐出胃内的毒物或是避免摄入任何有可能包含毒素的食物而进化出的适应行为。而晕动症的形式被理论解释为:由于使用者身体感受到感官冲突与中毒时的感觉一致,使用者的身体便认为自己中毒了,因此就会做出恶心和呕吐的反应。11

第二种为姿势不稳理论,认为持续性的姿态失控导致了虚拟现实晕动症及其他类型晕动症,因为使用者主体接受到了矛盾的信息导致人体常规的姿态控制策略失效12 。虽然这套理论无法说明为何不稳定状态会导致晕动症,但这套理论在预知何时会发生什么程度的虚拟现实晕动症及其他类型晕动症上却是有效的。

请注意,不管基础理论是怎样的,增加使用者视觉、本体感觉、前庭知觉和运动系统感觉间的一致性将减少甚至消除虚拟现实晕动症。


9 Kennedy, R. S., Lane, N. E., Berbaum, K. S., & Lilienthal, M. G. (1993). Simulator sickness questionnaire: An enhanced method for quantifying simulator sickness. The International Journal of Aviation Psychology, 3(3),

203-220.

10 Reason, J.T. & Brand, J.J. (1975). Motion Sickness. Academic Press, Inc.

11 Treisman, M. (1977). Motion sickness: An evolutionary hypothesis. Science, 197, 493-495.

12 Riccio, G.E. & Stoffregen, T.A. (1991). An ecological theory of motion sickness and postural instability.

Ecological Psychology, 3(3), 195-240.


增加虚拟现实晕动症的因素

我们很难找到某个导致虚拟现实晕动症的特定原因;不同的使用者会有不同的体验,而症状可能需要一段时间(从几分钟到几小时)才能显现出来。作为一个VR设计师,你会花上大量时间沉浸在VR世界里,而长时间暴露在虚拟环境中会让你的大脑对虚

拟现实的晕动效益变得不那么敏感。因此我们预计那些专注的VR设计师和使用者会没有其他使用者那么敏感。从另一方面来说,在判断所设计内容会否产生不适感时,不考虑那些未曾习惯于虚拟环境的使用者的反馈意见,则会产生问题。

晕动症敏感度因人而已,并与发生虚拟现实晕动症的敏感性是相关的。这意味着那些知道自己容易晕车、晕船或有其他晕动情况的使用者就应该小心使用Oculus Rift。遵照这本手册中的建议会给使用者带来帮助。

在接下来的部分中,例举了那些被研究过,会造成虚拟现实晕动症的潜在因素。虽然有的因素较其他因素而言,更不易受设计师的控制,但充分理解它们能帮助你更好的降低使用者的不适感。还要说明的是,虽然这一章节的部分信息在其他章节中也有提到,但这章节更为详细地解释了这些因素在虚拟现实晕动症中所扮演的角色。


运动的速度和加速度的大小

运动的速度与虚拟现实晕动症的发病快慢成正比,但不一定与后续症状的强度和恶化相关14 。较慢的移动速度一般情况下会让人舒服,而真正值得我们警惕的是我们内耳前庭系统所感知到的加速度。由视觉而不是前庭器官传达的加速度(无论是任何方向上的线性加速度或是角加速度)会构成感官冲突,从而带来不适感。非正式的研究表明,为达到同样的移动速度,瞬时加速度会比持续性、渐进性的加速度感觉更舒适。

不适感与加速度的频率、大小及持续时间构成函数关系。因为任何一个阶段的加速度都意味着一个阶段的感官冲突,我们最好尽量避免这样的情况。


控制的程度

将镜头的控制权从使用者手中拿走或是让镜头的运动与使用者控制的不一致,会带来虚拟现实晕动症。一些理论认为,可预知和可受控的运动在防止晕动症中起到作用15,而这一原则似乎同样适用于虚拟现实晕动症。因此,不为使用者所控制的镜头移动(或急停动作)将会带来不适。

如果你设置了一个重大事件让使用者观看(比如一个过场动画或关键环境事件),避免代他们将目光移过去,而是尝试提示他们自己将目光转移过去,比如让电脑控制的非用户角色(NPC)看向这些事件,或是以音效提示使用者,又或是将一些任务相关的目标放置在事件周围(例如敌人或是可拾取物)。

如前所述,不要将使用者视角镜头和使用者的运动分离开。


时长

你在虚拟环境里待的时间越长,越容易产生虚拟现实晕动症。尽量让使用者可以在任何时间点停下休息,然后从刚才停下的地方再继续。适当的在游戏存储点提醒使用者休息下,这样能避免使用者在你的游戏沉浸太长时间了。


高度

使用者的高度,也就是他视线的高度,也会是虚拟现实晕动症的成因之一。如果使用者的视线比较低,地面会占据他的很大一部分视野,而且地面会在一直动。这在视觉上会产生比较剧烈的感觉。这样的话,会让使用者不适。同样的道理,走长段的台阶也会让人有这种强烈的视觉感受而感觉不适。


双目视觉显示

虽然双目视觉成像是Oculus Rift一个很重要的深度信息,它有它的不足之处。在一定的情况下,立体画面会让使用者的眼睛聚焦到一定距离的点,但眼睛的晶状体又没有聚焦到那个点。正因为这个原因,我们不建议强制使用者去长时间的看一个近距离的物体(比如HUD)

有些人觉得看立体画面很不舒服,而且有的研究还表示平面显示可能比立体画面让人更看了更舒适。然而从早期的Oculus Rift的反应来看,还是立体画面要比平面画面更舒适。现在关于到底怎么使用平面画面内容比较好还没有定论,需要更多的研究。这个问题也因为头部转动的问题变得更复杂了,因为左右眼在转动的时候接收的信息不一样。安全起见,现在不建议使用平面显示的内容。


视场

大的视场更容易产生虚拟显示晕动症,原因有二。第一,运动的感觉在头盔这种硬件里让人感觉更强烈,让人对器件光学瑕疵和闪烁很敏感。第二,一个大的视场也意味着更多的视觉信息。这么多的视觉信息告诉使用者他在运动,身体感官和视觉的冲突就更强烈了。

降低视场可以减低虚拟现实晕动症,但也降低了沉浸感。所以应该给使用者一个方式来根据他自身的情况来调节。HUD之类的直接打印在视场上的信息应该不被影响,完全可以显示在dFOV外。用一个驾驶舱来限制使用者的视场而让他觉得自己在一个封闭空间里坐着,也能达到同样的降低晕动症的效果。不过还是需要更多的研究来证明驾驶舱到底有没有用。

不正常的虚拟场景内的头部转动也会让人不适,比如使用者转了5度,但在虚拟场景里的视觉转动了10度。这种不一致会影响前庭眼动反射的正常工作。人的眼睛和前庭一起工作来决定在你头转动的时候眼睛要跟着怎么转动,这样来保证视线的稳定。如果虚拟场景里这种补偿机制失调了,就会让人不适,甚至在不用Oculus Rift后还会有觉得不适。


延迟

以前的研究对于延迟和晕动症的关系是有争论的。很多专家建议最小化延迟,因为头转动和视觉的延迟会产生感官冲突,并影响前庭眼动反射机制。不过也有一些研究说,只要延迟是恒定的,那不管是48毫秒还是300毫秒都一样。在驾驶舱里,因为变数太多,就算是恒定的延迟,时间越长也会越晕。

虽然做为内容开发者,很多延迟是控制不了的,比如显示刷新率,硬件延迟等。不过一定要保证你开发的内容在推荐配置下不会产生额外的掉帧和延迟。很多游戏在画面渲染物件太多太复杂的情况下就会掉帧。这在现在看来问题不大,但在虚拟现实里就会让人很不舒服。


变形复原

Oculus Rift里的镜片会把图像变形,而SDK会在渲染管线里把它补偿复原掉。这种复原很重要,一定要完全按照SDK和demo里提供的方法去做。我们的研究对于变化很敏感。有些变形看上去对了,但也会产生方向迷失和不舒适的感觉,所以关注细节很重要。所有跟变形复原相关的参数一定要跟硬件匹配,不能让使用者去自己调。 SDK的demo里让你去调只是为了让你看下调整后会是什么样子。

我们一直在调节这些参数来匹配Oculus Rift的镜片,而且将来也将继续去完善它。所有的开发者都用该用这些官方参数来做图像变形复原。


闪烁

闪烁在刷新率低于60赫兹的CRT和OLED显示屏上最常见。Oculus Rift开发版1是LCD屏,而且刷新率达到了60赫兹,所以不会有闪烁问题。不过这里还是要强调,闪烁是造成虚拟现实晕动症很主要的一个因素,而且会让人很不舒服。这种情况在大视场和高亮度下就更明显了。虽然适应一段时间后,闪烁造成的问题会减弱,但还是会让人头痛和视疲劳。这个问题对于内容开发者基本上做不了什么,这里只是跟大家说明下。千万不要开发很闪的东西给使用者去看。高对比度,在1-20赫兹下的闪烁可能会引发癫痫。


年龄和晕动症的关系

晕动症(晕船晕车)对于越年纪小的人越明显,但现在还不知道同类的理论是否也适用于虚拟现实晕动症。如果是一个模拟现实中已有操作的虚拟现实体验,现在的研究反而表明年长的人会比没有经验的小孩子更受虚拟现实晕动症影响。从DK1使用者的个人传闻来看,年轻人也确实比成年人对虚拟现实晕动症更有抵抗力也更容易恢复。如果是这样,那说明晕动症的年龄相关因素和虚拟现实晕动症不一致。但这

些传闻和研究里面,也没有排除其他的可能,比如年长的人更容易决定不玩Oculus Rift,也有可能是小孩子对于感官冲突的感受没那么明显。

在一个基于1000名15-53岁的人的实验中,表明一个人对于晕动症和虚拟现实晕动症的耐受程度成正比,但年纪因素没有结论。这只能说明,我们可以根据一个人晕动症的情况来预测他可能的对于虚拟现实晕动症的耐受程度。


经验和虚拟现实晕动症的关系

一个人体验虚拟现实的时间越多,越不可能产生虚拟现实晕动症。现有理论是,因为人自身(无意中)学习了一套机制来体验虚拟场景和内容。比如,我们的大脑掌握了怎么去重新解读视觉误差的机制来使运动更稳定。这样说来,好消息是开发者可以为已经习惯了虚拟现实体验的用户开发更激烈的体验。但坏消息是,对于大部分用户,需要时间来习惯Oculus Rift和你的游戏,才能很好的体验这些内容。

这里同时引出了几个矛盾。首先,那些一直在测试自己做的内容的开发者会比新用户更接受虚拟现实体验。这样的话,就需要找一批对虚拟现实晕动症耐受程度不一样的新用户,来测试你开发的内容到底有多舒适。第二点,不要把新用户一上来就扔到很激烈的虚拟现实体验中。你应该先让他们做点微弱,节奏慢的互动来习惯下。如果能把这个指南里提到的那些应该给使用者去控制的参数让他们自己去调节就更好了。第三点,如果你的游戏里有比较激烈的内容,那你应该事先提出警告,让使用者自己去选择最能接受的方式去体验。

 

附录H - 用户界面

 

StereoConfig类可使2D内容转换成虚拟现实内容

HUD

把HUD做成3D空间的一部分

把准星直接画到目标上去,不要把它放在一个固定的深度不变

最理想的状态是把HUD和它表达的内容融入到整个环境里去

长时间近距离使用武器可能会导致眼睛疲劳。 当不使用它们时把他们隐藏起来。

给用户一个虚拟环境里的身躯

 

移植2D元素

为了快速移植2D内容(主界面,UI元素等),StereoConfig类创建一个映射矩阵,来将一个虚拟的二维层投影于用户视界前方0.8米处。这主要是用于ui迅速实现但这不应该是最终的完善的方案。


HUD

HUD在立体成像集成时会有一些问题无可避免的出现,因为HUD会被渲染在其他所有3D场景物件的前面。在非3D立体游戏中这个问题则完全不存在,因为我们默认HUD就是在所有物体前面的。不幸的是,以不同的双眼深度线索来添加双眼差异时会导致一些新的问题出现,如果一个物件在HUD的前面,但使用者又默认HUD应该在所有物件前面来覆盖所有物件,就会有矛盾。

这里给出一个尝试性的解决方案,将HUD的距离调整为更为接近用户,参考距离20厘米(我知道这是一个矛盾的建议,在前文中曾给出的参考距离为50-200厘米) 。这可以减少视觉冲突,但是画面就会远远落后于HUD所营造出的立体空间。当他们使用时需要不断地在HUD特写和远处画面中不断地切换眼睛的聚焦点。这样的切换与变化会迅速导致视疲劳与视紧张。

将HUD恰当整合成立体场景有许多可能性。例如,碰撞检测可以用于防止用户过于靠近

HUD中的目标,还可以防止(目标画面)被裁减(不完整展示)。然而,当用户无法靠近他们想要接近的对象时,这种限制会导致用户与虚拟环境交互时感到不自然。

另一个做法是把HUD做成一个在3D场景中的2D平面,而不是盖在所有物件前面的平面。这样,当3D场景中的对象比HUD更接近人的视线时,3D物件就会盖住HUD。这是一种很自然的方法,但是从用户视角来说,这也将暂时阻碍着使用者看HUD。

尽管HUD中的元素是2D的,HUD在你的面前呈现的却是一个3D的实体。我们发现最有效的策略之一是将HUD设定成一个透明的半球,好像图三中的头盔面罩(参见图3)。这种方式比较合情合理,但你也要考虑这种方式跟你制作的VR内容是不是搭配。

立体VR对于准星的做法也提出了新挑战。准星本身应该直接绘制于场景中的对象,以便于用户的眼睛瞄准目标时来集中焦点。如果准星出现在一个不同于双目焦点适应与聚合的视平面外的深度平面上,它被认为是模糊的并且重影。准星本身可以近大远小,或者由你来规定她的绝对大小。这在很大程度上是由设计师决定的。当然,变化大小的准星可以让用户来作为判定目标远近的线索。

把准星直接画在目标距离上的这个方法也让一些开发者决定把HUD也画在同样的距离上。不幸的是,HUD庞大的体积意味着深度改变带来的变化会使使用者产生误判。

一般来说,在体验时离使用者最近的虚拟世界中的物体应处于屏幕的下方(对象、家具、人等),屏幕上方出现的是距离较远的物体,如天花板天空等。你可以考虑把HUD尽量画在屏幕上半部分。

我们建议少用HUD。取而代之的是,在场景中嵌入需要的信息。在必须使用HUD时,你要在你的设计中考虑深度线索冲突、剪裁、以及碰撞的问题。

如果你确定要使用HUD,那么选择用户数据调整也是你需要考虑的问题。某些用户对于HUD的距离体验有着不同的偏好。些人很难在真实世界之间与HUD间自由视线切换,所以他们更想这其中的距离更大些 ,即使这意味着HUD有时候会被场景中的物体盖住。其他用户不喜欢的HUD距离偏远,他们更喜欢它距离更近,但这会让另一部分用户眼睛疲劳。对于这个争论似乎没有标准化的理想距离,所以我们强烈建议寻找一种简单有效的方法来快速调整HUD的距离,在20厘米到20 m之间调节。


虚拟人物

虚拟人物是用户的身体处在一个虚拟世界的表征,通常对应于用户的位置,运动和手势。用户可以看到自己的虚拟身体和观察其他用户并与之交互。因为VR常常是第一人称的体验,许多VR应用把人物切分成很多块来分别操作,所以整个虚拟人物都是由这些独立部分组成的。

除非你制作的游戏里用户是隐身的,否则你应当给用户一个可见的“化身”。它可以是任何东西,从一个模糊的甚至于鬼怪般的象征,或者是一个有血有肉真实存在的躯体。这可以帮助用户快速融入虚拟空间。因为我们看不到自己的头,所以这虚拟人物应当也是无头的(当然,除非在镜子里看到自己的样子),就好像在虚拟的脖子上方放置了一台相机。

鉴于人类脖子能够弯曲摆动的幅度有限,虚拟人物的身体只可出现在图像的边缘(如图4)。任何武器或工具应当与虚拟人物恰当的结合,使所以用户看到的武器是化身切实持有的。如果你开发的游戏有体感输入,那就应该用尽量小的延迟来反映用户的手脚操作。


武器和工具

在第一人称射击游戏中,武器通常出现于屏幕底部,位置同步于用户的手持方向与射击目标。这也这意味着武器在视线很近的地方。在经典的非立体游戏中这一般不会产生多少问题 ,我们接受所看到的特写对象叠加在一个场景中的这种设定并认为其处于正常距离。

然而,当我们需要把这变成立体游戏时,事情远远复杂得多。把武器渲染在视线那么近的地方,会要用户在武器和场景物件间不停的做视线切换。另外,因为武器是距离观众非常近,左视图和右视图会产生显著差异,难以生成精准的三维视图。

我们找到最佳方法是将摄像机定位略高于脖子的地方。武器和工具都渲染为用户的角色的一部分,这样要用的时候举起来,不用的时候就看不到。

这里说一些小聪明的方法来渲染武器和工具。虽然我并不是很支持这样的做法,但你的内容可能适合这些方法。一种可能性是使用2D方式来渲染武器,渲染在你的HUD的后面,如果你有HUD的话。这解决了视线不停远近切换的问题,但你的武器看上去就是平面的了。

另一个可行的方法是用不同的骨骼来控制,这样近距离的物体(如驾驶舱,头盔,枪等)可以独立于主世界,独立使用一个不同的(虚拟)相机使其从环境中分离。这个方法运行时容易导致一些显示上的问题,比如前景对象的视觉效果比身后的背景实立体的镜像远。

进行迭代试验和用户测试可能会找到更为适宜的问题解决方法,这方法可能不同于任何本文中涉及到的方案,但我们目前的建议仍旧是使武器和工具成为用户的化身的一个实际组成部分。

 

附录I - 用户输入和导航(移动)

 

对于虚拟现实,传统的输入方式都不够理想,而游戏手柄是现有最好的选择;虚拟现实需要探索出新的输入方式(Oculus已经着手在做了)。

戴上Rift后,使用者无法看到输入设备;所以要使用最熟悉且不用看的输入方式。

利用Rift的传感器来控制输入(比如用头部瞄准),但是注意避免让人头晕的交互方式,特别是在头部动作引起虚拟世界变化时。

在虚拟现实里移动可能会引起奇怪的问题

想办法提供给使用者一个类似“坦克模式”的设置项,包括重设移动方向到视线方向的开关。

 

鼠标,键盘,游戏手柄

开发者必须知道一旦使用者戴上Oculus Rift,他们就彻底看不到外部世界了。他们无法看到键盘,鼠标,游戏手柄或显示器。一旦他们进入虚拟世界,只能通过触摸来和设备交互了。 当然这并不奇怪,我们已经习惯了通过触摸来操作输入设备,不过还是要使用眼睛来找初始方位和校准(比如改变手在键盘上的位置)。这种新交互方式会对交互设计产生多方面的影响。 比如,使用键盘来输入就会很棘手,因为只能通过触摸才能找到特定按键或主键位置。鼠标就比较容易点,只要使用者在戴上设备前记住鼠标放在哪里。

虽然还不是最终解决方案,手柄已经是最普及的传统控制器。使用者双手可以紧握手柄,而不会因为人体工程因素,必须将双手放在桌面上来使用更加复杂的控制设备。因此在没办法看到的情况下,越自然越简单的控制设备,越容易使用。

受限于虚拟现实和Rift设备,我们认为手柄会比键盘加鼠标更加合适。必须说明这两种输入方式都不够理想,Oculus正在寻找最创新最自然的输入方式,来应对各种各样虚拟内容的交互。


其他输入方式

作为鼠标和控制器的替代方案,一些虚拟现实游戏让使用者能够用头部瞄准,比如使用者用放在视野中心的十字标或光标来瞄准,并搭配其他输入设备。必须通过进一步研究才能检验这种控制组合的有效性和舒适度,不过这种组合已经出现在早期的虚拟现实游戏上了。

Rift主要使用传感器的转向和加速度(以后还有位置)数据,来转动和控制虚拟镜头,其实我们可以在特定的控制组合中使用这些数据。比如用在眼睛,头部或者躯干控制的动作上。 举个例子,使用者看着移动方向并前倾头部或者身体,就能够向那个方向移动。

这里提醒那些无畏的创新者要在向大众发布新控制方式前,进行大量的用户测试, Oculus VR的办公室已经收到过很多令人晕眩或抓狂的控制器原型,很多都是无意造成的。直立倾斜动作就不能轻易尝试,在虚拟旋转中倾离身体轴心,就会造成“伪科里奥利效应”,实验证明这种效应会加重晕动症。 而如果设计得好,创新的输入方式将会比传统设备更加舒适和自然。


导航

对于大多数使用者来说,在虚拟世界里移动是通过某种输入方式来实现,而不用真的站立起来走动。通常的做法类似于目前主流的第一人称游戏的导航方式,用游戏手柄或者鼠键控制。遗憾的是,虽然传统控制器用来视频游戏导航很方便,有时也会在沉浸的虚拟现实中引起不适。举个例子,前面章节就描绘了平移和退后动作在虚拟现实中也会引发虚拟现实晕动症,却不会在在游戏主机和PC游戏上出现。我们现在已经在研究新的控制组合来实现虚拟现实导航。

还有其他新的控制组合被用来提升移动时的使用者舒适感。典型例子是,在传统控制组合里按住“向前”键就会沿着镜头指向向前移动。现在开发者可能还会使用“坦克模式”或者“坦克视角”来导航,这种导航是用输入方式来控制移动方向,而单独用头部运动控制镜头。例如,使用者会通过按住向前键向直路走,同时头部自由地四周环顾。就像逛商店货架区一样,腿沿着货架区的通道走,而头部则能够转来转去来看看通道旁的四周的商品。

这种新控制组合有利也有弊。来自Oculus办公室的一些使用者发现这种控制方式比传统导航方式更加舒适(应该还包括那些已经实现这种控制方式的开发者)。另一方面,这种组合又引发了新问题,会引起不适,并带来用户体验上的问题,特别是在使用者头部方向和移动方向不一致时,因为使用者的头和身体都在椅子上一起转动方向了,使用者想要向面对的方向移动时真实身体却是斜对着的。所以开发者想用这种导航方式时,必须提供给使用者一个简单操作,用来重设使用者“坦克”朝向到使用者的直视方向上,可以是摇杆或者按钮。

不同使用场景下更深入的试验才能最终确定“坦克模式”的舒适度和有效性,不过可以通过添加一个用户选项,将它作为传统控制组合的替代方案提供给使用者使用。

目前情况下,只要开发者能够避免上面的问题出现,那么对大多数使用者来说,传统输入方式已经足够安全实用了。

有些内容还提供了可以在虚拟空间里面自由移动的新方式。举个例子,使用者可以玩不同场景,每次都从一个新位置开始。一些游戏通过画面逐渐变暗来提示玩家睡着了或者失去意识,然后随着故事情节发展在别的地方醒过来。这些约定移植到虚拟现实中也没什么大问题。不过需要注意的是在虚拟空间中实现位置跳转有可能会引起方向迷失(比如偏右30度跳跃到地图上另一个位置),如果强制镜头表现整个跳转过程时,还会造成不适。

 

附录J - 创建内容

 

时刻记住,使用者在使用Oculus时,应该在任何时候,任何地点,做任何事时都保持沉浸感

当你创建你的游戏内容时,要考虑Oculus Rift的分辨率限制。

低多边形建模的欺骗手法(比如凹凸贴图或者平面物体)在立体3D场景中非常明显,尤其是近距离观察这些模型时。

游戏音效对沉浸体验是决定性的; 设计音效范围时要谨慎,而且要考虑到使用者可能使用的音频输出设备。

Oculus设备的工作范围是一米;1单位为1米。

使用Oculus配置工具为使用者在虚拟环境中设定他们的尺寸可以得到更好的游戏体验。(可选)

 

设计考量

设计虚拟世界是很苛刻的。

游戏设计者在这里很难直接控制使用者看哪个方位,因为Oculus的使用者可以在任何时候转头看向任何位置。

那些摄像机对头部反应的限制会使使用者在虚拟世界感到非常不舒服。

为了故事的剧情或者某些技术上的目的来约束摄像机的运动范围是无法实现的。

确保Oculus使用者在任何时间环顾四周时不会破坏游戏沉浸感,比如在虚拟环境中表现任何技术欺骗时。虚拟世界应该保持全方位的完整。

多用点动态的效果,比如物理,光影,天气,腐烂效果等。立体感最能体验在距离近的物体上,距离远的物体就不是那么明显了。


游戏资源

尽管Oculus Rift将在未来改进该设备的分辨率,但Oculus宽广的视野意味着仍然需要一段时间才能赶上传统显示器的分辨率。

不过,即使Oculus的分辨率非常有限,它依旧能创造一个完整的沉浸体验——但你应该注意分辨率的限制。

当物体的尺寸横跨整个显示器时,可能会出现很多细节上的问题。

物体越细长,在Oculus设备中越难看清。

一些精巧的细节,比如文本或者微小的物体,在目前的分辨率中很难看见。

同样的,由重复元素组成的物体,比如栅栏或一些重复使用的贴图,在显示时也可能出现问题。

当你在创造你的世界时,确保你在设计过程中的所有场景都用Oculus Rift观察过。

注意观察那些看起来正在闪烁的物体。

避免创建很小的物体;如果可能的话,避免创建微小的物体。

这些建议对几何纹理贴图同样适用。

很多实时3D应用程序,比如游戏,已经有一些技术保证在渲染复杂场景的同时可以保证帧率

一些在一般游戏中正常显示的特效可能在立体3D场景中看起来很假。

纸片精灵会看起来非常平,尤其是当他们有锋利的细节时(灯光,火)

对于模糊的物体,试着只使用纸片, 比如烟雾,薄雾,或者远处的背景元素。

法显贴图在虚拟现实中并不会有明显的效果,除非和视差贴图结合。(在这个情况中,请确保每个虚拟眼都有正确的视差贴图

即使在当前这有限的分辨率中,你仍然可以用很多在非虚拟现实游戏中常用的欺骗眼睛的手法,但随着分辨率的改善,这些欺骗手法会变的越来越显而易见。


音效设计

音效是虚拟世界的两大主要表现形式之一。

高质量的音效可以弥补低质量的视觉体验,而且系统处理音效所占用的资源远低于处理视频特效所占用的资源,所以强调音效的重要性会是一个很有用的策略。

可以说,音效和场景沉浸感一样重要。

因为不断听到周围的声音会增强你对周围环境的感知。

为了让虚拟环境更加真实,设计者应该让使用者相信,即使在使用者没有观察某些位置时,这些位置依旧存在;声音特效可以作为一个有力的暗示,让使用者相信整个世界是持续存在的。

很多使用者会很自然的选择耳机作为OR的辅助设备。

在虚拟现实世界中,立体化的音效对耳机和扬声器有着不同的要求。

在虚拟环境中,虚拟麦克风要充当使用者的耳朵,而虚拟摄像机则充当使用者的眼睛。

在设计音效时应该考虑到:当使用者带着耳机时,音频输出源会随着用户的耳朵和头部运动。


扬声器系统则并非如此

虚拟麦克风在捕捉环境音效时,应该跟随使用者的位置。但耳机和扬声器的反应应该是不同的。

当使用者戴耳机时,麦克风应该随着使用者的头部旋转(基于OR的头部定位传感器)

当使用扬声器时,头部的动作则不应该影响麦克风的方向。

你的游戏内容应该支持两种模式,供用户选择扬声器模式或耳机模式

在更高级的音效设计中,真正的3D空间可以使用一些头部相关的函数(HRTF)

许多音效库已经支持HRTFs(包括Miles,DirectSound 和 OpenAL), 开发人员应该用到这些。


使用者和环境尺寸

尺寸是虚拟现实中的一个关键部分。

就好比在物理世界中,使用者会出于本能的用自身对比任何游戏物体的大小,这很容易告诉使用者他对比物体的尺寸(或整个世界的尺寸)是否错误。

对于大多数游戏来说,你要确保所有物体的尺寸都是正确的。

Oculus Rift处理摄像机距离和视野的软件,将以“米” 作为基本单位,所以你也应该以“米”作为参考单位。


在开发虚拟现实时,有三个数值是自由可调的:

他们分别是:

- 使用者从地面到眼睛的身高,

- 摄像机对头部运动的反应尺度,

- 以及用户瞳孔之间的距离。

 

所有这些都可以在SDK或用户的配置文件里调整,但应用程序可能会以不同的方式使用他们。

在默认情况下,我们不建议改变使用者的大小,这样可以防止使用者在游戏中迷失,同时可以获得最好的沉浸体验。

在很多游戏中,使用者的游戏内人物可能需要一个特定的高度

比如说,你可能希望场景中的某些部分能有效的阻挡使用者的视线,或者他们需要在一个特定的高度才能看见或与环境交互。

用户在虚拟环境跟自己身高不同不会产生不适,只要它不引起由地面移动去填补他们的视野(这加剧了相对运动错觉的体验)

然而,为了用户的舒适感,你必须保持用户的IPD和头部运动。

你可以通过缩放整个世界的尺寸来实现一些《爱丽丝梦游仙境》的效果。

尺寸是相对的,实际上,有两种方法可以让你的使用者感到巨大或者渺小:你可以依比利决定你世界的尺寸,或者决定使用者的尺寸(通过身高和ICD)

目前来说,我们建议只缩放使用者周围的世界尺寸,这样可以避免一些由于缩放使用者本身尺寸可能造成的模拟器晕眩问题。

如果你使用Unity工作,请使用单位“米”作为最接近真实世界的参考单位。

如果你正在创造一个真实的虚拟现实体验,你将会用到这个单位。

如果你正在创造一个幻想世界或者一个真实和虚拟交替的体验,你可以考虑不同的计量单位。

无论你的目标是不是现实主义的世界,我们都建议你,从早期设计到整个开发过程中,使用Rift去测试每个场景和资源。

确保你所创造的世界尺寸是平衡的,这样能带给玩家一个舒适的游戏体验,并能实现你想达到的艺术效果。

作为一个提醒,我们应该注意到,在虚拟环境中,人们的知觉会倾向于低估物体间的距离,所以即使是在一个尺寸完美平衡的世界里,偶尔也会看起来不对劲。

 

附录K - 最符合现实的虚拟现实开发思想

 

使用Rift,你将完全的掌控用户的虚拟现实世界,这是前所未有的体验,同时这也是对开发者的前所未有的挑战。

 

有一个问题‘怎样使虚拟现实更加真实?’这是一个非常广泛的且具有(不同)情境定义的问题,从中我们可以填补书籍中很多问题的回答。虚拟现实技术在目前很大程度上仍是一个神秘的未开拓的媒介,具有着无限潜能,等待着富有创造力的开发者们进行开发。

首先,虚拟现实需要考虑许多关于空间,维度,沉浸感,交互和移动方式的问题。这就比如传统的基于屏幕的媒体倾向于强调物体的在媒体中的直角和前进运动,但是在传统屏幕的媒体却总是有界限的(如屏幕的边缘)。这就是电影摄影技师口中所谓的“镜头”一词。但是对于虚拟现实技术,这里没有屏幕的界限存在,没有确切的物理边界,也并不存在摄像机角度的概念。除非你在用户使用时限定了门,窗户之类的特定元素,否则这里(虚拟现实世界中)并没有什么边界的限定。

在所有形式的媒体中,虚拟现实将会是最为贴近真实世界的体验。就像在现实世界中,他可以让你完全沉浸在他创造的虚拟世界中。除了沉浸式虚拟现实,你不可能通过其他任何方法来获得这种(如此真实的沉浸式的)体验。从前我们一直使用传统的平面式的显示器。 对于用户来说,(使用OR所获得的视觉维度)是完全的(是无限延伸的)。

这完全归功于虚拟现实(的目的是)试图完全复制(一个完全真实的)现实世界。 使用者期望可以得到与现实世界相交互的完全一样(简洁方便的)方式在虚拟现实中实现交互。 这将会是一个甜蜜的诅咒:开发者(只能)为用户带来日常熟悉的真实世界(中的体验)。 但是用户的期许却远远超过现在的技术局限。 浸入式(虚拟现实的)平衡性易用性和体验性只是我们在设计虚拟现实中的众多挑战之一。

本指南竭力为您提供最基本的最适当的设计的指导以实现开发虚拟现实体验。 现在轮到你来创造(独一无二)的虚拟现实体验了!我们翘首以待! 确保为最新的信息,请访问http://developer.oculusvr.com/best-practices


附录L - 健康与安全警告


在使用本头戴显示器前请先认真阅读以下安全警告以降低造成人身伤害、不适或其他可能损害的风险。


警告 任何人在使用本头戴显示器时如若出现以下症状,请立即停止使用:抽搐;癫痫;眼睛或肌肉痉挛;不自主运动;眩晕;定向障碍;视力模糊;失去意识;恶心;头晕;模拟晕动症(类似于晕动病);以及任何类型的头部或眼睛的不适与疼痛。


警告 常规说明与注意事项:请你在使用本头戴显示器时务必遵循以下说明并遵守注意事项,以减少造成损伤或不适的风险。


在佩戴本头戴显示器开始虚拟现实体验前,应针对单个使用者,用校准软件对头戴显示器进行校准。如若不遵循此条注意事项,可能会增加产生不适和虚拟现实晕动症的风险。

阅读并遵守本头戴显示器的操作说明和所有步骤。

孕妇、老年人、心脏病患者或有其他严重医疗状况者,使用本头戴显示器前请先咨询医师。

使用时出现严重症状或停止使用后症状依旧者,请立即就医。

在产生的症状消失前,不要驾驶载具、造作机械或从事其他一切类似的活动。

渐进式的使用头戴式显示器以便让你的身体慢慢适应,最初时,每次使用只几分钟即可。

使用中每小时休息10~15分钟,即便你认为这没有必要,休息时间因人而异,如果感觉不适请增加休息次数和时长。

请避免过度使用头戴显示器。

若使用头戴显示器过程中眼睛感觉疲劳、疼痛,或感到眩晕、恶心,请停止使用并休息。

尽可能以坐姿使用头戴显示器。

不要在疲劳、需要睡眠或正在酒精、药物影响的状态下使用头戴式显示器。

 

警告 癫痫发作:有些人(大约4000人中有1人)可能会因闪光或图案诱发眩晕、抽搐、癫痫病发作或暂时失去知觉,这种情况有可能会在他们看电视、玩视频游戏或体验虚拟现实的时候发生,即使他们之前从来没有发生过癫痫、暂时失去知觉或有过癫痫病史。任何曾今有过癫痫、意识丧失或其他与癫痫相关症状的人,使用头戴显示器之前请先咨询医生。


警告 模拟晕动症,视觉疲劳和其他反应:适用于使用头戴显示器产生的沉浸式虚拟现实体验,使用者可能会对这种体验产生反应,包括模拟晕动症(类似于晕动病)、知觉后效、定向障碍、姿态稳定性降低、视觉疲劳、眩晕和/或恶心、感觉人格解体(感觉像能看到自己的行为)或现实感丧失(感觉客观世界不真实)。当短时间或持续使用头戴显示器时,可能会触发之前所述的这些反应。如果你或你的家人有经历过这些症状,那在使用头戴显示器前请先咨询医生。


警告 儿童:

本产品不适用于年龄低于7岁的儿童。年龄低于7岁的儿童观看3D画面有可能造成永久性的视觉损伤。

父母应在儿童(7岁及以上)使用头戴显示器时观察是否会出现上面描述的症状。

父母应该监控儿童(7岁及以上)在适当的时间使用头戴显示器。

 

警告 注意周边环境:适用于使用头戴显示器产生的沉浸式虚拟现实体验,这种体验会干扰你对周围现实环境的感知。在使用头戴显示器时请时刻注意你周边的环境。尽可能保持坐姿,并请特别注意确保你没周边无他人,没有临近楼梯、阳台、窗户、家具或其他任何在你使用头戴显示器时或刚使用完时可能会碰到、绊倒、踢倒的物品,并且不要在使用头戴显示器时手持尖锐的或其他危险物品。


警告 无线电波干扰:头戴显示器会发射无线电波,会影响到周边电子器件的运行,包括心脏起搏器。

请不要在心脏起搏器9英尺范围内开启头戴显示器并使用无线功能。

如果你有心脏起搏器或任何其他植入式医疗设备,在没有首先咨询你的医生或医疗设备制造商之前,请不要使用头戴显示器的无线功能。

在诸如医院、机场和飞行中的飞机等场合下,请遵守所有有关于使用无线设备的规章制度。在此类场合下使用可能会干扰设备或引起设备故障,并导致人身伤害或财产损失。

 

警告 电击危险:用于减少造成电击的风险。

不要将头戴显示器溅上/投入水中或暴露在潮湿环境中。

清洁前请拔出头戴显示器的电源插头,清洁时只能使用干燥的布料。

让头戴显示器远离明火和其他热源。

不要改装或拆卸头戴显示器。

 

 

 

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

0个评论