文档介绍:第9章真实感图形技术
1.  消隐技术
2.  光照模型和明暗处理
3.  颜色模型和处理技术 
用计算机生成三维真实图形是计算机图形学研究的重要内容之一。真实图形在计算机仿真模拟、几何造型、广告影视、指挥控制和科学计算的可视化等方面都有广泛的应用。真实感图形技术是指在使用显示设备绘制物体图形时,必须把三维信息经过某种投影变换,在二维的显示表面上绘制出来,使其具有立体真实地感觉。三维图形的表现形式有三种,第一种是线框图,它是通过物体的棱边和轮廓线表示物体。用线框图表示的三维图形具有二义性。第二种形式是消隐图,图中只保留形体上能看见的部分,看不见或被遮挡的部分不画出来或用虚线表示。第三种形式是用光照效果、图案纹理和颜色,使图形具有立体真实地感觉。真实感图形技术包括消隐技术、光照模型、明暗处理和表面纹理、颜色模型等。
消隐技术
基本概念
对于一个不透明的三维物体,选择不同的视点观看物体时,由于物体表面之间的遮挡关系,所以无法看到物体上所有的线和面。正确判断哪些线和面是可见的,哪些是不可见的,对于准确和真实地绘出三维物体时至关重要的。图9-1-1(a)是一个立方体的线框图,如果不去掉不可见的线段,就会产生图形理解上的二义性,如图9-1-1(b)和图9-1-1(c)所示。
图9-1-1 三维线框图理解的二义性
在显示三维物体时,不仅要决定物体上每条边在视图区中的位置,而且要决定哪些边是可见的,必须显示,哪些边是不可见,必须去掉活用虚线来表示。找出并消除物体中不可见的部分,称为消隐。经过消隐得到的图形称为消隐图。
消隐的对象是三维物体。三维物体在计算机中的表示方法很多,最简单的表示方法是用其表面上的平面多边形表示。如果物体的表面是曲面,则可以用多个平面多边形作近似表示。多边形可以用其边界上的边来表示,而边又可进一步用其两个端点来表示。根据消隐对象的不同,消隐算法可分为两类:一是线消隐,消除的是物体上不可见的线段;二是面消隐,消除的是物体上不可见的面。一般来说,当用笔式绘图仪或其它画线设备绘制图形时,采用线消隐,而当用光栅图形显示器来显示图形时,采用面消隐。
几乎所有的消隐算法都涉及到排序问题。消隐算法的基本思想是将物体上所有的点、线、面,按照距视点的远近进行排序。一般来说,离视点较远的物体,就有可能被离视点较近的物体完全或部分遮盖。消隐算法的效率在很大程度上取决于排序的效率,通常可以采用相关性来提高排序的效率。所谓相关性是指考察物体或视图区的图像局部保持不变的一种性质,即相邻的点、线和区域有相似的性质。
下面主要介绍在光栅显示器上绘制物体真实图形时,必须解决的面消隐的问题。这方面的使用算法很多,包括:画家算法、Z缓冲区算法、扫描线算法、区域采样算法等。
画家算法
画家算法的基本思想,先把屏幕置成背景色,再把物体的各个面按其离视点的远近进行排序。离视点远的在表头,离视点近的在表尾,构造深度优先表。然后,从表头至表尾逐个取出多边形,投影到屏幕上,显示多边形所包含的实心区域。由于后显示的图形取代先显示的画面,而后显示的图形所代表的面离视点更近,所以,由远及近地绘制各面,就相当于消除隐藏面。这与油画家作画的过程类似,先画远景,再画中景,最后画近景,因此将这种算法称为画家算法。
下面对画家算法实现中所用到的数据文件格式、数据结构、算法流程图和主要的子程序功能作简单的介绍。
物体采用边界表示模式存储。数据文件由若干三元组和若干四元组组成。三元组表示物体顶点的坐标。四元组表示物体的某个面由哪些顶点构成。如图9-1-2所示,表示一个立方体的数据文件。
顶点的表示
8
1 0 0
1 1 0
1 1 1
1 0 1
0 0 0
0 1 0
0 1 1
0 0 1
面的表示
6
1 2 3 4
2 6 7 3
6 5 8 7
5 1 4 8
4 3 7 8
5 6 2 1
图9-1-2 画家算法中的数据表示
算法实现所需要的数据结构包括点记录(vertex)、面记录(patch)和排序数组。点记录由五个域构成,其中三个域用于存储点的空间坐标,另外两个域用于存储点的投影(屏幕)坐标。面记录由四个域组成,每个域存放对应的顶点号。排序数组的每个元素有两个域,其中一个域存放面与视点的距离,另一个域存放该面的面号。程序的流程图见图9-1-3。
画家算法的优点是简单、易于实现,并且可以作为实现更为复杂算法的基础。它的缺点是只能处理互不相交的面,而且深度优先级表中的顺序可能出错,如两个面相交或三个面相互重叠的情况,用任何方法都不能排出正确的顺序。这时,只能把有关的面进行分割后再排序。增加了算法的复杂度,因此,该算法使用具有一定的局限性。