只有理解图形的三维处理方法才能掌握计算机图形学的原理。二维图形学只是三维图形学的一个特例。在几何流水线中,需要设定一个场景。首先从设定三维坐标系统这一步开始,进而在三维世界中定义完整的场景。在定义完整的场景之前需要完成模型的建立和变换两项工作。
对于同一个的物体,我们从不同的方向看,会看到不同的景象。这就是横看成岭侧成峰,远近高低各不同。对于同一个物体,所看到的视图取决于所观察的位置,而这个所观察的位置就是视点。视图也取决于观察的目标点,也就是视图的参考点。对于同一个物体而言,在同一位置观察这个物体的不同点,那么其视图也会不同。而这个被观察的点就是参考点。对于视图而言,不同的视野看到的物体不同的。大场景中看到的物体有可能时全景图,而在窄视野中看到的物体可能只是物体的一部分。所以决定所看到图形的因素有观察点的位置,观察的目标点,观察视图的向上方向,观察的宽度以及视图的高宽比。也就是在计算机图形中,必须指定这些参数才能正确的定义图像。
一旦确定了视图必须把它转化为可以在二维成像设备上显示的图像。在计算机图形学中,需要精确计算二维屏幕空间中每个点的颜色。把三维场景变换到二维空间需要定义一系列步骤:场景中哪一部分靠前,哪一部分时落在视点看到的范围内,以及场景如何转化到二维视图空间中。视图操作的基本工作时在世界空间中定义一个观察方式,让观察着可以观察到模型空间中允许看到的物体。定义观察方式包括把视点放在三维世界空间中,并且创建眼坐标系统,从而把三维世界空间转换到这个三维眼坐标空空,接着使用投影原理在三维眼坐标空间中定义一个二维平面,用来显示场景,实际上定义了一种映射关系,把那个平面看作为观察平面。
模型变换,视图变化和投影等机制通过图形API来管理,图形编程的任务就是给这些API提供正确的信息,并且按照正确的顺序调用这些API函数。所谓的视图变换就是通过建立一个从世界坐标系到眼坐标系的基本变换矩阵并把它应用到场景中所有实体来实现的过程。这个变换是把视点放在原点,看向Z轴,同时Y轴是向上方向。它把几何物体从世界坐标系变换到眼坐标系,同时保持模型中的几何关系不变。
在观看场景的时候需要定义一些因素:
- 定义模型的观看方式,包括视点的位置、视图的方向个范围,这些定义了视图变换。
- 定义三维空间到二维空间的投影,因为三维空间必须在二维的显示设备上才能被看见。对于不同的投影有不同的实现方式。
- 定义观看图像的视图设备区域,称为图形窗口,不应该和屏幕上的窗口混淆。
- 定义视图在窗口中的显示位置,着定义了窗口中的视口和窗口到视口的映射,该映射把二维空间变换到平面空间。
这四个因素分别称为建立视图环境、定义投影、定义窗口和定义视口。