XR 显示光学与头部眼动追踪

本文拆解 XR 头显的显示光学与追踪硬件,回答微显示面板怎么选、Pancake 与波导光路差在哪、VIO 头部追踪如何做到 12 ms 延迟、眼动追踪为什么需要标定等实战问题。覆盖 PPD 与纱窗效应、畸变与色差校正、透视亮度预算、VIO 与 SLAM、眼动原理与注视点渲染联动、IPD 与人体工效,并给出参数表、代码片段、权衡与常见坑。

引言

如果只用一句话概括 XR 头显的硬件本质:它是一台把光子精确送入两只眼睛、同时以千赫兹频率测量头部姿态的仪器。显示光学与追踪是这台仪器的两个核心子系统,也是决定「晕不晕、糊不糊、贵不贵」的根本原因。

工程上的难点在于两者高度耦合。面板分辨率决定了 GPU 要渲染多少像素,光学效率决定了面板亮度与功耗,追踪延迟决定了时间扭曲的补偿量,眼动精度决定了注视点渲染能省多少。任何一项单独调优都可能在另一项上付出代价。

本文从「面板 → 光路 → 校正 → 追踪 → 眼动 → 联动」的顺序讲,重点给出可量化的参数与计算方法,而不是泛泛而谈「光学很重要」。整体技术全景可先看 空间计算与 XR 技术全景 。

目录

  1. 微显示面板技术
  2. 光路方案与光学效率
  3. FOV、PPD 与纱窗效应
  4. 畸变与色差校正
  5. 亮度、对比度与透视
  6. 头部追踪硬件构成
  7. VIO 与 SLAM 实现
  8. 眼动追踪原理
  9. 眼动标定与精度
  10. 注视点渲染与眼动联动
  11. IPD 与人体工效
  12. 显示与追踪的协同设计
  13. 权衡取舍
  14. 常见坑清单
  15. 小结

1. 微显示面板技术

头显用的面板必须「小尺寸、高像素密度、高亮度」,与手机面板的取向完全不同:

技术全称像素密度亮度寿命典型应用
LCD液晶中低长早期 VR
OLED有机发光中高中中Quest 2
OLEDoS硅基 OLED极高中中Vision Pro
MicroLED微发光二极管极高极高长未来 AR
LCoS硅基液晶高高长投影式 AR

OLEDoS(Micro-OLED) 是当前高端主流:在硅基板上直接生长 OLED,像素间距可做到 5 微米以内,因此能在 1 英寸左右的对角线上做到 4K 分辨率。Vision Pro 单眼约 3660×3200,用的就是 OLEDoS。

MicroLED 的优势是亮度可达百万 nit 级、寿命长、无烧屏,最适合 OST 波导(因为波导效率极低,需要超高入面板亮度)。当前瓶颈是巨量转移良率与成本。

LCD 的致命问题是黑位:液晶无法完全遮光,暗场发灰,VR 里表现为「黑色不够黑」,严重影响沉浸感。这也是 Quest 2 之后高端设备全面转向 OLEDoS 的原因。

1.1 填充因子与响应时间

除了像素密度,还有两个常被忽略的面板指标:

  • 填充因子(Fill Factor):发光区域占像素总面积的比例。LCD 因有晶体管与走线遮挡,填充因子常低于 60%,像素间隙清晰可见,这是纱窗效应的直接来源。OLEDoS 可做到 80% 以上。
  • 响应时间(Response Time):像素从一灰阶切换到另一灰阶的耗时。LCD 常为 5 到 10 ms,在 90 Hz 下会产生拖影;OLED 可到 0.1 ms 级,几乎无拖影。这也是动作类 VR 内容偏好 OLED 的原因。

2. 光路方案与光学效率

面板到眼睛之间必须经过光学元件,而每种光路的效率差异巨大:

光学效率(入眼亮度 / 面板亮度):
  Birdbath      ≈ 10% ~ 20%
  Pancake       ≈  5% ~ 10%
  自由曲面棱镜   ≈ 30% ~ 50%
  光波导        ≈  0.1% ~ 1%

这意味着:

  • 波导方案为了达到 1000 nit 入眼亮度,面板需要 10 万 nit 以上,因此只能配 MicroLED 或激光光源。
  • Pancake 效率低,面板亮度需求是 Birdbath 的两倍左右,功耗直接翻倍。

2.1 Pancake 为什么这么薄

Pancake 用一片半透半反镜加一片四分之一波片,让光线在镜片内来回折叠 2 到 3 次,从而在极短的物理距离内实现等效长焦距。代价是每次经过半透半反镜都损失约 50% 光,叠加偏振损耗后总效率常低于 10%。

2.2 波导的三大痛点

光波导靠全反射把光「横向搬运」到眼前再耦出,形态最接近普通眼镜,但有三个硬伤:

  • 效率极低:耦入耦出各损失一次,加上多次全反射的散射,总效率常低于 1%。
  • 彩虹纹(Rainbow Effect):外界光被光栅衍射产生彩色伪影,需要多层光栅或补偿膜。
  • FOV 受限:受全反射角与光栅折射率限制,单层波导 FOV 通常只有 30 到 40 度。

3. FOV、PPD 与纱窗效应

纱窗效应(Screen Door Effect) 是指用户能看见像素之间的黑色间隙,像隔着纱窗看世界。它的直接来源是像素填充因子(Fill Factor)不足,而不是分辨率本身。

人眼分辨极限:约 60 PPD(中心凹)
不舒适阈值:  < 20 PPD
可接受范围:  20 ~ 40 PPD
接近无感:    > 40 PPD

Quest 2  : 1832 / 96°  ≈ 19 PPD
Quest 3  : 2064 / 110° ≈ 18.8 PPD(靠 Pancake 改善填充)
Vision Pro: 3660 / 100° ≈ 36.6 PPD

注意 Quest 3 的 PPD 与 Quest 2 接近,但观感明显更好,原因在于光学质量与填充因子而非像素数。这提示一个工程结论:提升 PPD 只是手段之一,改善光路与面板工艺同样有效。

FOV 的测量口径也要统一:厂商常给「对角线 FOV」,而实际可用的是「双眼重叠 FOV」。重叠区域决定立体感,非重叠区域决定沉浸感,二者必须分开评估。

4. 畸变与色差校正

镜片是凸透镜,必然引入两类误差:

  • 径向畸变:画面边缘被拉伸或压缩,桶形或枕形。
  • 色差:不同波长折射率不同,导致 RGB 三通道偏移,边缘出现彩边。

校正的标准做法是预畸变网格:

// 运行时合成的畸变校正采样(简化)
vec2 undistort(vec2 uv, vec4 k) {
    vec2 c = uv - 0.5;
    float r2 = dot(c, c);
    float f = 1.0 + k.x * r2 + k.y * r2 * r2;
    return 0.5 + c * f;          // 采样源坐标
}
// 实际由 OpenXR 提供 per-eye 畸变参数与采样网格

关键点:

  • 校正由运行时做,不由应用做。应用只需把「理想图像」提交给 OpenXR,运行时负责畸变、色差与时间扭曲。
  • 每台设备参数不同,甚至同一型号不同批次也有差异,因此校正参数来自设备出厂标定。
  • 色差需分通道采样,R 与 B 通道用不同缩放系数,否则边缘会出现明显彩边。

5. 亮度、对比度与透视

亮度需求按形态分档:

形态入眼亮度需求原因
VR(全封闭)100 ~ 200 nit无环境光竞争
VST 透视200 ~ 500 nit需匹配摄像头画面
OST 室内300 ~ 800 nit需压过室内照明
OST 户外1000+ nit需压过日光

对比度方面,OLEDoS 的无限对比度(纯黑像素完全关闭)是沉浸感的关键。而 VST 透视的对比度受限于摄像头动态范围:室外强光下,摄像头要么过曝要么暗部死黑,这是当前 MR 设备最大的观感短板。

5.1 透视延迟

VST 的透视链路是「摄像头 → ISP → 合成 → 显示」,延迟通常在 30 到 50 ms。用户快速转头时会看到「拖尾」或「果冻效应」。缓解手段:

  • 用低延迟摄像头与专用 ISP(如 Vision Pro 的 R1)。
  • 提高透视相机帧率到 90 Hz 以上。
  • 在合成阶段对透视画面做时间扭曲。

5.2 亮度单位与测量

工程沟通时必须统一单位,否则会出现「我们做到 800 了」而对方以为是另一单位:

nit   = cd/m²      :亮度基本单位
fL    = 3.426 nit  :英制,投影与影院常用
lm    = 光通量     :与面积无关,面板参数常混用
对比度 = 亮部亮度 / 暗部亮度(OLED 可标称无穷)

测量位置也要约定:面板亮度(面板出射)与入眼亮度(眼睛位置)差一个光学效率,二者常相差一个数量级。评审时若没说明位置,数据基本没有意义。

6. 头部追踪硬件构成

主流头显的追踪传感器配置:

传感器数量频率作用
IMU(陀螺+加速度计)11000 Hz高频姿态递推
灰度/彩色相机4~630~90 Hz视觉特征观测
深度传感器0~230 Hz环境几何
眼动相机260~120 Hz注视点

IMU 是追踪的心跳:它以 1000 Hz 提供角速度,让系统在相机帧之间也能输出位姿。但 IMU 有零偏(Bias)与噪声,必须靠视觉观测持续校正,这就是 VIO 的本质。

6.1 时间同步

问题:相机曝光时刻 t_cam 与 IMU 采样 t_imu 不同步
      → 快速转动时位姿估计滞后 5~10 ms

方案:
  1. 硬件触发:用同一时钟源触发相机曝光并打时间戳
  2. 曝光中心对齐:用曝光中点而非帧开始时刻作为观测时间
  3. 在线估计时延:把时间偏移作为状态量一起优化

第 3 种做法最鲁棒,现代 VIO 实现(如 VINS-Mono)都把时间偏移纳入标定状态。

7. VIO 与 SLAM 实现

VIO 的输出是位姿,SLAM 的额外产出是地图。两者的关系是:VIO 提供里程计,SLAM 在里程计上加回环与地图维护。

前端(Frontend):
  特征提取(FAST / ORB)→ 光流跟踪 → 三角化
      ↓
后端(Backend):
  滑动窗口优化 / 因子图优化
  状态量:位姿、速度、IMU 零偏、特征深度
      ↓
回环检测(Loop Closure):
  词袋 / NetVLAD → 位姿图优化 → 消除累积漂移

工程选型要点:

  • 手机 AR:不需要建图,VIO 加平面检测足够,ARCore/ARKit 已封装。
  • 头显室内:需要地图支持重定位与持久锚点,必须做 SLAM 建图。
  • 大空间:需要回环检测,否则走一圈回来世界就飘了。

7.1 特征法的取舍

方法精度算力鲁棒性适用
稀疏特征(ORB)中低中移动端主流
半稠密(LSD-SLAM)中高中中中等算力
直接法(DSO)高高低(对光照敏感)PC
学习法(SuperPoint)高高高有 NPU 的设备

一体机上通常选稀疏特征加 IMU 紧耦合,理由是算力预算与功耗。

7.2 追踪延迟的测量方法

追踪延迟不能只看文档,必须实测:

方法一:高速相机法
  用 240~1000 fps 相机同时拍摄「头显运动」与「屏幕画面」
  数帧差 → 得到 Motion-to-Photon

方法二:机械摆锤法
  头显固定在摆锤上做已知正弦运动
  比较 IMU 输出与实际角度的相位差 → 得到追踪延迟

方法三:光电二极管法
  屏幕上放闪烁图案,光电二极管检测出光时刻
  与触发信号比较 → 得到显示延迟(不含追踪)

量产验收通常用方法二加方法三组合,把追踪延迟与显示延迟分开归因。

8. 眼动追踪原理

眼动追踪的核心是瞳孔中心角膜反射法(PCCR):用红外光源在角膜上形成反射点(Glint),相机同时拍到瞳孔与 Glint,两者相对位置随注视方向变化,据此解算视线。

红外 LED ──► 角膜形成 Glint(固定反射点)
红外相机 ──► 拍下瞳孔轮廓 + Glint 位置
      ↓
瞳孔中心与 Glint 的向量差 ──► 视线方向
      ↓
与场景相机做空间标定 ──► 世界坐标注视点

三种常见实现:

  • 2D 回归:用瞳孔与 Glint 的像素差做多项式回归,成本低,精度约 1.5 到 3 度。
  • 3D 眼球模型:拟合眼球球心与光轴,再算视轴,精度可到 0.5 到 1 度。
  • 深度学习:端到端回归,对眼镜、睫毛遮挡更鲁棒,但需要 NPU 与训练数据。

8.1 精度指标

注视精度(Accuracy):估计注视点与真实注视点的角度误差
注视抖动(Precision):同一注视点多次测量的标准差
典型值:消费级 1.5~3°,高端 0.5~1.5°

对注视点渲染而言,1.5 度以内的精度即可支撑「中心 20% 面积全分辨率」,精度再低就要扩大高分辨率区域,省不下算力。

9. 眼动标定与精度

眼动必须逐用户标定,因为每个人的眼球半径、角膜曲率、Kappa 角(光轴与视轴夹角)都不同。

标定流程:

  1. 用户注视屏幕上的若干已知点(通常 5 到 9 点)。
  2. 记录每点的瞳孔与 Glint 特征。
  3. 拟合从特征到视线方向的映射模型。
  4. 验证残差,超过阈值要求重标。

工程细节:

  • 标定要快:超过 20 秒用户会不耐烦,Quest Pro 与 Vision Pro 的自动标定只需注视几个点。
  • 漂移补偿:头显滑动会导致标定失效,需要检测并提示重标。
  • 戴眼镜影响:镜片折射会改变 Glint 位置,需要单独的眼镜模式。
  • 隐式重标定:利用用户点击时的注视点作为弱标签,持续微调模型。
// Unity 中读取眼动并做简单有效性判断
using UnityEngine.XR;

bool TryGetGaze(out Vector3 dir, out float confidence) {
    dir = Vector3.forward; confidence = 0f;
    var eye = InputDevices.GetDeviceAtXRNode(XRNode.CenterEye);
    if (!eye.isValid) return false;
    if (!eye.TryGetFeatureValue(CommonUsages.centerEyeRotation,
                                out Quaternion rot)) return false;
    dir = rot * Vector3.forward;
    // 置信度由厂商扩展提供,低于阈值应回退到头部朝向
    confidence = 1.0f;
    return true;
}

回退策略很关键:眼动置信度低时(眨眼、遮挡、标定失效)必须切回头部朝向,否则会出现「注视点乱跳」。

10. 注视点渲染与眼动联动

注视点渲染(Foveated Rendering)利用「人眼只有中心凹清晰」这一事实,只在高注视区域全分辨率渲染:

渲染策略(三级):
  中心区(约 10° 视角):全分辨率
  过渡区(约 10°~20°):1/2 分辨率
  外围区(> 20°):1/4 分辨率

省算力估算(像素数):
  中心 π·10²  ≈ 314 单位
  过渡 π·20²-π·10² ≈ 942 单位(按 1/4 像素计 236)
  外围 π·55²-π·20² ≈ 8246 单位(按 1/16 计 515)
  总像素约为全分辨率的 25% ~ 40%

两种实现路径:

  • 固定注视点渲染(FFR):不依赖眼动,按屏幕中心固定分区,省 20% 到 30%。
  • 动态注视点渲染(DFR):依赖眼动,随注视点移动分区,省 30% 到 50%。

代价是周边视觉的模糊可能被察觉,尤其是快速扫视时。因此过渡区的平滑(用可变速率着色 VRS)比硬切分更不易被察觉。具体性能收益的量化见 一体机 XR 性能优化实战 。

11. IPD 与人体工效

IPD(瞳距) 是两眼瞳孔间距,成人范围约 54 到 74 mm。头显必须支持 IPD 调节,否则:

  • IPD 不匹配 → 两眼看到的像位置偏移 → 重影、眼疲劳、恶心。
  • 调节方式分物理调节(移动镜片)与软件调节(移动渲染视口),物理调节更舒适但成本高。
渲染中的 IPD 使用:
  左右眼相机分别沿 X 轴偏移 ±IPD/2
  投影矩阵需包含眼距引起的非对称视锥
  OpenXR 通过 xrLocateViews 返回 per-eye 的位姿与 FOV

其他人体工效要点:

  • 重量分布:重量前倾会压迫面部,配重后置更舒适。
  • 面部接口:材质影响散热与压强,长时间佩戴必须考虑。
  • 可戴眼镜:要么预留空间,要么提供屈光度调节。
  • 散热:面部封闭导致闷热,是「20 分钟就想摘」的主因之一。

11.1 人体工效量化指标

指标舒适范围超标后果
整机重量< 500 g颈部疲劳
前后配重差< 100 g面部压迫
面压< 1.5 kPa红印、头痛
出瞳距离12~18 mm视野缩小或睫毛碰镜
眼盒> 8 mm容错差,轻微滑动即出画
表面温度< 40 ℃闷热、出汗
IPD 覆盖54~74 mm部分用户无法使用

这些指标应在设计阶段就写进 PRD,而不是等样机出来再「调手感」。

12. 显示与追踪的协同设计

两块子系统在四个点上强耦合:

耦合点显示侧需求追踪侧影响
分辨率高 PPD 需高分辨率面板渲染像素多,GPU 压力大
刷新率高刷减少闪烁单帧预算缩短,追踪须更快
注视点渲染需眼动数据分区依赖眼动精度与延迟
时间扭曲需最新姿态重投影依赖追踪延迟与预测精度

结论是不能分头优化:把刷新率从 90 提到 120,若追踪延迟不降,时间扭曲补偿量变大,反而可能出现「过冲」伪影。协同设计的正确顺序是:先定刷新率与延迟预算,再定分辨率与注视点策略。

13. 权衡取舍

  • OLEDoS 与 LCD:前者对比度与响应好但成本高,后者便宜但黑位差,VR 优先 OLEDoS。
  • Pancake 与 Birdbath:前者薄但效率低,后者厚但亮度足,看整机厚度目标。
  • 波导与自由曲面:波导形态好但效率极低,自由曲面效率高但体积大。
  • 2D 回归与 3D 模型眼动:前者便宜精度一般,后者精度高但需要更复杂标定。
  • FFR 与 DFR:前者无需眼动、实现简单,后者省更多但依赖眼动可靠性。
  • 物理 IPD 与软件 IPD:物理更舒适,软件更便宜,高端设备仍选物理。
  • 90 Hz 与 120 Hz:高刷降低不适,但预算减少 25%,需按内容节奏选择。

14. 常见坑清单

  • 只比分辨率不比 PPD:FOV 不同导致实际清晰度差异巨大,必须算 PPD。
  • 用对角线 FOV 宣传:真实可用的是双眼重叠 FOV,评估时务必统一口径。
  • 自己做畸变校正:与运行时重复校正导致画面二次变形,应交给 OpenXR。
  • 忽略色差:边缘彩边常被误判为「面板问题」,实为未分通道采样。
  • 相机与 IMU 不同步:表现为快速转头时画面滞后,必须硬件打时间戳。
  • 标定参数写死:不同批次设备参数不同,必须从设备读取。
  • 眼动不做漂移检测:佩戴滑动后注视点全偏,用户会觉得「眼睛失灵」。
  • 注视点分区硬切:边界可见,需用 VRS 或渐变过渡。
  • IPD 用固定值:必须读取用户设置,默认值不适用所有用户。
  • 忽略散热设计:热量堆积导致降频与面部不适,是长时佩戴失败的主因。

15. 小结

显示光学与追踪是 XR 硬件的一体两面。显示侧的主线是 面板(OLEDoS 优先)→ 光路(Pancake 或波导)→ 校正(运行时预畸变)→ 亮度预算;追踪侧的主线是 IMU 高频递推 + 视觉低频校正 → 时间同步 → 地图与重定位 → 眼动标定。

工程上最该记住的三个数字:20 PPD 是舒适底线、20 ms 是 Motion-to-Photon 上限、1.5 度是注视点渲染可用的眼动精度门槛。三者共同决定了一台头显能不能「戴得住」。

下一步建议读 手势识别与眼动追踪交互设计 ,把眼动从「渲染优化手段」升级为「交互主通道」;若更关心渲染侧的落地,则读 Unreal VR 渲染管线与立体渲染 。

延伸阅读

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页

「AR 与 VR」更多文章

  1. XR 培训与仿真应用
  2. XR 控制器与输入设备
  3. XR 内容分发与商店上架