引言
如果只用一句话概括 XR 头显的硬件本质:它是一台把光子精确送入两只眼睛、同时以千赫兹频率测量头部姿态的仪器。显示光学与追踪是这台仪器的两个核心子系统,也是决定「晕不晕、糊不糊、贵不贵」的根本原因。
工程上的难点在于两者高度耦合。面板分辨率决定了 GPU 要渲染多少像素,光学效率决定了面板亮度与功耗,追踪延迟决定了时间扭曲的补偿量,眼动精度决定了注视点渲染能省多少。任何一项单独调优都可能在另一项上付出代价。
本文从「面板 → 光路 → 校正 → 追踪 → 眼动 → 联动」的顺序讲,重点给出可量化的参数与计算方法,而不是泛泛而谈「光学很重要」。整体技术全景可先看 空间计算与 XR 技术全景 。
目录
- 微显示面板技术
- 光路方案与光学效率
- FOV、PPD 与纱窗效应
- 畸变与色差校正
- 亮度、对比度与透视
- 头部追踪硬件构成
- VIO 与 SLAM 实现
- 眼动追踪原理
- 眼动标定与精度
- 注视点渲染与眼动联动
- IPD 与人体工效
- 显示与追踪的协同设计
- 权衡取舍
- 常见坑清单
- 小结
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(陀螺+加速度计) | 1 | 1000 Hz | 高频姿态递推 |
| 灰度/彩色相机 | 4~6 | 30~90 Hz | 视觉特征观测 |
| 深度传感器 | 0~2 | 30 Hz | 环境几何 |
| 眼动相机 | 2 | 60~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 角(光轴与视轴夹角)都不同。
标定流程:
- 用户注视屏幕上的若干已知点(通常 5 到 9 点)。
- 记录每点的瞳孔与 Glint 特征。
- 拟合从特征到视线方向的映射模型。
- 验证残差,超过阈值要求重标。
工程细节:
- 标定要快:超过 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 渲染管线与立体渲染 。
延伸阅读
- 空间计算与 XR 技术全景 — 六大支柱与选型
- 手势识别与眼动追踪交互设计 — 眼动作为输入通道
- 一体机 XR 性能优化实战 — 注视点渲染的实际收益
- 计算机视觉技术全景 — 特征提取与视觉算法基础
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。