渲染 渲染部分介绍了您在渲染场景时应该优化或避免的一些事情。
在用户界面和场景元素中使用文本 ,确保获得轻松的阅读体验。有多种方法可以确保 VR 中的文本易读性。出于渲染 目的,我们推荐在应用中使用已签名的距离字段字体。这可以确保即使字体被放大或缩小,也能平滑渲染。您还应该考虑应用支持的不同语言。组合在一起的字母组合的复杂性可能会影响易读性。例如,您的应用可能还想使用一种支持东亚语言的字体。本地化可能也会影响文本布局 ,因为对于相同的副本,某些语言会比其他语言使用更多的字母。场景中的字体大小和位置 也很重要。一般而言,字体大小超过 48-pt 可以确保获得舒适的阅读体验。对于 Rift,字体大于 25-pt 可让您在固定的 4.5 米 z 深度(在 Unity 中)获得最低易读性。一般而言,字体大小超过 42-pt 可以确保获得舒适的阅读体验。
闪烁 在模拟器疾病的眼动部分中起着重要作用,通常表现为屏幕上部分或全部区域明暗的快速“脉动”。用户对闪烁现象的感知程度取决于多种因素,具体包括:显示器在“开启”与“关闭”模式间切换的频率、“开启”阶段的发光强度、视网膜受刺激的区域,甚至所处时段及个人疲劳程度等变量。虽然随着时间的推移闪烁会变得不那么明显,但它仍会导致头痛和眼睛疲劳。有些人对闪烁极为敏感,因此会感到眼睛疲劳、身体疲劳或头痛。其他人甚至可能永远不会注意到它,也没有任何不良症状。不过,还是有某些因素可以增加或减少任何特定的人感知到显示器闪烁的可能性。
首先,人们对视觉外围的闪烁比视觉中心的闪烁更敏感。 其次,更明亮的屏幕图像会产生更多的闪烁。明亮的图像,特别是在外围区域中(例如,站在明亮的白色房间内),可能会形成明显的显示器闪烁。尽可能尝试使用较暗的颜色,特别是在玩家视角中心以外的区域。一般而言,刷新率越高,就越不容易感知到闪烁。 不要故意创作闪烁的内容。 高对比度、闪光或快速交替刺激会引起某些人的光敏性疾病。与这一点相关,高空间频率纹理(例如细黑白条纹)也会引起光敏发作。国际标准组织发布了
ISO 9241-391:2016 作为适用于图像内容的标准,以减少光敏发作的风险。该标准针对可能有害的闪光和模式提出了解决方案。您必须确保您的内容符合图像安全标准和最佳实践。
使用视差贴图 而不是法线贴图。法线贴图提供逼真的照明线索来传达深度和纹理,而无需添加到给定 3D 模型的顶点细节。虽然它在现代游戏中被广泛使用,但在立体 3D 中观看时,却不那么引人入胜。因为法线贴图不考虑双眼视差或运动视差,它产生的图像就类似于涂刷到对象模型上的平坦纹理。视差贴图建立在法线贴图的理念之上,但考虑了法线贴图没有的深度线索。视差贴图通过使用内容创作者提供的额外高度图来改变样本表面纹理的纹理坐标。纹理坐标移位是使用在着色器级别上计算的每像素或每顶点视图方向来应用的。视差贴图最适用于细节不影响碰撞表面的表面,例如砖墙或鹅卵石通道。
为您正在开发的平台应用适当的失真校正 。VR 头戴设备中的镜头使渲染的图像失真,可以通过 SDK 中的后处理步骤来校正这种失真。这种失真必须正确地执行并且符合 SDK 守则,这是非常重要的。不正确的失真可以“看起来”相当正确,但仍会让人感觉迷失方向和不适,所以注意细节是至关重要的。所有失真校正值都需要与物理设备匹配,用户不能调整其中任何一个值。
我们将花一些时间讨论延迟和滞后对 VR 中的用户产生的影响。我们没有关于解决这些问题的具体建议,因为产生这些问题可能有许多原因。
虽然开发者无法控制系统延迟的许多方面(例如显示器更新速率和硬件延迟),但重要的是确保您的 VR 体验不会滞后或丢帧。在系统处理大量或更复杂的元素并将其呈现到屏幕上时,许多游戏可能会因此而减慢速度。虽然这是传统视频游戏中的一个小麻烦,但 VR 中的用户可能会感觉非常不适。
我们将延迟定义为从用户头部移动到屏幕上显示更新的图像(移动到光子)之间的总时间,它包括传感器响应、融合、渲染、图像传输和显示器响应的时间。
过去关于延迟影响的研究结果说法不一。许多专家建议尽量减少延迟,以减少不适,因为头部移动与相应的显示器更新之间的滞后会导致感觉冲突和前庭-眼睛反射错误。因此,我们建议尽可能减少延迟。
需注意的是,头戴式显示器的相关研究表明,无论是短至 48 毫秒还是长达 300 毫秒的固定延迟,所引发的不适感程度大致相当;但座舱与驾驶模拟器中可变且不可预测的延迟则不同,其平均时长越长,引发的不适感就越强。这表明,用户最终能够适应稳定且可预测的轻微延迟,但波动性、不可预测的延迟则呈现相反趋势——其平均持续时间越长,引发的不适感就越显著。
我们认为,引人入胜的 VR 的延迟阈值应该不超过 20 ms。超过这个范围,用户就会感觉到在环境中不那么沉浸和舒适。当延迟超过 60 ms 时,用户的头部移动与虚拟世界的移动之间就会脱节,让人开始感觉到不同步,从而导致不适和迷失方向。人们认为,大量延迟是造成不适的主要原因之一。除了舒适度问题外,延迟还会破坏用户互动和存在。在理想状况下,越接近 0 ms 越好。如果延迟是不可避免的,延迟时间的变化越大,用户就越感觉不适。您的目标应该是尽可能降低和减少延迟时间的变化。