本节摘要:VR 头显沿光谱处在"最远离现实"的一端。物理上分两个阵营:依赖高端 PC 的 PC VR,以及把计算单元塞进头显自身的一体机。本节从光学、显示、定位、计算四个子系统拆开看两种形态的工程差异;再用一个最小 demo 演示如何在 Unity 里配出同时跑在 Quest 3 和 PC VR 上的同一份代码。
阅读完本节,你应当能够:
VR 头显看似"装到头上就跑",实际上要解决 4 个并行的工程问题:光学(怎么把屏幕的图像变成"远"的画面)、显示(屏幕分辨率和刷新率够不够)、定位(怎么知道头转到哪)、计算(算力从哪里来)。这 4 个问题在 PC VR 和一体机上各有取舍。
直觉上:PC VR 把"计算"挪到一台可以装 600W 电源的机箱里,留下头显只做光学+显示+定位;一体机把"计算"也塞回头显,背上 4–5 瓦的电池,重量立刻上来。两者的差异本质是**"算力放哪里"**。
VR 头显里用一片透镜把屏幕的近图像"挪"到远方——这叫视觉焦距补偿。2018 年以前主流是菲涅尔透镜(Fresnel),它便宜、轻便,但会让屏幕边缘出现"果冻效应"和杂散光。2022 年以后主流是 Pancake 短焦(Pancake lens),它把光路折叠 2-3 次,厚度从 30mm 降到 15mm,但需要偏振片,光损增加 20-30%,需要更高亮度的屏幕。
Quest 3 用 Pancake 短焦,重量 515 克。Index 用菲涅尔,重量 809 克——这就是光学路线对总重量的直接影响。
显示端过去 5 年从 LCD 一路卷到 Micro-OLED。LCD 单眼能到 2160×2160,刷新率 90/120Hz,亮度和对比度受背光限制。Micro-OLED 单眼能到 3660×3200(Vision Pro),像素密度 3500+ PPI,对比度 1,000,000:1,但成本高、寿命短、发热大。
💡 关键直觉:分辨率上到每度 30 像素(PPD)后,再往上对人眼来说边际收益急剧下降——因为人眼中央凹的极限大约是 60 PPD。这是为什么 Vision Pro 在 4K Micro-OLED 上花的预算没有直接转化为"清晰度翻倍"。
定位的本质是"知道头显当前在空间的 6 个自由度(位置 3 + 姿态 3)"。
Quest 3 是 Inside-out 的代表:在 4 个广角鱼眼摄像头 + 红外泛光照明下,6DoF 误差控制在 1cm 以内。Vision Pro 用双红外鱼眼 + 2 颗 LiDAR 实现更准的深度辅助定位。
| 设备 | 类型 | 重量 | 单眼分辨率 | 刷新率 | 续航 | 价格 |
|---|---|---|---|---|---|---|
| Quest 3 | 一体机 | 515g | 2064×2208 | 90/120Hz | 2.3h | 499 美元 |
| Vision Pro | 一体机 | 600g | 3660×3200 | 90/100Hz | 2h | 3499 美元 |
| Pico 4 Ultra | 一体机 | 580g | 2160×2160 | 90Hz | 3h | 700 美元 |
| Index | PC VR | 809g | 1440×1600 | 120/144Hz | 依赖 PC | 999 美元 |
| Vive Pro 2 | PC VR | 850g | 2448×2448 | 120Hz | 依赖 PC | 799 美元 |
| PSVR2 | 主机 VR | 600g | 2000×2040 | 90/120Hz | 依赖 PS5 | 549 美元 |
看这张表:Quest 3 在重量/价格上占优,分辨率与刷新率也站得住中位线——这就是为什么它成为 2024 年消费 VR 的事实参考机。
我们用 Unity + OpenXR 配一个最简场景:把一只变色龙放在桌上,眼睛盯着它看 5 秒后它会跑开。这个 demo 既可以跑在 PC VR(Vive/Index/Quest Link),也可以跑在 Quest 3 一体机。
// 启动 OpenXR 加载器(Quest / PC VR 都能识别) public class OpenXRBootstrap : MonoBehaviour { void Start() { var settings = XRGeneralSettings.Instance.Manager; settings.InitializeLoaderSync(); settings.StartSubsystems(); } }
把这份代码放进空场景的入口脚本里,再加一个变色龙模型和注视检测:
public class ChameleonReaction : MonoBehaviour { public Transform playerHead; public float stareTime = 5f; private float _stared = 0f; void Update() { var cam = playerHead.position; var dir = (transform.position - cam).normalized; var angle = Vector3.Angle(playerHead.forward, dir); if (angle < 5f) // 视线几乎对准 { _stared += Time.deltaTime; if (_stared > stareTime) { // 5 秒盯着后跑开 GetComponent<Animator>().SetTrigger("Flee"); } } else { _stared = Mathf.Max(0, _stared - Time.deltaTime * 2f); } } }
这个 demo 在 Quest 3 一体机上跑,10 分钟能完成;通过 Quest Link 接到 PC 上跑,渲染分辨率能提到 4K×2,刷新率能从 90 提到 120——同一份代码,硬件升级直接反映在画面上。
把两种形态的工程取舍画成"取舍四元组"——能看到 PC VR 与一体机各占哪两个角。

下一节我们从中段往回走——AR 入口:手机 AR 与 AR 眼镜。