1、视差基础:什么是视差?人眼立体视觉原理、视差与深度的关系

各位同学好,我是老张。在3D显示这个行当摸爬滚打了十几年,今天咱们来聊聊最基础、也最核心的一个概念——视差。

说白了,没有视差,就没有立体感。你看到的那些3D电影、VR眼镜里的沉浸世界,追根溯源,都是靠视差“骗”过你的眼睛。

1.1 什么是视差?一个简单的实验

先别急着看公式。我建议你做个动作:伸出一根手指,竖在眼前30厘米处。然后轮流闭上左眼和右眼。

看到了吗?手指的位置在“跳”。

当你用左眼看时,手指在背景的左边;换成右眼,手指就“跑”到了右边。这个左右眼看到的、物体在背景上位置的差异,就是视差。

核心定义:视差(Parallax)是指由于观察位置不同,同一物体在视网膜上成像位置的差异。单位通常用像素或角度(弧分)表示。

我在早期做裸眼3D手机项目时,就遇到过一个问题:屏幕分辨率不够,视差算出来只有几个像素。结果呢?用户戴上眼镜看,立体感很弱,像在看纸片。嗯,这里要注意,视差太小,立体感就出不来。

1.2 人眼立体视觉原理:大脑是个“三角测量仪”

为什么会这样?因为人眼不是摄像机,而是一对双目传感器。

你想想看,我们两只眼睛之间大约有6-7厘米的间距,这叫瞳距(IPD, Interpupillary Distance)。正是这个间距,让左右眼看到了两个略有不同的画面。

大脑收到这两张“照片”后,会做一件事:匹配对应点,计算差异。这个差异就是视差。然后,大脑根据视差的大小,反推出物体的深度。

这个过程,本质上就是三角测量。

个人经验:我记得有一次调试VR头显,瞳距设置错了5毫米。结果用户戴上后,说看东西有重影,而且头晕。后来我强制校准了IPD参数,问题立刻解决。所以,瞳距是立体视觉的物理基础,千万别忽略。

人眼立体视觉的完整链条是这样的:

  1. 物理输入:物体反射光线,进入左右眼。
  2. 视网膜成像:左右眼视网膜上形成略有偏移的二维图像。
  3. 神经传输:视神经将信号传给大脑视觉皮层。
  4. 大脑融合:大脑找到左右眼图像的对应点,计算视差。
  5. 深度感知:大脑根据视差映射出深度,产生立体感。

这个过程非常快,快到你自己都意识不到。但一旦视差计算错误,大脑就会“打架”,轻则立体感消失,重则眩晕呕吐。

1.3 视差与深度的关系:一个反比公式

好,现在咱们来点硬核的。视差和深度到底是什么关系?

我直接给结论:视差与深度成反比。

公式很简单:

视差 (d) = (瞳距 (B) × 焦距 (f)) / 深度 (Z)

其中:

  • B:瞳距,约6.5cm
  • f:眼睛的焦距,约17mm
  • Z:物体到眼睛的距离(深度)

你看,Z在分母上。这意味着:

  • 物体越近(Z小),视差越大。比如手指在眼前30cm,视差很明显。
  • 物体越远(Z大),视差越小。比如看远处的山,左右眼看到的几乎一样。

避坑指南:我曾经在开发3D游戏时,把远处物体的视差设成了0。结果玩家说“远处的山像贴图,没有立体感”。后来我意识到,即使物体在无穷远,视差也不应该为0,而是趋近于0。如果硬设为0,大脑会认为那个物体是“无限远”,反而产生不自然感。

为了让你更直观地理解,我画了一张图:

视差与深度关系示意图 左眼 右眼 瞳距 B ≈ 6.5cm 近物 视差大 (Z小) 远物 视差小 (Z大) 深度 Z 公式:视差 ∝ 1 / 深度 近处视差大,远处视差小

从这张图你可以看到:近处的红色物体,左右眼光路夹角大,视差大;远处的绿色物体,光路夹角小,视差小。这就是视差与深度反比关系的直观体现。

1.4 视差的分类:正视差、负视差与零视差

在3D显示中,视差不是随便给的。根据物体在屏幕前后的位置,视差分为三种:

类型 定义 视觉感受 典型应用
正视差 物体在屏幕后方,左右眼图像交叉点在屏幕后 物体“陷入”屏幕内部 3D电影中的背景、远景
负视差 物体在屏幕前方,左右眼图像交叉点在屏幕前 物体“飞出”屏幕 3D电影中向你飞来的物体
零视差 物体正好在屏幕平面上,左右眼图像重合 物体与屏幕平齐 字幕、UI界面

关键点:零视差平面(ZPS, Zero Parallax Setting)是3D内容制作的基准面。我建议你在设计3D场景时,先把主要物体放在零视差平面上,然后根据深度需求,向正负方向扩展。这样能最大程度减少视觉疲劳。

举个例子:在制作3D电影《阿凡达》时,导演卡梅隆就严格控制了负视差的幅度。他规定,负视差不能超过瞳距的1/30,否则观众会感到眼睛“对不上焦”。这个经验值,后来成了行业标准。

1.5 视差与景深的关系:一个实用的表格

最后,我整理了一个表格,帮你快速理解视差、深度、景深三者的关系:

参数 定义 与视差的关系 实际影响
视差 左右眼图像对应点的位置差 — 决定立体感的强弱
深度 物体到观察者的实际距离 反比:深度越大,视差越小 决定物体看起来的远近
景深 人眼能清晰感知的深度范围 正比:视差范围越大,景深越宽 决定立体空间的“厚度”

嗯,这里要注意:景深不是越大越好。我在测试一款裸眼3D显示器时,为了追求“震撼”,把视差范围拉得很大。结果呢?用户看了10分钟就说眼睛酸胀。后来我查了资料,发现人眼舒适的视差范围大约在±1.5度(弧分)以内。超过这个范围,大脑就需要强行“辐辏-调节”分离,容易疲劳。

个人习惯:我现在做3D内容时,会先用一个“视差标尺”工具,把场景中所有物体的视差控制在±1度以内。这样既能保证立体感,又能让用户长时间观看不累。你可以试试。

好了,这一章的内容就到这里。视差是3D显示的基石,理解它,后面的内容就顺了。