虚拟现实(Virtual Reality, VR)用计算机生成沉浸式三维环境;增强现实(AR)把数字信息叠加到现实世界;混合现实(MR)让虚拟与真实对象实时交互。它们共同构成“虚实融合“的交互形态,而物理引擎、数字孪生等技术则让虚拟世界越来越接近物理世界。
真实世界 ←───────────────────────────────→ 完全虚拟
│ │ │ │
物理环境 AR MR VR
(无数字) (叠加) (虚实交互) (沉浸)
| 技术 | 全称 | 说明 | 示例 |
| AR | 增强现实 | 虚拟信息叠加在真实世界上 | Pokémon GO、AR 导航 |
| VR | 虚拟现实 | 完全沉浸于虚拟环境 | VR 游戏、VR 看房 |
| MR | 混合现实 | 虚拟对象与真实环境实时交互 | HoloLens、Vision Pro |
| XR | 扩展现实 | AR/VR/MR 的总称 | 行业统称 |
1838 立体镜发明,双目视觉原理确立
1968 Sutherland 发明第一台头戴式显示器"达摩克利斯之剑"
1993 Sega VR 等早期消费级尝试失败
2012 Oculus Rift 众筹成功,VR 复兴
2016 Pokémon GO 引爆 AR;VR 元年
2019 5G 商用,云 VR 成为可能
2021 Meta 押注元宇宙,Quest 系列放量
2023 Apple Vision Pro 发布,空间计算时代开启
2020s 空间智能:AI 重建真实世界、虚实双向驱动
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 显示子系统 │ │ 交互子系统 │ │ 计算子系统 │
│ 头显/屏幕 │ │ 手柄/手势 │ │ 渲染/追踪 │
└──────────────┘ └──────────────┘ └──────────────┘
| 子系统 | 说明 |
| 显示 | 头戴显示器(HMD)、双眼视差、视场角 |
| 追踪 | 头部追踪、手部追踪、眼动追踪、全身追踪 |
| 交互 | 手柄、手势、语音、触觉反馈 |
| 渲染 | 实时三维渲染,帧率 ≥ 90fps 防眩晕 |
| 指标 | 说明 | 理想值 |
| 视场角(FOV) | 可见角度范围 | ≥ 100° |
| 刷新率 | 每秒画面更新次数 | ≥ 90Hz |
| 延迟 | 动作到画面反馈的时间 | < 20ms(Motion-to-Photon) |
| 角分辨率 | 每度像素数(PPD) | ≥ 30 PPD |
| 瞳距调节 | 适配不同用户 | 自动/手动 |
VR 眩晕(模拟器病)源于前庭觉与视觉冲突。缓解手段:
| 手段 | 说明 |
| 高刷新率 + 低延迟 | 减少画面与身体感知的错位 |
| 固定参照物 | 提供稳定的视觉锚点 |
| 瞬移移动 | 代替平滑移动 |
| 渐进式切换 | 避免突然的方向变化 |
| 中心视野柔化 | 降低周边视场刺激 |
| 方式 | 原理 | 特点 |
| 光学透视(OST) | 半透光波导/棱镜叠加显示 | 视野不受限,结构复杂 |
| 视频透视(VST) | 摄像头拍摄 + 屏幕合成 | 视野受限,融合效果可控 |
| 手机 AR | 手机摄像头 + 屏幕 | 门槛最低,最普及 |
| 技术 | 说明 |
| SLAM(见第 66 章) | 环境定位与建图 |
| 平面检测 | 识别地面、桌面等水平面 |
| 光照估计 | 让虚拟物体光影与真实环境一致 |
| 遮挡处理 | 真实物体正确遮挡虚拟物体 |
| 图像识别 | 识别图片/二维码触发 AR 内容 |
| 领域 | 应用 |
| 工业 | 设备维修指导、远程专家协作 |
| 医疗 | 手术导航、解剖教学 |
| 零售 | 虚拟试衣、家具摆放预览 |
| 教育 | 立体几何、化学分子可视化 |
| 导航 | 车道级 AR 导航 |
MR 不止是“叠加“,而是让虚拟物体理解并响应真实环境:
真实房间 ──三维重建──> 空间网格(Mesh)
│
├──> 虚拟沙发 落到真实地面上、被墙遮挡
├──> 虚拟宠物 绕过真实桌子行走
└──> 真实的手 抓取虚拟物体
| 能力 | 说明 |
| 空间映射 | 实时三维重建环境 |
| 场景理解 | 识别物体类别(沙发、门、桌子) |
| 空间锚点 | 虚拟内容固定在真实位置 |
| 眼动/手势 | 自然交互方式(Vision Pro 的核心) |
空间计算(Spatial Computing)是苹果 Vision Pro 等设备推动的新范式:以空间为界面,摆脱屏幕的二维限制。
传统计算: 键盘 + 鼠标 + 屏幕(二维)
空间计算: 手势 + 眼动 + 语音(三维空间操作)
物理引擎模拟真实世界的力学规律,让虚拟物体遵循物理法则运动:重力、碰撞、摩擦、弹性。
每帧更新循环:
输入力/速度 → 积分运动 → 碰撞检测 → 碰撞响应 → 更新位置
| 引擎 | 语言 | 特点 |
| Bullet | C++ | 开源,刚体/软体物理 |
| PhysX | C++ | NVIDIA,游戏工业标准 |
| Havok | C++ | 游戏、电影工业级 |
| Box2D | C++ | 2D 物理,轻量 |
| MuJoCo | C++ | 机器人仿真(见第 66 章) |
| 要素 | 说明 |
| 刚体动力学 | 刚体的平移与旋转、力与力矩 |
| 碰撞检测 | 检测物体是否相交(AABB、GJK 算法) |
| 约束求解 | 关节、接触、摩擦的力学约束 |
#![allow(unused)]
fn main() {
// 简单的碰撞检测:两个圆的相交判断
struct Circle { x: f64, y: f64, r: f64 }
fn circles_collide(a: &Circle, b: &Circle) -> bool {
let dx = a.x - b.x;
let dy = a.y - b.y;
let dist_sq = dx * dx + dy * dy;
let r_sum = a.r + b.r;
dist_sq <= r_sum * r_sum
}
}
游戏循环:
输入 → 物理更新(固定步长) → AI/逻辑 → 渲染(插值)
│
固定时间步长保证物理稳定
数字孪生(Digital Twin)是物理实体在数字世界中的实时镜像:通过传感器数据驱动虚拟模型,实现监控、预测与反向控制。
物理世界 数字世界
┌──────────┐ 数据流 ┌──────────┐
│ 真实设备 │ ──────────> │ 虚拟模型 │
│ 工厂/城市 │ <────────── │ 仿真/预测 │
└──────────┘ 控制流 └──────────┘
| 组成 | 说明 |
| 物理实体 | 真实世界的设备、产线、建筑 |
| 虚拟模型 | 高保真三维模型 + 物理仿真 |
| 数据连接 | 传感器、IoT、实时数据流 |
| 分析引擎 | AI 预测、优化、异常检测 |
| 交互界面 | 可视化大屏、VR/AR 巡检 |
| 场景 | 价值 |
| 智能制造 | 产线仿真、故障预测、虚拟调试 |
| 智慧城市 | 交通仿真、能耗管理、应急演练 |
| 能源 | 风电场/电网运行优化 |
| 医疗 | 人体器官模型、手术预演 |
| 航天 | 卫星/火箭的数字样机 |
李飞飞提出“空间智能“概念:让 AI 理解三维空间、预测空间变化并生成行动——它是虚拟现实、机器人与 AGI 的交汇点。
| 能力 | 说明 |
| 三维理解 | 从图像/点云重建三维世界 |
| 空间推理 | 推断物体遮挡、深度、物理关系 |
| 生成 | 从文本/图像生成三维内容(3D AIGC) |
| 行动 | 把空间理解转化为物理动作 |
| 方法 | 说明 |
| 多视角立体(MVS) | 多张照片恢复三维点云 |
| NeRF(神经辐射场) | 神经网络隐式表达三维场景 |
| 3D Gaussian Splatting | 高斯点渲染,实时高质量重建 |
| LiDAR 扫描 | 激光雷达直接采集点云 |
文本/图片
│
▼
大模型(如 TripoSR、Meshy)
│
▼
三维网格/高斯 → 纹理 → 动画 → 引擎(Unity/Unreal)
| 设备 | 类型 | 特点 |
| Meta Quest 3 | VR/MR | 消费级主流,彩色透视 |
| Apple Vision Pro | MR | 空间计算标杆,眼动+手势 |
| HoloLens 2 | MR | 工业级,光学透视 |
| PS VR2 | VR | 主机生态,眼动追踪 |
| 谷歌 Glass | AR | 轻量眼镜形态 |
// 用 bevy 创建最简单的 3D 场景
use bevy::prelude::*;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_systems(Startup, setup)
.run();
}
fn setup(
mut commands: Commands,
mut meshes: ResMut<Assets<Mesh>>,
mut materials: ResMut<Assets<StandardMaterial>>,
) {
// 相机
commands.spawn(Camera3dBundle::default());
// 立方体
commands.spawn(PbrBundle {
mesh: meshes.add(Cuboid::new(1.0, 1.0, 1.0)),
material: materials.add(StandardMaterial::default()),
transform: Transform::from_xyz(0.0, 0.0, -3.0),
..default()
});
}
| 议题 | 说明 |
| 健康 | 长时间使用对眼睛、颈椎、心理的影响 |
| 隐私 | XR 设备采集环境与用户行为数据 |
| 成瘾 | 虚拟世界的过度沉浸 |
| 虚实混淆 | 深伪与虚拟内容难以分辨 |
| 社会隔离 | 减少真实人际互动 |
| 数字鸿沟 | 设备昂贵,加剧不平等 |
| 知识点 | 要点 |
| 虚实光谱 | AR 叠加、VR 沉浸、MR 交互、XR 统称 |
| VR 关键 | 视场角、刷新率、延迟、防眩晕 |
| AR 技术 | SLAM、平面检测、光照估计、遮挡 |
| 空间计算 | 眼动+手势+语音,三维界面 |
| 物理引擎 | 刚体、碰撞检测、约束求解 |
| 数字孪生 | 物理实体的实时数字镜像 |
| 空间智能 | 三维理解、重建(NeRF/3DGS)、3D AIGC |
| XR 设备 | Quest、Vision Pro、HoloLens |
| Rust 生态 | bevy、wgpu、openxr、physx |
- 碰撞检测:用 Rust 实现圆与圆、AABB 与 AABB 的碰撞检测,并模拟小球反弹。
- 三维变换:用 nalgebra 实现三维物体的平移、旋转、缩放矩阵变换,验证组合顺序的影响。
- 3D 场景:用 bevy 搭建一个可旋转的 3D 场景,加入光照和材质,观察渲染效果。
- AR 实践:用手机 AR 工具(如 ARCore/ARKit 示例或 WebAR)把一个虚拟物体放到桌面上,观察光照与遮挡。
- 物理仿真:用 bevy 的物理插件(Rapier)模拟一堆积木倒塌,调节摩擦与恢复系数观察差异。
- 数字孪生设计:为一个工厂设备设计数字孪生方案:传感器选型、数据流架构、虚拟模型与预测分析。