计算机图形学中的视角变换——从平行线消失点开始

平行线消失点

在我们日常生活中,会发现这样一类现象:在照片或者图画上,原本是平行的物体(比如铁轨轨道,公路等)会随着他们的延伸逐渐相交于视野尽头,这个尽头就被称作消失点,类似于下面这幅图所显示的内容:

铁路图片

为什么原本平行的物体会出现这样的现象呢?我们可以从几何光学的角度直观的分析一下:
首先我们要大概了解眼球看到物体的过程:外界的光线进入眼球后成像的过程,是将一个外界的三维物体投影到视网膜上的过程,眼睛的成像过程可以近似为凸透镜,设u为物距,v为像距,f为焦距则满足公式:

\[\frac{1}{u}+\frac{1}{v}=\frac{1}{f} \]

我们以眼球凸透镜的光心为原点,由光心指向物体的方向为正向,建立一个右手系,对于任意一个点\((a_x,a_y,a_z)\),可知物距为\(u=a_z\),根据公式计算得到像距为

\[v=\frac{uf}{u-f}=\frac{a_zf}{a_z-f} \]

通过几何光学计算得到像的点为

\[\left( -\frac{f}{a_z-f}a_x,-\frac{f}{a_z-f}a_y,v \right) \]

在现实中,相比于外部空间,眼球和它的焦距都是非常小的,所以我们可以粗略的认为,像距和焦距相等的。接着运用变量代换可以发现,随着物体z轴的移动,在视觉平面上投影的线段为

\[y=\frac{a_y}{a_x}x \]

现在空间中有两个与z轴平行的线,那么它们投影在视觉平面上的直线也必然是\(y=Ax\)的形式。显然这些直线在视觉平面上必定相交与一个点\((0,0)\)。这样我们就找到了所有沿Z轴平行线的消失点。

这里需要指出的是,平行线的消失点和平行线的方向是有关系的,这里之所以恰好是\((0,0)\),根本原因是因为我选择的平行线方向和z轴平行,选择其他方向的平行线就会有其他的消失点。

视角变换

模型坐标从3D的世界中,转换到2D屏幕上,需要经历一系列的视角变换,视角变换由三部分组成,分别是

  1. 摄像机变换:由世界空间到摄像机空间
  2. 投影变换:由摄像机空间到正规化可视空间,这里的目的是屏蔽不同比例的显示屏带来的影响
  3. 视口变换:将正规化可视空间变换到屏幕上

我们这里只讨论投影变换

平行投影

暂无

正交投影

先将远近平面组成的视角空间投影到一个立方体内,投影的方法是:
xy轴坐标通过投影到近平面得到,z轴坐标做一个变换,原则上可以任意选择,保留z轴的相对大小关系即可,这里使用的变换是保持z=f的点仍然在f,z=n的点仍然在n上,然后其他点线性变换。
投影图片
然后再通过平行投影投影到正规化可视空间

参考资料

  1. 平行的铁轨,在人眼看来却似乎是相交的。任选坐标系,求人眼中2条相交铁轨的方程? - Johnny Richards的回答 - 知乎
  2. fundamentals of computer graphics-5th
posted @ 2023-10-29 22:53  日月久照  阅读(54)  评论(0编辑  收藏  举报