计算机图形学课程总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机图形学课程总结-标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII
计算机图形学报告
前言
计算机图形学(Computer Graphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。
简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。
其从狭义上是来说是一种研究基于物理定律、经验方法以及认知原理,使用各种数学算法处理二维或三维图形数据,生成可视数据表现的科学。
广义上来看,计算机图形学不仅包含了从三维图形建模、绘制到动画的过程,同时也包括了对二维矢量图形以及图像视频融合处理的研究。
由于计算机图形学在许多领域的成功运用,特别是在迅猛发展的动漫产业中,带来了可观的经济效益。
另一方面,由于这些领域应用的推动,也给计算机图形学的发展提供了新的发展机遇与挑战。
计算机图形学的发展趋势包括以下几个方面:
1、与图形硬件的发展紧密结合,突破实时高真实感、高分辨率渲染的技术难点;
2、研究和谐自然的三维模型建模方法;
3、利用日益增长的计算性能,实现具有高度物理真实的动态仿真;
4、研究多种高精度数据获取与处理技术,增强图形技术的表现;
5、计算机图形学与图像视频处理技术的结合;
6、从追求绝对的真实感向追求与强调图形的表意性转变。
1、三维物体的表示
计算机图形学的核心技术之一就是三维造型三维物体种类繁多、千变万化,如树、花、云、石、水、砖、木板、橡胶、纸、大理石、钢、玻璃、塑料和布等等。
因此,不存在描述具有上述各种不同物质所有特征的统一方法。
为了用计算机生成景物的真实感图形,就需要研究能精确描述物体特征的表示方法。
根据三维物体的特征,可将三维物体分为规则物体和非规则物体两类。
三维实体表示方法通常分为两大类:边界表示和空间分割表示,尽管并非所有的表示都能完全属于这两类范畴中的某一类。
边界表示(B-reps)用一组曲面来描述三维物体,这些曲面将物体分为内部和外部。
边界表示的典型例子是多边形平面片和样条曲面。
空间分割表示(Space-Partitioning)用来描述物体内部性质,将包含一物体的空间区域分割为一组小的、非重叠的、连续实体(通常是立方体)。
三维物体的一般空间分割描述是八叉树表示。
本章主要介绍三维物体的各种表示方法及其特点。
1.1 三维物体的数据结构 给定五个点 P 1,P 2,P 3,P 4,P 5,由五条线段连接它们可以组成不同的物体:同样是五个点、用五条边连接,不同的连接方法可构成不同的物体。
惟一地表示一个物体,描述该物体的数据必须包含两类信息:
(1)几何信息:描述物体的几何形状、空间位置关系;
(2)拓扑信息:说明物体的构成规则。
把构成物体的几何、拓扑两类信息组合在描述物体的数据中,形成了不同的数据结构形式。
但不管形式如何,都必须满足一些基本的条件:1、能够描述物体的几何关系和拓扑关系;2、对物体的描述应该是完整的、惟一的;3、便于对数据进行各种处理,且能获得较快的速度;4、数据的冗余量要小。
5、三维物体的层次结构:
1.2 多边形表面
表示三维物体的最常用方法是使用一组包围物体内部的表面多边形。
大多数图形系统以一组表面多边形来存储物体的描述。
由于所有表面以线性方程加以描述,因此简化并加速了物体的表面绘制和显示。
故,多边形描述被称为“标准图形物体”。
多面体的多边形表示精确定义了物体的表面特征,但对其他物体,则通过多边形网格逼近表示。
通过沿多边形表面进行明暗处理消除或减少多边形棱边,以实现真实感绘制。
为了提高逼近精度,可通过将曲面分成更小的多边形面片加以改进。
本课程主要讲解了多边形表面法、平面方程法、多边形网络法。
1.3 二次曲面和超二次曲面
二次曲面是一类常用的物体,由二次方程描述,包括球面、椭球面、环面、抛物面和双曲面。
二次曲面,尤其是球面和椭球面,是最基本的图形物体,经常作为图元包含在图形包中,由此可以构造更复杂的物体。
1.4 柔性物体
有些物体不具有固定形状,当处于运动状态或接近其他物体时会变化其表面特征,如分子结构、水珠、带状物体、人类肌肉等。
这些物体具有“柔性”,称之为柔性物体 (Blobby objects),因为这些物体具有一定程度的流动性。
目前已开发了几种用分布函数来表示柔性物体的建模方法,其一是用 Gauss 密度函数的组合来对物体建模,表面函数定义如下:
0)(2
=-=∑-T e b z y x f k r a k k k ,,
其中, , T 是某个特定临界值,参数 a k ,b k 用来调整单个柔性物体。
2、三维空间图形观察 由于屏幕和绘图机只能用二维空间来表示图形,因此要显示三维图形就必须用投影方法来降低其维数。
为了对三维物体做投影,首先要在三维空间中给定一投影平面和一投影中心,从投影中心发出的所有通过物体的射线与投影平面的交点的集合便形成了物体的投影。
当投影中心位于无限远时,从投影中心发出的通过物体的射线形成一族平行线,因此三维物体的投影变换分为两类:透视投影和平行投影。
2.1 三维观察步骤 建立三维景象可以比喻为使用一种人造照相机的概念,我们能够移动照相机到任意位置,用我们希望的任意方法来定向它,而且可以用快门对三维物体获取二维图像的快照。
虽然人造照相机是一个有用的概念,但从产生一个图像来看,它比只按一下按钮要多点麻烦。
事实上,创建我们的“照片”需实现:确定投影类型;定义观察坐标系。
2.2 三维投影变换
三维空间中的直线之投影仍是直线,因此只要找到直线段的端点的投影,再把两投影点连接起来,所得之直线即为原直线段的投影。
2.2.1 透视投影及其分类 透视投影变换由投影平面和投影中心所确定。
物体投影的大小和投影中心到物体的距离成反比。
任何一束不平行于投影平面的平行线,其透视投影后将会聚到一点,该点称之为灭点(Vanishing Point)。
在三维空间中平行线只会在无穷远点处相交所以灭点也可看作是无穷远点的透视投影。
在所有灭点中,平行于三个坐标轴之一的直线束的灭点称为主灭点 (Principal Vanishing Point),主灭点最多有三个。
按主灭点数目的多少,透视投影分为一点透视、两点透视和三点透视。
222k k k k z y x r ++=
2.2.2 透视投影的确定
2.2.3 平行投影及其分类
平行投影由通过物体上各点的与投影方向平行的一束平行线(投影线)和投影平面的交点来实现。
如果投影方向和投影平面垂直,则该平行投影称为正平行投影;否则称为斜平行投影。
2.3 三维观察流程
变换的分类:模型变换;图象变换;视见变换。
三维图形的显示流程如下图所示:
2.4 三维图形裁剪
三维图形的裁剪指的是相对于三维观察体的裁剪。
由于三维观察体的大小和形状与生成显示的投影类型密切相关,不同类型的投影确定了不同形状和大小的观察体,这将使三维图形的裁剪较之二维图形的裁剪更加复杂费时。
为了简化三维裁剪,我们引入规范化观察体。
三维的规范化观察体分为两种,对于平行投影,规范化观察体为一单位立方体,由:
1 ,0 ,1 ,0 ,1 ,0======z z y y x x 六个平面围成。
透视投影时,其规范化观察体由平
面:1 , , ,
min ==±=±=z z z z y z x 所围成。
3、光照明模型原理 光照明模型是生成真实感图形的基础。
简言之,光照明模型即根据光学物理的有关定律,计算景物表面上任一点投向观察者眼中的光亮度的大小和色彩组成的公式。
对于在光栅图形设备上显示的真实感图形,我们需要依据光照明模型计算每一像素上可见的景物表面投向观察者的光亮度。
光照明模型分为局部光照明模型和整体光照明模型。
本章主要介绍基本光照模型
3.1 光源属性和物体表面属性 光源的属性包括它向四周所辐射光的光谱分布、空间光亮度分布,以及光源的几何形状。
光源有四类:点光源、线光源、面光源和体光源。
物体表面属性包括表面的材质和形状。
物体表面的材质类型决定了反射光线的强弱。
表面光滑的材质将反射较多的入射光,而较暗的表面则吸收较多的入射光。
对一个透明的表面,一部分入射光会被反射,而另一部分被折射。
粗糙的物体表面往往将反射光向各个方向散射,这种光线的散射现象称为漫反射。
非常粗糙的材质表面主要产生漫反射,因而从各个视角观察到的光亮度是几乎相同的。
3.2 简单的局部光照明模型 光源发出的光照射到景物表面时,会出现以下三种情况:
(1) 经景物表面向外反射形成反射光;
(2)若景物透明,则入射光会穿透该景物,产生透射光;
(3) 部分入射光将被景物表面吸收而转换为热能。
显然,只有反射光和透射光能够刺激人眼产生视觉效果。
简单的局部光照3.3 整体光照明模型
一个完整的光照明模型应该包括八个分量:由光源和环境引起的漫反射分量、镜面反射分量、规则透射分量和漫透射分量。
前面我们介绍的几个光照明模型仅考虑了由光源引起的漫反射分量和镜面反射分量,而环镜反射分量则简单地用一常数代替。
在图形学中,这类光照明模型称为局部光照明模型。
反之,能同时模拟光源和环境照明效果的光照明模型称作整体光照明模型。
整体
光照明模型的典型代表是 Whitted 模型和Hall模型。
且通过该两种模型进行试验得出的试验结果表明,Hall 模型不仅能反映物体表面的反射特性,而且能较精确地反映物体表面的透射性。
与 Whitted 模型相比,该模型能生成更为逼真的光照效果。
4、简单面绘制
用计算机生成连续色调的真实感图形必须完成四个基本任务:场景造型,取景变换和场景变换,隐藏面消除,计算场景中可见面的颜色。
本章就基于局部光照明模型的一些画面绘制算法进行讨论,包括隐藏面消除算法、明暗处理方法、阴影生成技术等。
隐藏线隐藏面的消除是计算机图形学中的一个基本问题,所涉及的对象是一个三维图形,而消隐后的图形要在二维空间中表现出来。
因此,消隐后显示的图形和三维空间到二维空间的投影方式有关。
给定一个三维物体及由投影类型、投影平面等因素所规定的观察规范以后,我们希望对于投影中心(透视投影)或投影方向(平行投影)来说,物体的哪些边和哪些面是可见的,以便只显示那些可见的边和面。
虽然这种基本思想的提出十分简单,但其实现却需要耗费大量的时间,因而出现了许多经过精心设计的算法。
消隐方法根据其处理时是直接对物体定义进行处理还是处理它们的投影图象,可分为物空间消隐方法和像空间消隐方法。
4.1 多面体的隐藏线消除
多面体是最简单的三维物体,有关多面体的隐藏线消除之研究也进行的最早、研究的最彻底。
设有多个互不相交的多面体构成一场景,对该场景的消隐和其表示方式有关。
讨论多面体的隐藏线消除,总是假定它们用线框表示。
在这种方式下,多面体用棱边来表示,那些隐藏线就是一些不可见的棱边或棱边的一部分。
若能把每条棱边的可见和不可见的分界点找到,消隐问题就迎刃而解了。
这些分界点都是多面体的各棱边在oxy 平面上投影的交点
上图所示的多面体共有 15 条边,若不记棱边端点处的交点,其在oxy 平面上的投影间的交点仅有 5 个。
采用一些处理技术后,可使交点减少到两个。
这说明有许多棱边在oxy 平面上的投影相互间并不相交,且即使相交,也不一定为有效交点。
问题是如何能预先知道它们是不相交的,从而把它们排除在求交计算之外呢?对此,有以下几种方法用于加速求交。
4.2 函数型曲面的隐藏线消除
曲面可以用数学方程来描述,也可以用数据表来表示,如海拔高度或人口密度的拓扑数据等。
对于这种曲面函数,通常采用层位线来显示,并消除层位线中的隐藏部分。
设曲面的方程为:y = f (x , z ),则该曲面由两族曲线 x = x i = const 和 z = z i = const 来表示。
我们先考虑对应于 z = z i = const 的一族曲线的消隐算法假设图形显示器在水平方向有 M 个像素点,则建立具有 M 个分量的数组 yu [j ], j = 0, 1, …, M -1 以存储每一 x 值处平面曲线所取的最大 y 值。
yu [j ]的初值取为小于min f (x , z ) 的任意值。
设 z i = z 0 + ih , i = 0, 1, …, n , h > 0,平面 z = z n 是最靠近观察者的,从平面 z = z n 上的曲线 y = f (x , z n )开始,对水平方向上每一个像素点的对应 x 坐标值 x j ,计算:y j,n = f (x j , z n )若 y j,n > yu [j ],则点 (x j , y j ,n , z n ) 可见,并把 yu [j ] 之值置为y j,n ;若 y j,n < yu [j ],则点(x j , y j ,n , z n )不可见,此时不修改 yu [j ]之值。
对平面 z = z n 完成上述操作后,再对平面 z = z n -1上的曲线重复上述操作。
这样按照 z 值减少方向一条一条曲线处理,就得到一组消除隐藏线的曲线族。
4.3 参数曲面的隐藏线消除
由参数方程定义的曲面是图形学中最常用的曲
面表示形式。
参数曲面的显示通常采用曲线网格形式,因此参数曲面的隐藏线消除就是去掉被遮挡的曲线网格部分。
所以,为了实现消隐,必须进行以下工作:① 建立曲面的网格表示② 点的可见性测试;③ 轮廓处理这三个步骤。
在物空间实现隐藏线消除的简单算法也有建立曲面网格表示方法和点的可见性测试法。
4.4 光线投射算法
光线投射算法(ray casting algorithm)建立于几何光学基础之上,它沿光线的路径追踪可见面,是一种有效的消隐算法。
由于场景中有无数条光线,而我们仅对穿过像素点的光线感兴趣,因此可考虑从像素点出发,逆向跟踪射入场景的光线路径。
光线投射算法对包含曲面,特别是球面的场景有很高的效率。
光线投射的基本原理很简单,假设从视点 V 通过屏幕像素e 向场景投射一条光线,交场景中的景物于点 P 1, P 2, …, P m 那么离视点最近的点 P 1 就是画面在像素点 e 处的可见点,像素点 e 的光亮度应由点 P 1向视线方向 P 1V 辐
射的光亮度决定。
如果通过视点 V 向屏幕上每一像素点都投射光线以求得每一投射光线与场景的第一个交点(可见点),并置相应像素的光亮度为交点处的光亮度,那么,我们就得到一幅完整的真实感图形。
光线投射算法只能实现局部光照明效果,其突出优点是不必单独消隐,算法简单。
5、光线跟踪算法
光线跟踪算法是生成真实感图形的主要算法之一。
由于该算法原理简、实现方便,且能生成各种逼真的视觉效果,因而在图形学及 CAD 各个领域得到了广泛应用。
]1,0[,,),(),(),(
∈⎪⎩⎪⎨⎧===v u v u z z v u y y v u x x
5.1 光线跟踪的基本原理
尽管光线跟踪的基本原理在某些早期的消隐和绘制算法中得到了一定程度的应用,但完善的光线跟踪算法系 Whitted 所提出。
该算法的基础就是第三章介绍的 Whitted 模型,该模型决定了光线跟踪算法是一个递归算法。
在标准的光线跟踪算法中,有两个隐含的假设:(1)光线是一根没有大小的直线;(2)景物表面是完全光滑的,光在表面的反射遵循光的镜面反射和规则透射规律。
这两个假设导致了光线跟踪算法生成的图形中含有轮廓清晰的多重反射效果。
显然,这种图形是超现实的。
由 Whitted 模型可知,景物表面上每一可见点处的光亮度由以下三部分组成:由光源直接照射而引起的光亮度、来自环境中其他景物的入射光引起的镜面反射光亮度、来自环境中其他景物的入射光引起的规则透射光亮度。
5.2 光线跟踪几何
下面我们讨论反射光线方向和折射光线方向的确定以及光线与景物表面的求交方法:
1、反射光线与折射光线的确定;
2、光线与景物的求交几何。
5.3 光线跟踪中的阴影生成算法
阴影是真实感图形的一个重要的组成部分,它对增加景物表面细节,丰富观察者对场景的空间感起着举足轻重的作用。
景物表面的阴影是由于光源和周围环境向景物表面投射的光能受到场景中其他不透明景物的遮挡而产生的,它实际上是景物表面漫反射光的一种局部衰减。
在阴影计算中,必须考虑两个因素,即表面上的阴影区域和阴影区域内各点的光亮度。
显然,上述算法对理想点光源来说非常有效,但它生成的阴影区域与非阴影区域之间存在一个极分明的光亮度突变,形成不真实的视觉效果。
现实生活中的光源均为具有一定发光面积的表面,因而在阴影区域和照明区域之间有一自然的过渡,即通常所称的半影区域。
显然,半影区域是由于区域内各点受到光源上部分发光表面的照射而产生的,而完全不受光源照射的阴影区域称为本影区域。
传统的光线跟踪算法由于将光源处理成理想点光源,因此在景物表面只能生成本影,而没有半影。
Cook 等用分布式光线跟踪算法生成了逼真的半影效果。
6、纹理映射技术
景物表面存在丰富的纹理细节,人们正是依据这些纹理细节来区分各种具有相同形状的景物,因而,景物表面纹理细节的模拟在真实感图形合成技术中起着非常重要的作用。
如何在计算机生成的图形中有效地表现这些纹理细节,一直是图形学的一个主要研究课题。
自 20 世纪 70 年代中期 Catmull 首次采用纹理映射技术生成景物表面的纹理细节以来,纹理映射技术得到了广泛的研究和应用。
根据纹理定义域的不同,纹理分为二维纹理和三维纹理;基于纹理表现形式,纹理又分为颜色纹理、几何纹理和过程纹理三大类。
颜色纹理指的是呈现在物体表面上的各种非立体的花纹、图案和文字等,如花瓶上的各种非立体图案、墙面上的拼花图案等都可以用颜色纹理来模拟。
几何纹理是指景物表面微观几何形状的表面纹理,如桔子、树干、岩石、山脉等表面呈现的凹凸不平的纹理细节。
而过程纹理则表现了各种规则或不规则的动态变化的自然景象, 如水波、云、火、烟雾等。
6.1 二维纹理映射的基本原理
二维纹理映射实质上是从二维纹理平面到三维景物表面的一个映射。
由于二维纹理定义在一平面区域上,这样,该平面区域上的每一点处,均定义有一灰度值或颜色值。
我们称该平面区域为纹理空间。
在图形绘制时,应用纹理映射方法可方便地确定景物表面上任一可见点 P 在纹理空间中的对应位置 (u, v),而 (u, v) 处所定义的纹理值或颜色值即描述了景物表面在点 P 处的某种纹理属性。
因而,纹理映射技术可分以下两步进行:
(1)确定表面的哪些参数需定义成纹理形式, 即确定纹理属性。
(2)建立纹理空间与景物空间及景物空间与屏幕空间之间的映射关系,即定义下面的映射:m: ObjectSpace→ TextureSpace; T: ScreenSpace→ ObjectSpace 。
6.2 纹理映射的建立
纹理映射 m 的定义与景物的表示方式有关,而且不是惟一的。
由于不同的定义方法产生的映射效果各不相同,因而,m 的确定在纹理映射算法中处于非常重要的地位,它直接影响最终生成图形的真实性。
从数学的观点看,映射m 可用下式描述(u, v) = F(x, y, z)。
其中 (u, v),(x, y, z) 分别为纹理空间和景物空间中的点。
由于参数曲面定义了一二维参数空间到三维空间的映射关系, 因而当将参数空间和纹理空间等同起来看时(两者之间的关系由一仿射变换确定),映射 m 等价于参数曲面自身定义的逆映射。
对复杂的高次参数曲面来说,其逆变换往往无法给出解析表达,一般需采用数值求解技术离散求得。
但对简单的二次曲面来说,其纹理映射函数可解析地表达。
如一高为 h,半径为r的圆柱面可用下面的参数形式来表达:x = rcosq , y = rsinq , z = hj,其中 0 ≤q ≤ 2p,0 ≤ j ≤ 1。
7、辐射度方法
辐射度方法是继光线跟踪算法后真实感图形绘制技术的一个重要发展。
尽管光线跟踪算法成功地模拟了景物表面间的镜面反射、规则投射及阴影等整体光照效果,但由于光线跟踪算法的采样特性以及 Whitted 光照明模型的不完善性,该方法很难模拟景物表面之间的多重漫反射效果,因而不能重现诸如色彩辉映等光照现象。
他所生成的图形往往是超现实的。
1984 年,美国 Cornell 大学和日本广岛大学的学者分别将热辐射工程中的辐射度方法引入到计算机图形学中,用辐射度方法成功地模拟了理想漫射表面间的多重漫反射效果。
尽管初期实验例子中的场景非常简单,但经过几年的发展后,许多有效地的辐射度算法相继提出,所模拟的场景越来越真实,生成了一批十分精致的真实感图形。
与前面介绍的光照模型和绘制算法有所不同,辐射度方法基于物理学中的能量平衡原理,它采用数值求解技术来近似计算每一景物表面上的辐射度分布。
由于场景中景物表面的辐射度分布与视点选取无关,因而辐射度方法是一个视点独立(view independent)的算法。
辐射度方法的这一特点使得它被广泛应用于虚拟环境的漫游(walkthrough)系统中。
8、颜色空间
真实感图形系统最终生成的是一幅能在监视器上显示或在打印机和绘图仪等输出设备上输出的彩色图像,因此真实感图形的绘制效果依赖于对景物颜色的准确表达。
颜色是可见光的一种视觉特性。
从客观上来说,可见光本身并没有颜色,所谓颜色只是人的视觉系统对所接受到的光信号产生的一种感觉。
物体呈现出来的颜色既决定于光源中各种光波长的分布,也决定于物体本身的物理性质。
若一个物体仅反射或折射一个很窄频带内的光而吸收其他波长的光,则反射或透射光信号中各种波长的光所占的比例不同,导致物体显示出一定的颜色。
所以,颜色既是一种心理生理现象,也是一种心理物理现象。
8.1 颜色的视觉特性及基本定义
可见光的波长大约在 380nm (纳米)到 780nm 之间,即只有从 380nm 到 780nm 波长范围内的电磁辐射能够引起人的视觉。
实验表明,即使对在可见光范围内的光,人眼对其感受的敏感程度也是不同的。
这一实验结果反映在国际照明委员会(简称 CIE)的光谱光效率函数曲线 n(l ) 和 n’(l )(下图)中,其中n(l ) 是在明亮观察(明视觉)条件下的实验结果,而 n’(l ) 是在昏暗观察(暗视觉)条件下的实验结果。
可看出,在明视觉下人眼对波长 550nm 左右的光最为敏感,而对可见光谱两端的光,其敏感程度迅速减弱。
光谱光效率函数提供了根据眼睛敏感程度而校正的光能量度,对任一光谱能量分布 P (l ),人眼对它感知的亮度(即有效光能)为:
8.2 标准原色和色度图
纯的单色光在实际生活中是很难找到的。
我们所看到的颜色都是混合色,任意两种不同的颜色在合适的强度配比下可生成另一种颜色。
若两种颜色混合生成白色,它们就被称为互补色。
事实上,人眼能识别的颜色能够用任何满足一定条件的三种基本颜色混合而成,这里的条件指的是此三种颜色中任意两种的组合都不能产生第三种颜色,这三种颜色称为三原色。
最常用的三原色是红
∑⎰===
770380770
380)()()()(λλλλλλv P d v P Y。