您的位置:首页 > 其它

VR系列——Oculus最佳实践:一、最佳实践简介

2017-02-21 21:31 323 查看
VR(Virtual Reality)是一种拟真媒介。它创造了一种完全进入一个虚拟的(或者说是真实的,但是是数字化重建的)三维世界的感觉,它能提供比视频媒体更加震撼人心的体验。让大脑保持不间断的运作,需要特别注意细节。这二者的区别相当于站在窗外看一个房间和走进这个房间并且自由地到处走的区别。

概述

忽视最佳实践经验的VR体验,会导致虚拟幻境头晕——大概是用眼疲劳、方向错乱、恶心的症状组合。以前,很多这类问题被归咎于不良的VR硬件性能,比如系统延迟。Oculus Rift 代表了新一代的VR设备,解决了很多早期版本的问题。但即使有着完美的硬件,设计不良的内容仍然会带来不舒服的体验。

由于VR技术是一门相当深奥和专业的学科,仍然有许多方面没有足够权威的研究。在这些事例中,我们提出一些有依据的理论和资料来阐述他们。对于迷人且舒适的体验的设计来讲,用户测试是至关重要的;VR作为一款流行的媒介还太年轻,我们并没有建立可依靠的协议。及时我们的研究人员正在测试,但是他们能学到的还很有限。我们需要Oculus Rift的开发者团队来提供反馈,并帮助我们完善VR最佳实践和准则。

备注:与其他任何媒体一样,过度使用是不推荐的。

渲染

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

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

请全程保持虚拟现实的沉浸体验 。 不要向用户展示固定的图像(比如对头部动作没有响应的全屏光斑),因为这样会让用户失去方向感。

请确保两只眼睛看到的图像仅在聚焦点上不同。如果有特殊渲染效果(例如光畸变,全屏泛光),必须保证双眼显示一致并展示在合适的景深位置上,否则大脑无法正确的融合图像。

考虑使用超级采样或者抗锯齿(甚至两者并用)来抵消两只眼睛视觉中央的屏幕上出现的像素不足的情况。

延迟最小化

程序帧数不能低于Rift的刷新频率,需垂直同步,不要缓存。在VR中,延迟和丢帧都会产生让人不舒服的抖动。

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

游戏循环的延迟不是单一的常数,它会随时间变化。SDK使用了一些技巧(比如追踪预测、TimeWarp算法)来降低用户对延迟的感知。请尽你所能来减少体验中的延迟的变化。

请使用 SDK 里提供的追踪预测,并确保给出的时间参数精确无误。 追踪预测的值是基于应用程序的延迟,每一个应用程序都需要进行调整。

参照OculusRoomTiny项目源码,在你的代码里去最大限度的优化延迟和适当的使用渲染技术。

优化

<
4000
li>减低视觉渲染缓存的分辨率来节省显存,以提高帧数。

虽然降低显示分辨率似乎是提升性能的好方法,但它最主要的效益还是它对渲染缓冲区的影响。保持显示分辨率的同时降低渲染缓存分辨率能提高性能而不对视觉质量产生影响。

头部追踪和视线

尽量保证虚拟环境的稳定性。水平方向上或者其他与用户所处真实环境的运动相冲突的大幅旋转或平移都会产生不适感。

确保全程都能正确的对用户的移动做出响应。即使是在菜单中、游戏暂停时或播放过场动画时都要保证用户能随意观看。

使用SDK中带的位置跟踪与头部模型来保证虚拟相机的旋转和移动方式与头部和身体保持一致。否则将产生不适感。

位置追踪

渲染图像必须和用户的物理运动一致,不要调整虚拟摄像机的运动增益。对整个头部模型使用一个单一的全局比例是可行的(比如英尺转换成米,或者伸缩角色),但是不要分离与瞳距不相关的头部运动。

通过位置追踪,用户可以观察那些你没有预料到他们会去观察的地方,比如物体下面、壁架上面和周围的角落。考虑你剔除和背面渲染的方法,等等。

在某些特定的情况下,用户可以用位置追踪来剪辑虚拟环境(比如把他们的头伸过一面墙或者探进某个物体)。我们观察到当用户意识到可以这么做的时候,他们往往会避免这么做。除非他们意识到可以利用这个机会来探索游戏设计。无论如何,开发人员应该计划好处理相机的几何图形。这个问题的一个解决方法是触发消息告诉他们已离开摄像机的跟踪量(尽管他们在技术上仍可能在相机锥阶段)。

当用户接近相机追踪量的边缘位置时提醒他们,并告诉他们怎么重新定位来避免丢失追踪。

建议当用户脱离位置跟踪,进入位置追踪被禁用的区域时不要让用户离开虚拟环境。在用户脱离追踪前进行场景衰减黑屏或者图像衰减(比如降低亮度或对比度)令用户不安。一定要告诉用户发生了什么,要怎么解决。

增强或禁用位置跟踪会让人感到不适。尽可能避免这么做,在丢失位置追踪时使屏幕变暗或者至少使用SDK中的头部模型来保持方向追踪。

加速

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

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

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

移动速度

在VR中的静止位置观看环境是最舒服的;但如果在环境中移动是必须的,最舒服的移动方式是以一个恒定的速度移动。真实世界中的移动速度会很舒适——仅供参考,人类的步行平均速度约为1.4m/s。

在一些情况下用两点之间的传送代替两点之间的移动是比较值得尝试的,但依然会使人晕头转向。如果使用到了传送,请尽可能提供视觉参考,这样用户能保持他们的姿态以及方向。

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

避免垂直震荡(最令人不适的频率是0.2Hz)并关闭垂直轴旋转(最令人不适的频率是0.3Hz)。

摄像机

摄像机的放大和缩小会加剧虚拟幻境眩晕,特别是放大和缩小跟头部移动不一致时。 我们建议不要使用“缩放”功能,直到进一步的研究找到一个舒适和用户友好的实现方案。

对于第三人称视角,无论游戏内任务在干什么,对加速度和运动的指导原则都仍然适用。此外,用户必须能够自由地观察周围的环境,这会对你的设计内容增加新的需求。

不要用欧拉角度,推荐使用四元数来表示角度。尝试直上直下的测试游戏相机,必须保持和你的头部运动方向和稳定一致。

不要使用上下晃动的相机效果,它会产生上下方向的加速从而产生微弱的连续不适。

虚拟幻境眩晕的调节与测试

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

虚拟幻境眩晕的程度因人而异。且虚拟现实设备会产生比电脑和电视显示器更强烈的晕动症感受。所以不要一开始强制用户体验太强烈的内容,他们也不应该被期望这么做。

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

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

一个与玩家真实世界的惯性参考系一致的视觉背景(比如天空可以不响应移动控制器的输入,但可以与头部运动互动)可以减少视觉与前庭系统的冲突,并增加舒适度。(参考20页的跟踪)

高空间频率的图像(例如条纹、精细的纹理)会提高在虚拟环境中的运动感知,这将导致不适。使用或提供平坦纹理的选择(如固体颜色,而不是图案的表面),来让敏感的用户获得一个更舒适的体验.

3D立体感

在和真实世界的比例一致的场景中,使用SDK读取用户配置的瞳距就好。

需要注意的是立体的深度感知很接近,但是随着距离的增加会急剧降低。几英里外的两座山给人的视深感觉跟桌子上相聚几英尺的钢笔一样。

虽然增加虚拟摄像机之间的距离可以提高深度的立体感,但要注意意想不到的副作用。首先,如果你不相应的把物体移开摄像机,将迫使用户眼睛收缩的比平时剧烈,这将导致用户眼睛疲劳。其次,如果你不把头部运动与眼睛分离,将会引起知觉异常和不适。

用户界面

用户界面最好做成3D虚拟世界的一部分,放在离人眼大约2-3米的地方,不管是平面,圆筒形还是球形。

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

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

争取让你的用户界面跟 3D 虚拟世界成为一体。比如,枪的子弹容量最好直接写在枪的模型的某处,而不是显示在悬浮的 HUD(平视显示器)上。

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

人物角色的控制

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

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

音效

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

在中央音频通道或者左右声道呈现NPC(非玩家控制角色)的声音是一种常用做法,但是会打破VR的沉浸式体验。即使是粗略的空间化的音频,都可以增强用户体验。

在设计音频的时候要谨记位置跟踪,比如说当用户往声源倾斜时,即使NPC位置没有变化,声音也应当变大。

内容

与距离有关的建议:现实世界中的一米大致相当于Unity编程中的一个单元(unit)的距离。

DK2 Rift的光学设置,让用户在观察距离眼睛0.75米到3.5米处的物体时是最舒适的。即使你的环境会占用很大幅度的深度,用户将会长时间观看的物体(比如菜单和游戏中的人物)也应当被放置于这个范围内。

眼睛聚焦到比舒适距离更近的物体上时,会导致晶状体失焦,会使清晰的物体变的模糊并导致用眼疲劳。

明亮的图片,特别是在外围,会让敏感的用户明显感觉到闪烁;如果可能,请使用较深的颜色防止不适。

给玩家一个游戏中的虚拟躯干有利有弊。一方面,与使用无形的实体相对比,这会增加用户的沉浸感并帮助用户在虚拟世界中有着地感。另一方面,用户在现实与虚拟世界中身体动作的不一致会带来异样的感觉(比如说低头看见一个行走中的身体,而用户正坐在椅子上)。在设计内容时请考虑这些因素。

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

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

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

不是只有3D立体效果可以体现物体的景深感。光影,纹理,视差(物体之间的距离随着人的变化而变化),等其他效果也可以给使用者体会到物体的远近变化。这些深度线索应当在方向以及幅度上保持一致。

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

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

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

头像外观

当你在开发的时候,你要做一个选择,是让用户以幽灵形态(没有实体存在)还是以与他/她完全不同的一个身体来体验。比如你的一个玩家可以以一个历史人物,一个虚构的人物,卡通龙,一个巨人,一个兽人,一个变形虫,或任何其他的多种可能性来体验你的产品。任何这样的角色都不应当给用户带来问题,只要你遵照最佳实践准则来为用户提供直观的控制。

当用户在虚拟世界中使用虚拟角色来代表自己的时候,如果他低头看见一个与自己完全不同的身体或者双手,会削弱他的沉浸感。比如说,一个女人低头看到的是一个男人的双手或者身体,她的沉浸感将会被破坏。如果你能让玩家自定义他们的身体与双手,将会极大的提高沉浸感。如果这个项目增加了太多的成本和复杂度,你还可以采取措施减少虚拟现实和现实之间的矛盾。比如避免虚拟替身可见部分的明显的性别差异。在你的主题里的手套、服装可以保持身份方面的模糊特性,比如性别、体型、肤色等。

健康与安全

仔细阅读并执行与Rift有关的警告(见38页的健康和安全警告),以确保您、开发者和用户的健康和安全。

避免使用任何高对比度的闪光以及频率在1-30Hz之间的颜色交替变换,这可能会导致部分人群的光感癫痫的发作。

避免高对比度,高空间频率光栅(如精细,黑白条纹),因为它们也可以引发癫痫发作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐