显示 更新时间: 2026年3月11日
为立体视觉沉浸式体验头戴设备创建内容时,开发者必须考虑传统的非 XR 内容中没有的独特挑战。要制作最高质量的内容,必须具备 XR 显示技术特有的知识和技术。以下部分将介绍 XR 显示技术的各个方面,并提供关于如何创作内容来获得最佳效果的提示。
这部分提供关于向用户显示虚拟世界的提示和说明。
未能正确呈现对象的深度将会打破完全沉浸式的体验。立体视觉是指基于每只眼睛视点之间的差异来感知深度,这是最显著的深度线索,但它只是大脑处理深度信息的众多方式之一。
许多视觉深度线索都是单目的;也就是说,即使只有一只眼睛看到,或出现在双眼都能看到的平面图像中,它们也能传达深度。
其中一个这样的深度线索便是运动视差,或者说,头部移动时,不同距离的对象表现出的以不同速率移动的程度。
其他深度线索包括:曲线透视(直线向远处延伸时会汇聚起来)、相对比例(对象距离越远变得越小)、遮挡(较近的对象会阻挡我们观看较远的对象)、空中透视(由于大气的折射作用,远处的对象看起来比近处的对象更暗)、纹理梯度(重复图案逐渐远离时变得更加密集)以及光照(高光和阴影有助于我们感知对象的形状和位置)。
当前阶段的电脑生成内容(比如在 Unreal 和 Unity 中创建的内容)会大量利用这些深度线索,但我们特意提及,是因为它们的重要性很容易被忽视。如因实施不当而导致深度信号冲突,体验可能会变得不舒服,或者观看起来很费劲。
当眼睛在完全沉浸式体验中聚焦于对象时,两个问题对理解眼睛舒适度而言至关重要:调节需求和会聚需求。调节需求是指眼睛必须如何调整晶状体的形状,使深度平面实现聚集(这个过程被称为调节)。会聚需求是指眼睛为了使视线在特定的深度平面上相交而必须向内旋转的程度。在现实世界中,这二者是如此紧密相关,以至于我们提出了所谓的调节-会聚反射:眼睛的会聚程度会影响晶状体的调节,反之亦然。
完全沉浸式体验创造出一种不同寻常的情况,它将调节需求与会聚需求分离开来,在这种情况下,调节需求是固定的,但会聚需求可以更改。这是因为用于创建立体 3D 的实际图像总是呈现在一块保持相同视觉距离的屏幕上,但呈现给每只眼睛的不同图像仍需要眼睛进行旋转,使视线会聚在各种不同深度平面的对象上。
为避免体验变得不舒服,所需的调节和会聚需求程度因人而异。为防止眼睛疲劳,对于用户将会长时间注视的对象(例如菜单、环境中引人注意的对象),应至少从 0.5 米远处进行渲染。很多人发现,对用户可能长时间注视的菜单和图形用户界面而言,1 米是个舒适的距离。
一个完整的虚拟环境需要渲染一些超出舒适范围的对象。只要用户不需要长时间注视这些对象,它们就不会给大多数人带来不适。
有些开发者发现,对于已知用户会看向哪里的情况,景深效果既能让人沉浸其中,又能令人感到舒适。例如,人为地对用户调出的菜单后面的背景进行模糊处理,或者对被拿起检查的对象所处的深度平面之外的对象进行模糊处理,可以实现这种效果。这样不仅能模拟出视觉在现实世界中的自然功能,还能防止在用户焦点之外的突出对象分散眼睛的注意力。
用户可能会选择不合理的行为。用户可能会选择站在距离对象数英寸远的地方,用眼睛一直盯着它看。避免要求可能造成不适的场景。
在一定的距离上,深度感知会变得不那么敏感。近距离观察,立体视觉可让您在毫米尺度上分辨出桌上的两个对象哪一个更近。这在距离较远时就会变得更困难。如果看向公园对面的两棵树,您可能需要走到与它们相距几米处,才能明确地分辨出哪棵更近,哪棵更远。在更大的范围中,您可能很难分辨出群山之中的两座山哪一座更近,除非两者差异达到几公里。
通过使用假体 (imposter) 或公告牌 (billboard) 纹理来代替完整的 3D 场景,就能利用这种对距离深度感知的相对不敏感性来解放计算能力。例如,不是以 3D 方式渲染远处的山,而是简单地将山的平面图像渲染到出现在左眼和右眼图像中的单个多边形上。此图像在完全沉浸式体验中出现在眼前,就像在传统 3D 游戏中那样。
这些假体的效果会有所不同,具体取决于所涉及对象的大小、这些对象内部和周围的深度线索以及它们所在的背景环境。使用应用素材进行个别测试,以确保假体的外观和感觉是正确的。确保假体与相机之间保持足够的距离,以令人难以察觉的方式融合到一起,并且真实场景元素与假体场景元素之间的接口不会破坏沉浸感。
在现实世界中,我们经常遇到的情况是,每只眼睛有截然不同的视点,这通常不会给我们带来什么问题。在完全沉浸式体验中,用一只眼睛窥视角落,与我们在现实世界中的视觉效果一样好。事实上,眼睛有不同视点可能是有益的:假设有一名特工(在真实世界中或在完全沉浸式体验中)试图隐藏在一些高高的草丛中。眼睛的不同视点可让他们的目光“穿透”草丛来监视周围环境,甚至好像草丛不在他们面前一样。在 2D 屏幕上的视频游戏中这样做,每片草叶后面的世界就可能完全被挡住。
但完全沉浸式体验(与任何其他立体图像一样)仍可能会引发一些令用户不适的情况。例如,渲染效果(例如光畸变、粒子效果或高光)应始终以正确的视差出现在两只眼睛中。这些效果渲染不当的话,会导致频闪/闪烁(当有东西只出现在一只眼睛里时)或在错误的深度上浮动(如果视差关闭,或者后期处理效果没有渲染到对象应有的背景深度;例如,镜面阴影通道)。也就是说,必须确保两只眼睛看到的图像差异不超过双眼视差与生俱来的轻微视位差,这一点很重要。
在复杂的 3D 环境中,这个问题通常并不明显,但一定要为用户的大脑提供足够的信息用来融合立体图像。构成 3D 场景的线条和边缘通常都很充足。然而,大量使用重复的图案或纹理时必须非常谨慎,因为这可能会导致用户融合图像的方式偏离预期。还要注意,深度的视觉错觉(比如空心面具错觉,其中凹陷的表面看起来是凸起的)有时会引发误解,特别是在单目深度线索不足的情况下。
我们不鼓励在完全沉浸式体验中使用传统的 HUD 来显示信息。而是建议将信息嵌入到环境或用户的虚拟形象中。虽然某些传统惯例在经过缜密的重新设计后仍可以发挥作用,但简单地将非沉浸式游戏的 HUD 移植到完全沉浸式内容中会引入新问题,使内容变得不切实际甚至令人不适。
在纳入一些 HUD 元素时,请注意以下问题:
使用 HUD 遮挡场景。非立体游戏中不存在这个问题,因为用户会轻易地认为 HUD 其实是挡在其他一切东西的前面。如果场景元素比 HUD 的深度平面更靠近用户,添加双眼视差(投射到每只眼睛的图像之间存在细微差异)作为深度线索就有可能产生不一致。由于遮挡关系,用户会感觉 HUD 比场景元素更近,因为它遮盖住了后面的一切,然而双眼视差却表明 HUD 比它遮挡的场景元素更远。这会在尝试将图像融合到 HUD 或环境中时引起困难和/或不适。 HUD 元素在场景中的任何东西“后面”。这种效果在线条、字幕以及其他类型的浮动用户界面元素中极为常见。一个应该位于墙壁“后面”的对象(就它与相机的距离而言)被绘制在墙壁的“前面”很常见,因为它是作为覆盖层而实施的。在这些对象的深度方面,这会带来相互冲突的线索,让用户感到不适。 传统的抬头显示器因深度感知而为沉浸式场景带来问题。
因此,建议将信息呈现于环境中。用户可以移动头部,以直观的方式接收信息。例如,玩家可以通过低头查看虚拟形象手中或驾驶舱中的实际地图和指南针或显示玩家重要信息的手表来确定自己的方位,而不是在 HUD 中包含迷你地图和指南针。这并不是说必须采用现实主义的方式。例如,可以让敌人的生命值在他们头部上方悬浮显示。重要的是,要以清晰而舒适的方式来呈现信息,而不能干扰玩家,使他们无法感知清晰的单图像环境,或者找不到他们试图收集的信息。
瞄准线是游戏中的常见元素,也是我们将旧信息范式应用到完全沉浸式体验中的良好示例。虽然瞄准线对精确瞄准而言至关重要,但简单地将它粘贴在固定深度平面上的场景中并不能产生玩家期望在游戏中发生的行为。例如,如果瞄准线渲染的深度与眼睛会聚的平面不同,就会感觉看到的是双重图像。为了让瞄准线像传统电子游戏里那样发挥作用,它就必须直接绘制在屏幕上瞄准的对象身上,也就是用户瞄准时视线所聚集的点。瞄准线本身可以是固定的尺寸,并且会随着距离的远近而显得更大或更小,或者您也可以对它进行编程,使其相对于用户保持绝对大小;这一点很大程度上是由审美来决定的。
将重要的玩游戏元素放在用户的直接视线上。显示在用户的沉浸式视线之外的用户界面或元素更可能被忽略。
考虑用户的高度,或者说用户的视点 (POV) 高度,因为这可能是引起不适的因素。用户的 POV 越低,地平面的变化就越快,所产生的光流显示就越强烈。这会造成一种不舒服的感觉,就像爬楼梯时不舒服的感觉一样:这样做会在视野中产生强烈的光流。
开发完全沉浸式应用时,可以将相机的原点放在用户的地板上或他们的眼睛上(这分别称为“地板”原点和“眼睛”原点)。两种选择各有特定的优势和弊端。
使用地板作为原点会使人的视点距离地面的高度与真实世界中的高度相同。将虚拟视点高度与真实世界高度对齐可以增加沉浸感。但人们的高度各异。要渲染虚拟身体,请构建能按不同的人变换身高的解决方案。
使用用户的眼睛作为相机的原点可以控制他们在虚拟世界中的高度。这有助于渲染特定高度的虚拟身体,也有助于提供与人类现实世界体验不同的视野(例如,向人们展示儿童眼中的世界是什么样子)。但是,使用眼睛视点作为原点,您就再也不知道实际的地板位置了。这会使低身闪避或从地上拾取物品的互动变得复杂化。由于用户的高度未知,在应用开始处添加重新居中步骤来准确记录用户在现实世界中的高度会有所帮助。
色彩是我们感知环境的方式,是对光与环境互动的感知。用于图形用户界面、照片或场景的一组色彩有助于:将窗口传达到现实中,传达心情,表达信息,甚至连接到更广泛的主题,如品牌或概念。因为沉浸式体验的色彩外观对所需的艺术意图而言至关重要,所以确保用户对色彩的体验符合创作者的意图是至关重要的。Meta Quest 设备支持色彩管理,以忠实地保留艺术意图。
虽然常常说某个物有有某种颜色(例如,“这个苹果是红色的”),但色彩不是对象的属性,而是我们对它们的感知:它是由我们的神经系统重建的,通过视网膜中感光细胞的反应到达人类视觉系统的可见光谱的卷积。在沉浸式体验中,目标往往是通过头戴设备的镜头看到的图像产生与物理位置类似的感知,或者,即使创作者和最终用户使用不同的设备,用户也能以创作者希望的方式感知想象中的世界。
当我们从色彩感知领域过渡到色彩空间的技术方面时,必须了解光与我们的视觉体验之间的基本联系。我们感知到的色彩是光、环境和我们眼睛之间互动的结果。当光被发射或反射时,它作为电磁辐射穿过空间,包含巨大的波长光谱。
有趣的是,光的不同波长可以产生相同的感知色彩反应,这种现象被称为同色异谱。发生这种情况是因为我们眼睛的色彩受体有限,这些受体对特定范围的波长作出反应。例如,长波长(约 620-750 纳米)被感知为红色,中波长(约 520-570 纳米)被感知为绿色,而短波长(约 450-495 纳米)被感知为蓝色。这些不同的波长集群以各种不同的比例组合时,就创造出了我们在周围世界中体验到的丰富的色彩维度。
本质上,带某种色彩的光可以被认为是纯“激光”色彩的组合,类似于声波如何组合形成复杂的声音。正如不同的声波可以产生相同的感知声高或音调那样,不同的光波可以产生相同的感知色彩。这种理解为探索色彩空间的技术方面奠定了基础,我们将深入探讨如何在 Meta Quest 设备中呈现和管理这些波长的具体细节。
由于人类视觉系统是三色的,发射型显示器需要三种颜色的光来产生作为混合效果的许多其他阴影。显示器使用红色、绿色和蓝色 (RGB) 主光,因为它们与我们感光细胞的反应功能一致。有三个元素共同定义了色彩空间:通过以不同强度混合这三种光可感知的色彩范围,通过全功率混合所有三种光获得的实际白色阴影,以及绘制混合值以提高存储和处理效率的函数。可将色彩空间视为用于定义色彩的单位。正如没有单位的距离是毫无意义的那样(例如,1 英里对 1.609 公里),以 RGB 三原色表达的色彩仅在用作色彩空间的一部分时才有意义。
可通过以下特征定义色彩空间:
色度
对于每个红色、绿色和蓝色组成部分,它是它们的实际色调和饱和度(请注意,不包括亮度)。这通常表示为 CIE 1931 空间中的 x、y 坐标。
白点
通过以 100% 的比例混合每一种三原色获得的白色色度(请再次注意,不包括亮度)。这通常表示为 CIE 1931 空间中的 x,y 坐标,或一个众所周知的亮度,例如 D65。
传输函数
一种可逆的单调函数,它将每个原色的线性场景光值(例如,与光子数量成正比的值)转换成一种能更高效地传输或处理的形式。对于数字图像,传输函数用于高效量化。密切相关的术语是:
OETF (光电传输函数):从线性光转换为编码的值。EOTF (电光传输函数):从编码的值转换为线性光。
注意: 对于标准动态范围 (SDR) 设备,例如 Meta Quest 头戴设备,100% 白光强度(例如,所有三原色都是完全强度)是相对于光学系统(通过头戴设备看到的光)的亮度。对于 Meta Quest 设备,在 100% 亮度设置下,这通常是 100 尼特。
Meta Quest 头戴设备经过工厂校准,可确保各单元的效果一致,能正确描绘所需的色彩。头戴设备的校准测量从显示器发出并通过镜头传输的光。对于有两个独立显示器的头戴设备(Meta Quest Pro、Meta Quest 3),校准可以避免双眼视差(如果是两种不同的颜色则无法融合左右图像的不利影响),并确保亮度统一性(左眼和右眼有相同的亮度反应)。工厂校准为开发者去除了这种复杂性,因此设备可被视作一个单一、完整的整体。
当前的 Meta Quest 头戴设备涵盖 sRGB 色彩空间范围。Meta Quest Pro 通过覆盖 Display P3 色域以及通过局部减弱背光来增加对比度,提供扩展的色彩功能。
我们建议为应用开发内容时,以宽广的 Display P3 色彩空间为目标。Display P3 比 sRGB 多提供大约 50% 的色彩,效果更饱和和更丰富。
插图显示,与 sRGB(
来源 )相比,Display P3 提供了更饱和的红色、蓝色和绿色影调。
请记住,主流设备只支持标准 sRGB 色域;超出色域的值会产生溢出。请谨慎使用仅受 Display P3 色域支持的色彩(即超出 sRGB 色域的色彩),例如,高光和有目的的高饱和度内容。
当针对 Display P3 开发的内容(左)显示在仅支持 sRGB 的设备中时会发生溢出(中)。即使被抑制的像素看起来不同于参考图(右),它们也是一种优雅的降级:支持 Display P3 的设备将显示完整的饱和色彩,而仅支持 sRGB 的设备仍保留了足够的细节。
由于目前所有 Meta Quest 头戴设备都使用液晶显示器 (LCD) 技术,暗像素值不会像预期那样暗淡;光学堆叠进一步降低了可用的对比度。LCD 的局限性使它们无法有效地区分 8 位 sRGB 中低于 13 的亮度级别(最高 255),或线性 RGB 着色器输出值中低于 0.0015 的亮度级别(最高 1.0)。如果完全沉浸式应用大量使用这些暗调范围,建议尽可能在更高的亮度范围内创作内容。
通过头戴设备内的相机应用捕捉的图像和视频在 sRGB 色彩空间中合成,以方便分享;宽色域内容将溢出。其他直线镜像输出(例如 Meta Quest 开发者中心的实时视图)也是以 sRGB 图像的形式合成。
使用原始显示器输出(例如
scrcpy 和 adb shell 截图)捕捉内容时,会应用 HMD 输出所应用的相同色彩调整。从外部观看时,失真后镜像输出的色彩空间精准度可能无法接受,因为捕捉到的图像会有效地使用显示器和光学模块的原生色彩空间。
推荐 使用有色彩管理的工作流程来开发素材。
推荐 使用经过正确校准的监视器来处理色彩。
推荐 在沉浸式应用中指定用于开发素材的相同色彩空间。OpenXR 渲染管线和纹理没有固有的色彩空间。开发者有责任追踪在所有输入、处理和输出的整个过程中,使用的色彩保持一致。使用 XR_FB_color_space OpenXR 扩展来设置应用程序输出使用的色彩空间。 不推荐 将 sRGB 内容重新解释为 P3。推荐明确设置正确的色彩空间。
推荐 正确显示 sRGB 内容。
不推荐 将 sRGB 内容不当显示(重新解释)为 Display P3 值。这会导致色彩过饱和以及因溢出而丢失细节。
推荐 验证宽色域内容是否会优雅地降级为溢出的 sRGB,没有不利的细节损失。
推荐 记住线性颜色值(用于 PBR 照明计算)、sRGB 编码的值(为 8 位图像中的纹理存储空间进行了感知上的优化)和 sRGB 色彩空间(RGB 的色度坐标和 D65 白点)之间的差异。
不推荐 出于非开发原因而使用镜像捕捉方法来捕捉视频和截图。
探索更多设计指南,了解如何为应用用户设计卓越的体验:
艺术素材 :了解您应考虑为应用使用哪些素材。场景理解 :利用场景理解功能,将物理环境作为画布。透视 :使用透视功能将虚拟对象与实际环境相融合。空间锚点 :将虚拟对象锚定到实际环境,提供共享体验。健康与安全 :了解如何设计安全的沉浸式体验。如需技术信息,请从以下这些开发指南入手: