开发者必读:Oculus官方最佳开发实践指南(下)

开发者必读:Oculus官方最佳开发实践指南(上)

追踪

综述

·Rift的感应器收集用户的偏航角、俯仰角和翻滚角信息。

·DK2支持6自由度位置追踪。

-提示用户如何设定一个舒适的初始位置。

-不要关闭或修改位置追踪,特别是当用户在现实世界中移动的时候。

-如果用户将要离开镜头追踪范围,应给于警告,并在追踪失效前将屏幕变黑。

-有了位置追踪,用户可以将虚拟镜头放在任何地方,因此要确保在虚拟场景中用户不会看到破绽。

·在位置追踪失效的情况下,使用我们SDK demo里的“head model”代码。

·优化你的整个引擎,尽量减小滞后和延迟。

·使用Oculus VR的预测性追踪代码(在SDK demo中可以找到),以进一步减小延迟。

·如果延迟实在无法避免,不平均的延迟要比持续平均的延迟更糟糕。

方向追踪

Oculus Rift头显中有陀螺仪、加速计和磁力计。我们综合这些传感器中的信息,通过名为“融合(fusion)”的过程来判断用户的头部在真实世界中的方向,并实时同步用户在虚拟世界中的朝向。这些感应器可以提供准确的偏航角、俯仰角和翻滚角的运动追踪。

我们发现了一个十分简单的头部和颈部模型,可以准确地将感应器中的信息从用户头部的移动转换到镜头的移动。我们把这个模型称为“头部模型”,这个模型证明用户头部在三个方向上的任意转动都是围绕着同一个点的,这个点在用户脖子的底部——靠近声带处。这说明头部的转动会使眼睛观察到运动视差,这是深度感知和舒适度的重要因素。

位置追踪

从DK2开始, Rift具有了6自由度的位置追踪。DK2的外壳是红外线可穿透的,在外壳里面是一系列的红外micro-LED,这些LED被RIFT配件中的红外探测镜头追踪。如果用户位于追踪镜头的探测范围内,位置追踪必须总是和用户的移动保持1:1的比例。改变位置追踪的反应会对用户造成不适。

我们的SDK会产生基于一系列点和矢量的用户头部模型。这个模型被置于一个初始点,这个初始点应该是当用户在镜头前舒适地坐直时,头部和颈部的转动中心的位置。

你需要让用户能根据自己的位置和镜头的位置来设定头部模型的初始点。用户在游戏中可能会移动,所以应该在任何时候都可以重置初始点。另一方面,你的游戏也需要提示用户如何选择最理想的位置,可以不离开镜头的追踪范围,并在体验中自由移动。否则,用户有可能无意中将初始点设在追踪范围的边缘,以至于在游戏中移动时脱离追踪范围。这个头部模型初始点的设定可以采用独立的“设置”功能。

上述的头部模型主要由三个矢量组成。第一个矢量大致与用户的颈部相映射,从位置追踪的初始点开始,指向“中眼”,也就是用户鼻梁的位置。另两个矢量从“中眼”开始,一个指向左眼的瞳孔,另一个指向右眼的瞳孔。SDK的文档中对此有更详细的解释。

位置追踪给体验和游戏玩法带来了更舒适和更具沉浸感的可能。玩家可以靠前仔细查看机舱面板,从墙角稍微探出身体窥视,躲避射过来的武器,以及其他很多玩法。

虽然位置追踪提供了巨大的潜力,它也带来了新的挑战。首先,用户可能会脱离镜头的追踪范围,因而失去位置追踪,这会造成很糟糕的体验(方向追踪在镜头的追踪范围内,或范围外都可以工作,这是利用自DK1上就有的IMU技术配合基于镜头的位置和方向追踪)。为了保证持续稳定的位置追踪体验,你需要在用户接近镜头追踪边缘时就发出警告。同时,还要给用户一些反馈,以便于他们调整到镜头能很好地追踪的位置。

我们建议在追踪失效前将屏幕渐变为黑色,这比在位置追踪失效的情况下看见虚拟环境要舒适很多。如果位置追踪失效,SDK中缺省情况下是使用方向追踪和头部模型。这仅仅是模拟了DK1的体验,但如果在现实世界中移动的同时,没有看到渲染的场景作出相应的反应,还是会引起不适。

另外,由于有了位置追踪,用户现在可以把虚拟相机移动到以前不可能到的位置。例如,用户可以查看某个物件的底部,或者绕过障碍看到在传统游戏中看不到的部分场景。一方面,这提供了新的交互方式,如从掩体里稍微探出头观察周围环境。但另一方面,用户可能会看到一些你本想隐藏的地方。所以要注意场景中的美术资源不会破坏用户的沉浸感

与此相关的一个问题是用户可能会利用位置追踪穿透虚拟世界中的一些物体(如朝一面墙探出头)。解决方法之一是通过设计场景使用户在镜头的追踪范围之内不能穿透任何物体。根据前面的建议,在用户将穿透任何物体之前,屏幕会渐变为黑色。这个方法也可以用来防止用户向某一个物体靠得过近(小于0.75-3.5米的舒适距离)。不过,这个方法可能会让用户感觉周围有一圈看不见的墙壁。你需要多作实验和测试,找到兼顾可用性和舒适度的理想解决方案

虽然我们鼓励开发者不断尝试新的方法来解决位置追踪带来的挑战,我们并不建议采用任何人为取消位置追踪,或是改变其行为的方法。特别是当用户在真实世界中移动时,看到的虚拟世界如果对位置追踪停止响应(或响应不正确),会对用户造成不适。任何解决这些问题的方法都需要给用户足够的反馈,让用户知道正在发生什么,以及如何继续正常的交互行为。

延迟

我们对延迟的定义是:从用户头部的移动到在屏幕上显示更新后的画面的总时间(motion-to-photon,它包括感应器反应时间、融合时间、渲染时间、图像传输时间以及显示反应时间。

低延迟对舒适及沉浸的VR体验至关重要。头部追踪的低延迟是RIFT技术与众不同的特性之一。你游戏中的延迟越低,用户体验的舒适度就越高。

我们的预测性追踪技术为减小延迟带来的后果提供了一种方法。虽然这种技术并没有缩短整个流程的实际长度,但它利用了流程中已有的信息来预测用户将要看到的地方。这补偿了从感应器读取数据到在屏幕上显示渲染结果之间的延迟: 在渲染时就根据感应器的数据预测用户接下来会看到的地方,并把这部分场景画到屏幕上。我们鼓励开发者使用SDK中的预测性追踪代码。详细信息请参阅SDK的文档。

在Oculus,我们相信引人入胜的VR体验需要不高于20ms的延迟。高于这个数值,用户在环境中可能会感到不适,缺乏沉浸感。而如果延迟高于60ms,头部动作和虚拟世界的差异会非常明显,会导致不适及丧失方向。高延迟被认为是晕动症的主要原因之一。除了对舒适度的影响之外,延迟也会对用户的交互和临场感造成干扰。很明显,在理想情况下,越接近0ms的延迟,体验越好。如果延迟无法避免,延迟值的波动会使体验更不舒适。因此,你要争取尽量低,尽量平均的延迟。

模拟器病症

综述

·“模拟器病症”指由于使用模拟环境所引发的不适症状。

·视觉与身体感知的冲突是根源。

·众多的因素造成了模拟器病症,包括:

加速-需尽量减小加速的程度和频率

操控程度-不要剥夺用户的操控

使用模拟器的时长-允许并鼓励用户休息

高度- 避免在视野中充满地面

双目差异-有些人看立体影像时会不适

视野-减小视野中的虚拟环境有时也会减轻不适感

延迟- 尽量减小延迟,延迟和掉帧会在VR中造成不适

畸变矫正-使用Oculus VR的畸变shader

闪烁-不要显示闪烁的影像,以及重复性的花纹

经验-使用VR的经验使人对模拟器病症症有抵抗力(因此开发者不是合适的测试对象)

·将背景与用户的惯性参照物锁定,这被发现可以有效地减轻模拟器病症。

·目前有很多研究在试图减轻VR中的不适。

·SSQ可以用来收集VR体验舒适度的数据。

描述

模拟器病症是晕动症的一种形式,但与我们日常生活中的晕动症有差别。人们熟悉的晕动症是由真实的运动引起的(如颠簸的船造成晕船),而模拟器病症的主要不适感是由于在自身没有真正运动的情况下,模拟环境给人的视觉信息告诉人们他在运动。但在这两个情况中,不适感都是由于视觉、前庭(平衡)以及本体感知(身体位置)之间的冲突引起的。另外,模拟器病症会有一些由使用虚拟环境而引起的独特症状,如眼睛压力及疲劳(虽然这与身体不适的原因不同)。有些人可能在短时间使用头显后就有不适感,而另一些人可能从不会感到不适。

模拟器病症对用户和开发者都提出了舒适性的问题。不管你的内容有多精彩,也不管用户有多么想体验它,几乎没有人愿意忍受模拟器病症造成的不适。因此,了解问题的起因,并想办法减少它的发生就至关重要。关于模拟器病症的确切起因(包括晕动症的各种形式的起因)仍处于研究中。模拟器病症的病因学非常复杂,包括很多因素。这些因素不是引发症状的充分条件,但如果要保证用户的舒适度,就必须应对所有这些因素。

模拟器病症有许多症状,但最主要的是“方向错乱”(包括共济失调,一种平衡中断的感觉)、恶心(可能由“相对运动错觉”,一种自身移动的错觉,所引起)以及“眼动神经不适”(如眼疲劳)。这些症状在SSQ (simulator sickness questionnaire)中的子项中都有体现。SSQ被研究者用来评估用户在虚拟环境中的症候学。

引起模拟器病症的因素

对单独的案例,很难分析模拟器病症。不同的用户会有不同的体验,对不同刺激的敏感度也不一样,而症状产生的时间也不同(从几分钟到几小时)。作为一个VR设计师,你会在VR中沉浸很长时间,而在虚拟环境中的长时间体验会让大脑对此降低敏感程度。因此,VR的开发者,相比于一般用户,对模拟器病症更不敏感。如果不经过普通用户的测试和反馈,很难主观地预测你的产品是否会造成不适。

晕动症的易感度在不同的人群中是不同的,它与模拟器病症的严重程度是有关联的。因此那些容易晕车晕船的用户在使用VR时应该更小心。你应该在手册和教程中警告用户。采用本指南中的所有建议将有助于减小用户遭受模拟器病症的可能性。

以下内容列举了模拟器病症的潜在原因。有些原因可能是开发者难以控制的,但对它们的理解能帮助你尽量减轻用户的不适感。有些内容和其他章节的内容有重复,但本章提供了更详细的解释。

移动速度和加速度

移动的速度直接与模拟器病症的出现速度正相关,但并不一定与其激烈程度及增强率相关。虽然通常慢速会更舒适,但最重要的因素是加速度,因为加速度是对内耳前庭的刺激。加速(包括各种方向上的线性加速、角度加速)对视觉有影响,但对前庭组织则没有,这就造成了感知冲突,并引发不适感。同样的移动速度下,瞬间的加速比长时间逐渐的加速更不容易引发不适。

不适感会随着加速的频率,程度和时长的增加而加强。这是由于任何视觉呈现的加速期都等同于感知冲突,最好尽量减少这种期间。

说明:前庭组织不会对持续的速度作出反应,所以持续的视觉运动引起的感知冲突较小。

控制程度

剥夺用户对镜头的控制,或非由用户启动的镜头移动都会引发模拟器病症。某些理论认为对运动的预判和控制会减轻晕动症,这个原则似乎对模拟器病症也有效。因此,用户不能控制并不能预判的镜头移动(或移动的终止)会造成不适。如果用户在虚拟环境中有一个avatar,能够预示即将发生的镜头移动,这会提高体验的舒适度。

如果你有一个重要的事件给用户观看(例如一段过场动画或关键的环境事件),避免强制移动用户的镜头。最好是鼓励用户自主移动他们的视线,例如,可以让NPC朝目标事件看,或用声音提示用户该往哪看,也可以在关注点边上放一些和任务相关的目标(如敌人或道具)。

另外,如前面的章节说明的,不要在虚拟环境中分割用户的移动和镜头的移动。

时长

在虚拟环境中的时间越长,越容易引起模拟器病症。用户应该可以随时暂停游戏,也可以回到上次退出时的地方。可以安排一些提醒(如在存盘点或战斗间隙),建议用户休息一下。

高度

用户的高度——即用户视线(POV)的高度——也会是引起模拟器病症的间接因素。用户的POV越低,地面色块的变化就越快,而且在用户视野中的比重也越大,这会让视觉的变化更为激烈。这个和走楼梯的情况一样,会产生不适感。

双目显示

虽然双目视差是Rift的关键深度信息之一,但它也会造成问题。立体影像会强制人的双眼汇聚在某一个深度上,而眼睛的晶状体(聚焦)在另一个深度。虽然你可能需要利用VR中所有的深度范围,但对于那些用户会较长时间注视的内容(如菜单或第三人称avatar),一定要放在距用户0.75~3.5个Unity 单位(米)的范围内。

有些人在观看立体影像时会感到不适。研究显示,减小两个影像之间视差(即减小两个虚拟镜头之间的距离)会使这种不适减轻。在Rift中,任何对IPD的调整必须是对整个头部模型的调整。

我们在以前的章节中已说明,Rift中两个镜头间的距离必须设为config工具中用户的IPD,这样才能实现准确深度和大小知觉。任何对双眼距离(即镜头距离)的缩放都必须是对整个头部模型的调整,这样才能确保头部的移动和虚拟渲染镜头的移动有正确的关联。

视野

视野有两种含义:显示硬件的显示区域(我们称为“显示FOV”或“dFOV”),另一种是指引擎在显示中画出的虚拟场景区域(我们称为“镜头FOV”或“cFOV”)。

越大的dFOV越容易引起模拟器病症,这主要有两个原因。第一,对运动的感知在视野边缘更为敏感,这使用户对边缘的光学变化和闪烁特别敏感。第二,越大的dFOV向用户的视觉输出的内容就越多,当大量的视觉信息告诉用户他在移动,身体感到的感知冲突就更激烈,进而造成不适。

减小dFOV可以减轻模拟器病症,但同时也会降低沉浸感。有些敏感的用户情愿选择这种妥协,针对这类用户,你应该允许他们自己调节dFOV。显示内容的清晰度不会由于调节dFOV的调整而改变。

在游戏中加入车辆座舱可以遮挡掉很多在视野边缘会引发相对运动错觉的运动,因此也会带来相似的好处。但请注意:用户在虚拟环境中的视野越小,用户在观察周围环境时头部转动的幅度就越大,而这会增加不适感。

对cFOV的改变会导致虚拟环境对头部转动反应的不正常(例如,如果用户头部转动10度,而虚拟环境中的镜头转动了15度),这除了会引起不适外,还会造成暂时性的不适应情况,被称为前庭视觉反射(VOR)余量调整。正常情况下,你的眼睛和前庭系统会协调在头部转动的情况下,眼睛需要如何转动,才能稳定地注视一个物体。如果虚拟环境打破了这种协调性,用户在Rift中,及停止使用Rift后,都会有一段不舒服的重新适应期。

延迟和滞后

虽然开发者对系统延迟(如显示的更新率和硬件的延迟)的很多方面是没有办法的,但你的VR体验要确保在最低配置的系统上不发生滞后及掉帧。很多游戏在处理及渲染复杂画面时会卡顿。这在传统游戏中可能不是大问题,但在VR中会造成用户的不适。

以往的研究对延迟的后果有一些不同的发现。许多专家建议尽量减小延迟,这可以减轻模拟器病症,理由是头部转动和显示更新之间的滞后会造成感知冲突,以及前庭眼部反射的错乱。因此,我们鼓励尽量减少延迟。

不过,也有一些对头戴式显示器的研究指出,固定的延迟率,不管是短到48ms,或长到300ms,引发的模拟器病症的强度是一样的;但是,不断变化的,不可预测的延迟则会造成更多时间更长的不适感。这可能意味着人们会逐渐适应持续的、可预测的延迟率;但波动大、不可预测的延迟率则会不断增强不适感。

即使这样,对延迟的适应(以及其他对虚拟世界和真实世界之间差异的适应)也不是一个舒适的过程,而且当用户回到现实世界时,他还要经历一个不舒适的适应过程。这和在船上的体验类似:很多人会由于船的颠簸而晕船,但过了一阵子后,会对颠簸适应,晕船症状消失;但当他们回到陆地上时,又会产生“上岸不适”,这是由于身体对新的环境又要重新适应。

当用户在进入和离开VR的时候,身体要做的调整越少越好。开发者一定要使用DK2内置的延迟测试功能来测量motion-to-photon延迟率,以确保延迟尽量短,尽量稳定。更多信息请查阅SDK的文档。

畸变矫正

Rift中的透镜会使显示的影像产生畸变,这个畸变由SDK中的后期处理步骤矫正(或理解为预先畸变)。这个畸变一定要按照SDK中的指导正确施行。不正确的畸变虽然“看上去”没什么问题,但会造成不适,因此对细节的关注很重要。所有畸变矫正的数值必须和硬件设备保持一致——所有数值都不能让用户自己调整(SDK的demo中允许调整这些数值,这只是让开发者了解的)。

我们根据Rift的光学组对畸变的设置作了仔细的调节,并不断地改进。所有开发者都必须使用Oculus官方的VR畸变设置,以确保在Rift中正确显示内容。

闪烁

闪烁是引起眼球运动导致的模拟器病症的重要因素。亮度高的闪烁更容易引起问题,在视野边缘区域的闪烁更为强烈。虽然经过一段时间后,闪烁会被意识所忽视,但仍会导致头痛和视疲劳。

虽然OLED屏给VR带来了很多好处,但OLED显示自带一定程度的闪烁,类似于CRT显示器。不同的人对闪烁的敏感度不同,DK2的75Hz显示屏的刷新率已足够快,大多数人察觉不到闪烁。将来的硬件会有更快的刷新率,意味着更不明显的闪烁。开发者在这方面是不能控制的,但我们提及这点以使知识完整。

开发者的责任是避免在内容中制造人为的闪烁。高对比度的闪烁(或快速变换)刺激会引发一些人的光敏性癫痫。同样,高度重复的贴图(如黑白条纹)也会引发光敏性癫痫。国际标准组织一直在研究光敏性癫痫和影像安全性,正在制定影像内容的安全标准以防止由此引发的光敏性癫痫。这个标准界定了有潜在风险的闪烁和花纹。你必须确保你的内容符合标准。

经验

用户对虚拟环境的体验越多,越不容易有模拟器病症。这方面的理论认为学习机制(有时是下意识的)使用户能更好地处理VR体验。例如,大脑可以对之前引发不适的异常视觉信息重新解释,或者用户在虚拟现实中能更为稳定和有效地移动,这就减少了相对运动错觉的发生。由此带来的好消息是开发者可以为有经验的用户开发激烈的VR体验,而坏消息是大多数用户在能适应这样的体验之前,都需要一段时间来适应虚拟现实。

这导致了一些需要注意的结果。首先,开发者自身由于已经多次体验了自己的游戏,他们比新用户对模拟器病症的抵抗力要高很多。因此要准确评估产品的舒适度,需要通过对模拟器病症有不同耐受度的新手人群。第二,不能让新用户直接体验激烈的内容,应该让他们从较缓慢、柔和的体验开始。更好的做法是:根据本指南中的建议,给用户一些选项,以调节体验的刺激程度。第三,有激烈虚拟体验的游戏应该事先给用户警告,让用户自己决定是否,及如何开始体验。

模拟器病症的应对

相对玩家锁定的背景(又名:独立视觉背景)

对模拟器病症的研究至少发现了一个纯视觉的解决方法,可以在VR中用来减轻症状。研究者将受试者放在两个不同的虚拟环境中,其中一个虚拟环境包括所谓的“独立视觉背景”,另一个则没有。独立视觉背景是一个简单的视觉背景,如一个格子或天空盒,它在虚拟环境中可以被用户看到,并和现实世界中一个稳定环境的行为一致。例如,在虚拟驾驶中,在环境中的移动可以用地面、树木以及建筑物的运动来表现,但天空盒(天上有一些云)在用户面前保持静止(即使车辆有转向)。相对于一个会变化的背景,在虚拟环境中使用一个独立的视觉背景可以明显地减轻模拟器病症。

这种方法让大脑认为视觉和前庭感知是统一的:用户和背景是静止的,而前景的环境在用户周围移动。这就解决了让用户产生不适的感知冲突。我们的做法是采用相对用户锁定的天空盒,这个天空盒在离用户探索区域很远的地方渲染。在我们之前的测试中,很多不同形式的背景都是有效的,包括真实的(如大海、地平线或有云的天空),以及人为的(如显示边缘的方盒)。当用户使用手柄或键盘在前景中移动时,他们马上会注意到远方的背景是静止的,锁定于真实世界中身体的位置。不过,用户头部转动的时候,还是可以四处观察远处的背景。总体效果就是用户感觉他是在一个由背景构成的巨大“房间”中,前景中的物体在他周围移动。

这个方法在很多技术中对减轻模拟器病症都被证明是有效的,Rift也不例外。不过,它也有一些限制,减轻不适感的效果取决于两个因素:背景的清晰度,以及相对于前景,背景远离用户的程度。并不是所有的虚拟环境都是室外场景,也不是所有环境都可以有一个相对玩家锁定的、既可见又合理的背景。

针对以上这些限制,我们尝试在所有虚拟环境中使用“盒子房间”的形式,在场景边缘罩上半透明的盒子房间,利用双目视差和空气透视(雾)作为深度信息,让人感觉盒子在很远处。虽然大部分情况下,这个方法是有效的,但有时会导致用户的沉浸感降低。另外,我们发现任何使用户觉得盒子是位于眼睛和前景之间的深度信息(如让盒子变得全透明),都会使上述有效性消失。

尽管如此,如果运用得当,这个方法能帮助开发者在保持舒适度的情况下,提供多种VR体验。而且这也可以用来帮助用户适应虚拟环境:用户可以在第一次体验VR时打开背景锁定功能,在逐渐适应后,再关掉锁定功能。如果没有人能舒适地体验,再精彩的VR内容都没有价值。背景锁定功能可以使你的内容让那些敏感的用户也能体验。因此,如果你的VR内容适合某种背景锁定形式,可以考虑把这个功能做成用户可选的设置。

其它方法

开发者们已经开始探索一些新方法,让传统游戏在VR中也能像在显示器中一样舒适地体验。下面是目前为止我们所看到的一些方法。虽然它们不一定适合你的产品,我们在此描述以供你参考。

由于移动会导致相对运动错觉,进而引发不适,一些开发者尝试使用不同形式的瞬移,在几个位置之间移动用户。虽然这种方法可以有效地减轻模拟器病症,但用户有可能会失去方向感。

还有一些方法通过对镜头的处理减少相对运动错觉。一种“瞬移”的变种是将用户的视角从第一人称拉到“上帝视角”,而用户的avatar还在场景中。用户将avatar移动到一个新的位置,然后再回到第一人称视角。

另外还有一种措施是改变用户在虚拟环境中转动的方式。在手柄上使用左右按键会使镜头立即往相应的方向跳转一个固定的角度(如30度),而不是平滑地转动。这背后的想法是尽量减少用户在转动中的相对运动错觉,同时又产生固定的、可预期的转动,从而避免方向感的丧失。

说明:本章中所有的方法都可以减轻不适感,但同时会使虚拟环境失去一定“真实性”。你应该自己判断是否使用这些方法,但请了解:一个VR体验的舒适度越高,就会吸引越多的用户,因此某种牺牲可能是值得的。为了平衡舒适度和真实度,你可以把这些方法作为用户可选的设置项。不容易产生不适感的用户可以选择较真实的体验,而敏感的用户可以打开这些方法的选项。

测量和测试

有很多技术被用来测量和评估模拟器病症。一些技术化的间接测量手段包括皮肤电流反射、脑电波(EEG)、胃电流(EGG)以及姿势稳定性。不过在研究中最常用的方法是模拟器病症问卷(SSQ,Simulator Sickness Questionnaire)。

和其它的调查问卷一样,SSQ有一些天然的限制,即用户对自己心理\生理情况描述的准确性。但SSQ也有很多优点。不像那些技术性的测量方法,SSQ不需要特殊的设备和培训——只需要纸笔和一些计算方式,任何人都可以采集问卷,打分,并给出结果。对受试者来说,问卷简短而简单,只需要一分钟左右就能完成。因此SSQ在花费很少的情况下就能获得很多有价值的信息,成为用户测试中评估舒适度的一种有效手段。

用户界面(UI)

综述

·抬头显示(HUD)

-弃用传统的HUD,理想的做法是把信息整合在环境中。

-把准星直接画在目标上,而不要使用固定深度的面片。

-离镜头近距离的武器或工具会造成眼部疲劳;可以把它们作为avatar的一部分,在不用的时候退出视野。

·Avatar既有优点也有缺点:它可以让用户在虚拟环境中有具体载体,但如果avatar的行为与用户真实身体的行为不一致,会使用户感觉怪异。

抬头显示(HUD

通常情况下,Oculus不鼓励使用传统的HUD。我们希望开发者将信息融入到环境中。虽然一些充分考虑立体视觉的需求可以通过重新设计转换为VR中的交互元素(如下面要说的准星),但如果只是简单地将非VR游戏中的HUD移植到VR中,会带来新的问题,并使它们没有实用价值,甚至会造成不适。

首先,HUD会遮挡3D场景中的所有东西。这在非立体的游戏中不是问题,因为用户很容易理解HUD是位于所有其它东西前面的。但在VR中,由于双目视差(左右眼所看到的影响中的细微差别)提供了深度信息,当场景中的某个物体离用户更近的时候(比HUD离用户更近),就会造成冲突。这会在用户试图融合HUD或3D环境影像时造成困难及不适感。

虽然可以通过把HUD移到离用户非常近来避免遮挡和视差之间的视觉冲突,但这样通常意味着要把HUD移到最低的舒适距离(0.75cm)之外。如果把HUD所在距离设为用户所能看到的最近距离,同样也会产生问题:用户会觉得被强制不能靠近环境中的物体。虽然上述方法在一些特定的情况下可能是有效的,但传统的HUD在VR中还是很快会让人觉得过时,应该用更友好的方式来替代。

因此,需要考虑如何在环境自身中显示用户交互的信息。记住一点:用户可以转动头部,用自然的、在传统游戏中不可能实现的方式来收集信息。举个例子,相对于传统游戏HUD中的小地图和指南针,在VR中用户可以通过低头看avatar手中,或座舱中的实体地图和指南针来了解自己的方位。但这个例子不是为了说明一切都要“真实”;敌人的血槽还是可以悬浮在它们头部上方。重要的是用清晰和舒适的方式来传达信息,这些方法不会影响用户对环境的感知

准星的实现是一个典型的,将传统做法在VR中调整的例子。瞄准需要用到准星,但如果只是简单地将准星贴到一个固定的深度上,在VR中无法实现准星的作用。当准星的深度(即离开用户的距离)与双眼聚焦点的深度不同时,用户看到的是重影。因此,要使准星起到在传统游戏中的作用,就必须把它直接画到被瞄准的物体上,也就是用户在瞄准时双眼聚焦的位置。准星本身既可以是固定尺寸,随着距离远近放大缩小,你也可以用代码让它总是看起来一样大。这主要是设计师要考虑的美观问题。这个例子说明了某些传统的UI元素可以在VR中使用,但一定要仔细地调整,并根据VR这个新媒体的要求来设计。

Avatars

Avatar是用户身体在虚拟世界中的视觉代表,通常反映用户的位置、移动和动作。用户可以看见自己的虚拟身体,并观察其它用户如何与之交互。由于VR很多时候是第一人称的体验,很多VR应用都舍弃了用户在虚拟世界中的代表,因此用户在虚拟空间中没有身体。

Avatar既有优点也有缺点。一方面,avatar可以给用户关于比例大小,以及在虚拟世界中身体体积的明确感知。另一方面,如果一个真实的avatar身体和用户的本体感知有差异(例如,用户坐着而avatar在走路),就会感觉怪异。在使用Rift的一些公开展示中,用户通常对能看到自己的虚拟身体反应积极,所以可以理解为avatar可以作为一种引起美学反应的方式。如同这个新媒体的其它方面,你需要用户测试和评估来决定什么是对你的内容最合适的做法。

说明:由于我们低头的角度有限,avatar的身体只能在图像的边缘显示。武器和工具应该整合在avatar上,让用户可以看到avatar握着它们。对于需要使用全身追踪输入设备的开发者,务必根据用户手部(或身体其他部位)的追踪信息更新avatar,并尽量减少延迟。

武器和工具

在第一人称射击游戏中,武器通常在屏幕下方显示,感觉玩家正握着武器瞄准。从空间上来说,这意味着武器比场景里的其他物体都更靠近玩家。在非立体的游戏中,这不会造成什么问题,我们可以接受看见一个巨大的、非常近的物体挡在正常距离的场景之上。

但如果在立体游戏中,情况就有一些复杂。把武器或工具在离镜头如此近的距离上渲染,就要求用户在看武器和看场景时,双眼要作很大的聚焦改变。另外,由于武器离观测者太近,左右眼看到的影像差别非常大,很难融合成一个三维的影像。

我们发现最舒适的解决方法是将镜头放在avatar颈部的上方,如前文所述,武器和工具作为avatar的一部分来渲染,当使用时举起,平时则放下,在视野之外。

有一些“作弊方法”,可以在用户的视野中渲染武器和工具。虽然我们不推荐这些做法,但你的内容有可能会需要用到这些方法。一种可能是把武器渲染成2D,放在HUD的后面(如果你有HUD)。这个方法可以解决一些聚焦和融合的问题,但会使武器看上去不自然。

还有一种方法用到multi-rigging,近处的物体(如座舱、头盔、武器等)独立于场景之外,单独使用与场景不同的镜头距离。这个方法有可能会造成视觉错误,如前景看上去比背景离用户更远,因此我们不建议使用。

将来的实验和用户测试可能会帮助你发现一个理想的、与上述方法都不同的解决方案。但我们目前的建议是采用将武器和工具作为用户avatar一部分的方法