---
title: "VR 头显光学互动实验｜Sandbox Physics"
description: "VR 头显里，为什么物体远近能变、对焦距离却不变，眼睛稍挪就看不到画面四角？两者来源不同。"
canonical_url: "https://sandboxphysics.com/zh/labs/vr-headset-optics/"
language: "zh-CN"
page_type: "lab"
alternate_languages:
  en: "https://sandboxphysics.com/labs/vr-headset-optics/"
last_modified: "2026-10-27"
---

光学 038 · 成像、仪器与视觉系统

# VR 头显光学

**VR 头显里，为什么物体远近能变、对焦距离却不变，眼睛稍挪就看不到画面四角？** 两者来源不同。立体深度靠左右眼画面的差别，画面怎么变都行；对焦由镜片决定，屏幕的虚像始终在同一个距离上。镜片只在一小块区域里送出完整画面，这块区域叫眼盒。瞳孔挪出去一点，角落的光就进不了眼睛。

一对目镜、立体显示屏和可移动的有限瞳孔，解析地决定每只眼能看到视场的哪些部分。两张计算出的角域图把立体视差和光学焦面分开；瞳孔平面地图显示全视场眼箱，以及视野在哪里变黑。

> 交互仿真：在浏览器中打开本页，即可调整参数并运行模型。

目镜是理想的近轴 45 mm 薄透镜，不是商用广角 VR 的光学方案。角域图是几何计算，不是视网膜照片。不模拟 Fresnel 或 Pancake 折叠光路、畸变、pupil swim、色差伪影和人体舒适度。

物理教程

## 检验VR 头显光学的物理过程

**背景** 两块显示屏把标记画在不同方向上，但两条光学通道的焦平面深度相同。显示屏放在正目镜的焦距以内时，出射光是发散的，眼睛需要的调焦量为：$A=\frac{1000c}{1+ec},\qquad c=\frac1s-\frac1f$。曲率公式里的距离用毫米，调焦量用屈光度，眼距必须算进去。显示屏移到焦平面时，出射光束平行，调焦量正好为零。

**为什么值得理解** VR 头显里，为什么物体远近能变、对焦距离却不变，眼睛稍挪就看不到画面四角？

先抓重点

- **核心问题**: VR 头显里，为什么物体远近能变、对焦距离却不变，眼睛稍挪就看不到画面四角？
- **一句话直觉**: 改变立体标记的深度，不会移动光学焦平面。两种线索的差值为：$\Delta_{AV}=\left|A-\frac1{Z_V}\right|$。这是两种几何线索之间的差，不预测某个人会不会疲劳，也不是舒适度评分。要改变光学焦平面，只能移动真实的屏幕；立体视差不会自动重新对焦。

### 核心数学模型

#### 有限虚像焦平面与眼距

$$
s'=-\frac1c,\quad K=1+ec,\quad L_A=e+\frac1c,\quad A=\frac{1000c}{K}
$$

带符号的虚像位于目镜靠显示屏的一侧。焦平面距离从瞳孔量起，不从透镜量起。曲率为零时，取调焦量趋于零的连续极限，对焦在无穷远。焦距固定为 45 mm，两块显示屏都是边长 24 mm 的正方形。

#### 同一组光线、同一幅角域图

$$
u_{\mathrm{out}}=\frac{h_\ell-h_s}{s}-\frac{h_\ell}{f},\quad h_p=Kh_\ell-\frac es h_s,\quad q=\frac{h_s/s-cp_x}{K}
$$

从屏幕上一点出发的光线，先传到它与透镜的真实交点，按理想薄透镜改变斜率，再传到瞳孔平面。观察方向的斜率和出射光线的斜率相反。固定角域卡用的就是这些穿过瞳孔中心的方向，明暗按解析算出的通光比例着色，不模拟视网膜上的模糊。

#### 有限瞳孔与依赖视场的通光

$$
R=Ka,\quad \mathbf b=-\frac es\mathbf h_s,\quad T(\mathbf h_s)=\frac{\operatorname{area}\!\left(B_R(\mathbf b)\cap B_r(\mathbf p)\right)}{\pi r^2}
$$

每个显示点在眼睛所在平面上照出一个圆形足迹。这个圆和有限瞳孔的交集用解析公式算出，表示瞳孔有多大比例接到光；它不是光源功率，也不是标定亮度。视场角点可能已经看不见，中央却仍然通光。粉色示例光线在没能进入镜孔的地方终止。

#### 一个轴向切片上的全视场眼箱

$$
\max_{\mathbf h_s\in\{(\pm H,\pm H)\}}\|\mathbf p+\tfrac es\mathbf h_s\|+r\le Ka
$$

方形视场里离中心最远的是角点。只有每个角点的光束都盖住整个有限瞳孔，而不只是瞳孔中心，才显示为绿色。四个青色圈是角点光束的足迹，白圈按真实位移和直径画出所选瞳孔。琥珀区域能看到中央视场，但可能丢掉角点。

#### 水平全视场容差

$$
b_{\mathrm{full}}=\sqrt{(Ka-r)^2-\beta^2}-\beta,\quad \beta=\frac{eH}{s},\quad Ka-r\ge\sqrt2\,\beta
$$

这个半宽只对应全视场眼箱切片的水平中心线。存在条件不满足时，读数为零。改变眼距会改变各个足迹之间的距离，通常让容差变紧。图上画的是完整的二维切片，不是三维眼箱体积。

#### 立体线索不是光学重新对焦

$$
q_\pm=-\frac{x_\pm}{1000Z_V},\quad h_{s,\pm}=s(Kq_\pm+cp_x),\quad V=\frac1{Z_V}
$$

两条通道相距 64 mm。标记按当前瞳孔中心位置做理想重标定，用来表示所选的轴向目标深度。它改变双眼看到的方向，波前曲率却不变。这是一个定义清楚的几何立体刺激，本 Lab 没有实现眼动追踪、神经融合，也没有注视驱动的变焦控制器。

### 常见难点

#### 立体物体变近，光学焦平面就自动变近

**容易误解** 只要双眼图像表示一个近目标，显示光也必定在那个距离合焦。

**正确理解** 视差决定双眼会聚的刺激，屏幕到目镜的距离决定调焦的刺激。标记看起来再立体，两者也可能对不上。模型不设通用的不适阈值，也不预测个人视觉健康。

### 动手实验

1. 01

   #### 场景 1：准直光学焦平面

   从准直焦平面开始，把立体标记深度移向 0.4 米：粉色标记分开，会聚需求条升高，光学需求条仍是零。

   **你会看到：** 所有光学元件和光线段都按同一个毫米比例绘制。每张卡片显示固定的角度窗口或瞳孔平面窗口，在桌面或触屏上旋转场景后仍然可见。

2. 02

   #### 场景 2：立体深度与光学调焦

   选择深度与调焦预设，把真实屏幕往目镜方向移，直到两根需求条相遇。看屏幕位置和焦平面读数一起变化：焦平面是靠移动屏幕改变的，不是靠缩放图像。

   **你会看到：** 全视场容差比轴上通光严格。水平通光视场统计的是屏幕水平中心线上、光束与瞳孔有任何重叠的范围，并不保证整幅图都很亮。

3. 03

   #### 场景 3：有限瞳孔与眼箱

   选择眼箱预设，让两个瞳孔依次穿过绿色区域、琥珀边缘，进入外面的黑色区域。再逐一改变镜孔半径、瞳孔直径和眼距。

   **你会看到：** 这个一级模型不含商用 Fresnel 刻槽、Pancake 偏振折叠、离轴处方、畸变、色边、纱窗纹理和 pupil swim。斜率很大的组合会被标为超出近似。画出的眼壳只示意瞳孔通光口，不模拟视网膜解剖。

物理结论

解释头显时，要把三件事分开：光学焦平面在哪里，双眼看到的立体深度，有限瞳孔能接收多少视场。画面看起来立体，并不能证明其中任何一件。

波与光学 · 入门路径

## 从一条光线到干涉测量

从折射出发，找到光线模型失效的地方，再用干涉测量极小的距离。

[从这里开始 → **光学界面探索器** 转动入射角，观察反射与透射功率此消彼长；再切换到“临界角与全反射”场景。 观察 · 11 分钟](https://sandboxphysics.com/zh/labs/optical-boundary-explorer/)

1. [1 光学界面探索器](https://sandboxphysics.com/zh/labs/optical-boundary-explorer/)
2. [2 彩虹焦散观测站](https://sandboxphysics.com/zh/labs/rainbow-laboratory/)
3. [3 针孔相机](https://sandboxphysics.com/zh/labs/camera-obscura/)
4. [4 相干波合成器](https://sandboxphysics.com/zh/labs/coherent-wave-composer/)
5. [5 Young 双缝实验台](https://sandboxphysics.com/zh/labs/young-double-slit-bench/)
6. [6 Michelson 精密测量台](https://sandboxphysics.com/zh/labs/michelson-precision-lab/)

[查看完整路径 →](https://sandboxphysics.com/zh/topics/waves-and-optics/#starter-path)
