几何形状的显示

8.3. 几何形状的显示#

此前我们已经介绍了几何形状的表示与建模,一系列软件和相关技术能够有效地在计算机中组织用于几何形状表示的数据结构,从而便于后续的分析和编辑。在几何建模领域,几何形状的显示也同样重要,它构建了我们理解和交互三维模型的桥梁,能让我们在计算机中对几何模型进行浏览和查看。本节将介绍如何在计算机屏幕中显示几何形状,解释如何将三维的形状转换为二维的图形表达。

8.3.1. 成像模型#

在现实三维世界中,视觉是大多数人感知物体和场景最重要的方式。具有三维形状的物体经过人眼这一复杂的光学系统,在视网膜处理后呈现为二维的图形,从而被我们观察和理解。计算机中几何形状的显示也模拟了这一过程,使得我们能够像观察现实中的三维物体那样在计算机的游戏或视频中感知虚拟的场景。这一三维到二维的显示过程,我们可以将其归纳为一个成像模型,包括以下几个重要概念:

  1. 光学系统:一个具有特定光学属性的复杂物理系统,一般而言具有将光线汇聚的功能;

  2. 被观察物体:具有一定几何形状的三维对象;

  3. 成像结果:被观察物体所呈现出的二维图形。

8.3.2. 成像原理#

日常生活中,除了人和动物的眼睛以外,最常见的用于成像的光学系统就是相机中的镜头。实际的相机镜头往往具有复杂的组成,在可视计算领域,我们通常将相机简化为具有特定参数的相机模型。下面,我们就将以最简单的相机模型——针孔相机模型(pinhole camera model)为例,介绍几何形状的显示原理。

如图 TODO,针孔相机模型基于小孔成像原理,描述了三维对象显示在二维屏幕上的过程。对于三维空间中的点 \(x,y,z\),根据相似三角形的原理,成像平面上将会得到如下的二维位置 \(x',y'\)

(8.4)#\[\begin{split} \left\{\begin{aligned} x'&=f\frac{x}{z}+c_x\,,\\ y'&=f\frac{y}{z}+c_y\,.\\ \end{aligned}\right. \end{split}\]

其中,\(f,c_x,c_y\) 是针孔相机模型本身具有的参数。实际情况下,由于光学系统往往由透镜构成,这会引入理想的小孔成像中不存在的畸变问题,因此,更加复杂的相机模型还会定义一些畸变参数,来更好地模拟实际情况下的成像过程。

提示

事实上,在式 (8.4) 中我们不难发现,三维点 \(x,y,z\) 所在的坐标系,本身已经是以相机为原点的局部坐标系了。实际的显示过程中需要处理全局坐标系下的几何形状,这就需要将目标形状变换到相机空间的局部坐标系。这一过程称为坐标系变换,涉及到一系列矩阵运算,我们将在 §12.2 中详细介绍。另外,式 (8.4) 其实也属于几何变换的一种,所对应的是投影变换最简单的形式,我们将在 §12.4 中详细介绍投影变换。

在完成了成像后,三维形状就能够有效地被显示在二维平面上,从而呈现出图形化结果。特别地,如果目标几何形状还定义了外观属性,那么这些属性也同样会附加到二维平面上形成逐像素的颜色,这些像素被显示在计算机屏幕上,最终组合成人类能够理解的屏幕图像。这一完整流程称为渲染(rendering),我们将在后续渲染对应的部分进行更详细的展开。