Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

第六十七 虚拟现实和物理世界

虚拟现实(Virtual Reality, VR)用计算机生成沉浸式三维环境;增强现实(AR)把数字信息叠加到现实世界;混合现实(MR)让虚拟与真实对象实时交互。它们共同构成“虚实融合“的交互形态,而物理引擎、数字孪生等技术则让虚拟世界越来越接近物理世界。


一、虚实光谱

1.1 从现实到虚拟的连续谱

真实世界 ←───────────────────────────────→ 完全虚拟
   │          │           │          │
  物理环境    AR          MR         VR
(无数字)   (叠加)   (虚实交互)  (沉浸)
技术全称说明示例
AR增强现实虚拟信息叠加在真实世界上Pokémon GO、AR 导航
VR虚拟现实完全沉浸于虚拟环境VR 游戏、VR 看房
MR混合现实虚拟对象与真实环境实时交互HoloLens、Vision Pro
XR扩展现实AR/VR/MR 的总称行业统称

1.2 发展简史

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 重建真实世界、虚实双向驱动

二、虚拟现实(VR)

2.1 VR 系统的组成

┌──────────────┐   ┌──────────────┐   ┌──────────────┐
│  显示子系统   │   │  交互子系统   │   │  计算子系统   │
│  头显/屏幕   │   │  手柄/手势   │   │  渲染/追踪   │
└──────────────┘   └──────────────┘   └──────────────┘
子系统说明
显示头戴显示器(HMD)、双眼视差、视场角
追踪头部追踪、手部追踪、眼动追踪、全身追踪
交互手柄、手势、语音、触觉反馈
渲染实时三维渲染,帧率 ≥ 90fps 防眩晕

2.2 沉浸感的关键指标

指标说明理想值
视场角(FOV)可见角度范围≥ 100°
刷新率每秒画面更新次数≥ 90Hz
延迟动作到画面反馈的时间< 20ms(Motion-to-Photon)
角分辨率每度像素数(PPD)≥ 30 PPD
瞳距调节适配不同用户自动/手动

2.3 防眩晕

VR 眩晕(模拟器病)源于前庭觉与视觉冲突。缓解手段:

手段说明
高刷新率 + 低延迟减少画面与身体感知的错位
固定参照物提供稳定的视觉锚点
瞬移移动代替平滑移动
渐进式切换避免突然的方向变化
中心视野柔化降低周边视场刺激

三、增强现实(AR)

3.1 AR 的实现方式

方式原理特点
光学透视(OST)半透光波导/棱镜叠加显示视野不受限,结构复杂
视频透视(VST)摄像头拍摄 + 屏幕合成视野受限,融合效果可控
手机 AR手机摄像头 + 屏幕门槛最低,最普及

3.2 AR 核心技术

技术说明
SLAM(见第 66 章)环境定位与建图
平面检测识别地面、桌面等水平面
光照估计让虚拟物体光影与真实环境一致
遮挡处理真实物体正确遮挡虚拟物体
图像识别识别图片/二维码触发 AR 内容

3.3 AR 的应用

领域应用
工业设备维修指导、远程专家协作
医疗手术导航、解剖教学
零售虚拟试衣、家具摆放预览
教育立体几何、化学分子可视化
导航车道级 AR 导航

四、混合现实与空间计算

4.1 MR 的关键:虚实交互

MR 不止是“叠加“,而是让虚拟物体理解并响应真实环境:

真实房间 ──三维重建──> 空间网格(Mesh)
     │
     ├──> 虚拟沙发 落到真实地面上、被墙遮挡
     ├──> 虚拟宠物 绕过真实桌子行走
     └──> 真实的手 抓取虚拟物体
能力说明
空间映射实时三维重建环境
场景理解识别物体类别(沙发、门、桌子)
空间锚点虚拟内容固定在真实位置
眼动/手势自然交互方式(Vision Pro 的核心)

4.2 空间计算

空间计算(Spatial Computing)是苹果 Vision Pro 等设备推动的新范式:以空间为界面,摆脱屏幕的二维限制。

传统计算:  键盘 + 鼠标 + 屏幕(二维)
空间计算:  手势 + 眼动 + 语音(三维空间操作)

五、物理引擎

5.1 物理引擎是什么

物理引擎模拟真实世界的力学规律,让虚拟物体遵循物理法则运动:重力、碰撞、摩擦、弹性。

每帧更新循环:
输入力/速度 → 积分运动 → 碰撞检测 → 碰撞响应 → 更新位置
引擎语言特点
BulletC++开源,刚体/软体物理
PhysXC++NVIDIA,游戏工业标准
HavokC++游戏、电影工业级
Box2DC++2D 物理,轻量
MuJoCoC++机器人仿真(见第 66 章)

5.2 物理模拟的三大要素

要素说明
刚体动力学刚体的平移与旋转、力与力矩
碰撞检测检测物体是否相交(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
}
}

5.3 渲染管线与物理的配合

游戏循环:
输入 → 物理更新(固定步长) → AI/逻辑 → 渲染(插值)
              │
       固定时间步长保证物理稳定

六、数字孪生

6.1 什么是数字孪生

数字孪生(Digital Twin)是物理实体在数字世界中的实时镜像:通过传感器数据驱动虚拟模型,实现监控、预测与反向控制。

物理世界                    数字世界
┌──────────┐   数据流    ┌──────────┐
│ 真实设备  │ ──────────> │ 虚拟模型  │
│ 工厂/城市 │ <────────── │ 仿真/预测 │
└──────────┘   控制流    └──────────┘

6.2 数字孪生的组成

组成说明
物理实体真实世界的设备、产线、建筑
虚拟模型高保真三维模型 + 物理仿真
数据连接传感器、IoT、实时数据流
分析引擎AI 预测、优化、异常检测
交互界面可视化大屏、VR/AR 巡检

6.3 应用场景

场景价值
智能制造产线仿真、故障预测、虚拟调试
智慧城市交通仿真、能耗管理、应急演练
能源风电场/电网运行优化
医疗人体器官模型、手术预演
航天卫星/火箭的数字样机

七、从虚拟到物理:空间智能

7.1 空间智能

李飞飞提出“空间智能“概念:让 AI 理解三维空间、预测空间变化并生成行动——它是虚拟现实、机器人与 AGI 的交汇点。

能力说明
三维理解从图像/点云重建三维世界
空间推理推断物体遮挡、深度、物理关系
生成从文本/图像生成三维内容(3D AIGC)
行动把空间理解转化为物理动作

7.2 三维重建

方法说明
多视角立体(MVS)多张照片恢复三维点云
NeRF(神经辐射场)神经网络隐式表达三维场景
3D Gaussian Splatting高斯点渲染,实时高质量重建
LiDAR 扫描激光雷达直接采集点云

7.3 3D 内容生成(3D AIGC)

文本/图片
   │
   ▼
大模型(如 TripoSR、Meshy)
   │
   ▼
三维网格/高斯 → 纹理 → 动画 → 引擎(Unity/Unreal)

八、XR 设备与 Rust 生态

8.1 主流设备

设备类型特点
Meta Quest 3VR/MR消费级主流,彩色透视
Apple Vision ProMR空间计算标杆,眼动+手势
HoloLens 2MR工业级,光学透视
PS VR2VR主机生态,眼动追踪
谷歌 GlassAR轻量眼镜形态

8.2 Rust 相关生态

Crate用途
bevyRust 游戏/3D 引擎(ECS 架构)
wgpu跨平台图形 API(WebGPU)
three-d3D 渲染与交互框架
openxrOpenXR 标准绑定(XR 设备)
physxNVIDIA PhysX 绑定(物理引擎)
nalgebra线性代数(变换矩阵)
// 用 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

练习建议

  1. 碰撞检测:用 Rust 实现圆与圆、AABB 与 AABB 的碰撞检测,并模拟小球反弹。
  2. 三维变换:用 nalgebra 实现三维物体的平移、旋转、缩放矩阵变换,验证组合顺序的影响。
  3. 3D 场景:用 bevy 搭建一个可旋转的 3D 场景,加入光照和材质,观察渲染效果。
  4. AR 实践:用手机 AR 工具(如 ARCore/ARKit 示例或 WebAR)把一个虚拟物体放到桌面上,观察光照与遮挡。
  5. 物理仿真:用 bevy 的物理插件(Rapier)模拟一堆积木倒塌,调节摩擦与恢复系数观察差异。
  6. 数字孪生设计:为一个工厂设备设计数字孪生方案:传感器选型、数据流架构、虚拟模型与预测分析。