1. 课程导入
增强现实(Augmented Reality,AR)并不是把虚拟画面简单叠加到现实之上,而是要让虚拟信息在正确的位置、正确的时刻、以正确的亮度与清晰度进入人眼,并与真实世界保持稳定的空间关系。要做到这一点,背后必须有一套完整的AR显示系统架构支撑:它负责采集现实、理解空间、生成图像、传导光路、投射到人眼,并持续根据用户姿态与场景变化进行校正。本课程将围绕这套架构逐层展开,帮助你建立从“看见”到“看清、看准、看得舒适”的系统级认知。
一、学习目标:从器件认知走向系统设计
学习AR显示系统架构,目标不是记住若干光学元件的名称,而是建立可迁移的系统思维。完成本课程后,你应当能够:
- 建立分层视角:把AR显示系统拆解为感知层、计算层、渲染层、光学显示层与人因交互层,理解各层之间的输入输出关系。
- 掌握关键指标:理解视场角(FOV)、出瞳距离(Eye Relief)、出瞳直径(Eye Box)、角分辨率(PPD)、亮度、对比度、畸变、色差、延迟等参数如何共同决定体验。
- 理解光路原理:能说明Birdbath、自由曲面棱镜、光波导(几何阵列波导、衍射光波导)、光场显示等主流方案的基本成像与传导逻辑。
- 具备方案判断力:面对不同应用场景,能够判断应优先选择何种显示架构,并说明其在体积、效率、成本、成像质量上的取舍。
- 形成排障意识:当出现重影、彩虹纹、眼盒过小、眩晕等问题时,能从架构链路定位可能的原因。
二、核心概念:先厘清五个基础问题
在进入架构细节之前,需要先明确几个贯穿全课程的核心概念。
1. 虚实融合的“锚定”:虚拟物体必须锚定在真实空间中的某个位置。锚定依赖SLAM(同步定位与地图构建)或VIO(视觉惯性里程计)提供六自由度位姿,显示系统再根据位姿把虚拟内容渲染到对应视角。
2. 显示链路与光路:微显示器(LCoS、Micro-OLED、Micro-LED、LBS激光扫描)产生图像,经准直、中继、扩瞳、耦入与耦出,最终进入人眼。不同架构的差异,本质上是光在何处被折叠、扩瞳与传导。
3. 眼盒与视场角的矛盾:视场角决定“能看到多大的虚拟画面”,眼盒决定“眼睛能在多大范围内移动仍看到完整画面”。二者往往相互制约,是架构设计的核心权衡。
4. 透视与遮挡:AR要求用户同时看到真实世界与虚拟内容。光学透视(OST)通过半透半反元件实现,视频透视(VST)则通过摄像头采集再合成。二者在延迟、亮度、真实感上差异显著。
5. 人因与舒适度:辐辏调节冲突(VAC)、运动到光子延迟(MTP)、亮度不匹配、畸变与色差,都会引起视觉疲劳甚至眩晕。架构设计必须把人因约束前置,而不是事后补救。
三、整体框架:一张图看清AR显示系统
下图给出AR显示系统的整体架构关系。它从真实场景出发,经感知与计算形成渲染图像,再通过光学显示链路投射到人眼,同时由人因反馈回路持续校正。请重点观察各模块之间的数据流与信号流方向。
四、典型应用场景:架构选择由场景决定
不同应用对显示架构的要求差异极大。下表给出典型场景与架构取向的对应关系,可作为后续章节方案选型的参照。
| 应用场景 | 核心诉求 | 优先架构取向 | 主要挑战 |
|---|---|---|---|
| 工业巡检与远程协助 | 解放双手、信息叠加、长时间佩戴 | 单目衍射光波导 | 亮度不足、户外可读性 |
| 医疗手术导航 | 高精度配准、低延迟、立体感 | 双目OST + 光场 | VAC、注册误差 |
| 消费级AR眼镜 | 轻薄、外观接近普通眼镜 | 衍射光波导 + Micro-LED | 光效低、彩虹纹、成本 |
| 车载HUD | 大视场、远虚像、高亮度 | 自由曲面 / 全息反射 | 阳光倒灌、体积 |
| VR/AR一体机(VST) | 沉浸感、虚实遮挡 | Pancake + 摄像头透视 | 透视延迟、真实感 |
五、常见误区与学习建议
下面用一段伪代码概括AR显示系统的主循环,帮助你把架构链路与运行时行为对应起来:
loop 每帧 (目标 90Hz / MTP < 20ms):
pose = SLAM_VIO.update(camera, imu) # 感知层:六自由度位姿
scene = world_model.query(pose) # 计算层:空间理解与锚定
image = renderer.draw(scene, pose) # 渲染层:含畸变预校正
light = optical_engine.project(image) # 显示层:光机与波导传导
eye = human_vision.receive(light) # 人眼:虚实融合感知
comfort = evaluate(eye, latency, brightness)
if comfort < threshold:
adjust(optical_params, render_params) # 人因反馈校正
end loop