| (078) 纹理映射技术的初步研究及实现
【摘要】在计算机图形学中,最引人注目的研究方向就是图形的真实感问题。所谓图形的真实感,是指计算机所生成的图形反映客观世界的程度。长期以来,图形真实感问题一直是计算机图形学研究的一个主要课题。本研究的目的是实现几种基本的纹理映射算法,应用于实际,并为以后进一步的深入研究打下基础。
【关键词】纹理映射 计算机图形学 算法实现
目录
第一章 引 言 2
1.1毕业设计的意义和目的 2
1.2 纹理映射技术的发展现状和研究背景 3
1.3方案论证 4
第二章 3D图形概论与基础平台简介 5
2.1 3D图形概述 5
2.1.1 计算机图形学的研究分类 5
2.1.2 真实感图形 6
2.1.3 决定三维图形外观的因素 6
2.1.4 生成真实感图形的基本步骤 7
2.2 三维图形的显示流程 7
2.3 通用三维显示平台简介 9
2.3.1主要底层三维应用程序接口 9
2.3.2基于OpenGL和Direct3D的三维图形引擎结构框架 10
2.3.3平台中所能完成的主要功能及应用 11
2.3.4环境配置及开发流程 12
2.3.5平台中的一些理解难点及特殊说明 13
第三章 纹理及纹理映射技术 14
3.1 纹理的基础知识 14
3.1.1什么是纹理? 14
3.1.2纹理坐标 14
3.2 纹理映射技术 16
3.2.1二维纹理映射技术 16
3.2.2几何纹理映射技术 18
3.2.3三维纹理映射技术 19
3.2.4纹理映射中的反走样技术 19
3.3 毕业设计实现的纹理映射算法 20
3.3.1 平面纹理映射算法 20
3.3.2圆柱面、圆锥面纹理映射算法 21
3.3.3球面纹理映射算法 25
3.3.4花瓶面纹理映射算法 27
第四章 程序设计与实现 29
4.1 程序具体设计 29
4.1.1 核心算法流程图 29
4.1.2 程序各部分的实现 30
4.2 程序测试 31
第五章 结束语 35
5.1 设计结果评价和分析 35
5.2 致谢词 36
第一章 引 言
1.1毕业设计的意义和目的
在计算机图形学中,最引人注目的研究方向就是图形的真实感问题。所谓图形的真实感,是指计算机所生成的图形反映客观世界的程度。长期以来,图形真实感问题一直是计算机图形学研究的一个主要课题。这主要有两个原因,其一是由于计算机技术的飞速发展,其应用愈来愈广,某些应用领域(计算机艺术、计算机制片,计算机娱乐和广告等)把高度真实感的图形作为其发展的最终目标;其二是因为计算机所能显示图形的真实程度也是对我们目前技术水平的一个度量,如果我们不能生成比较真实的图形,那么,对图形进行艺术加工和控制更无从谈起。然而,要用计算机生成一幅比较逼真的图形并不是一件容易的事情,要解决各种各样的问题。目前,围绕真实感图形的显示问题,主要涉及以下几方面问题:
①画面绘制(rendering),②明暗处理(shading),③图形反混淆(antialising),④光线跟踪(ray tracing),⑤纹理映射(texture
mapping),⑥阴影(shadow),⑦隐藏线、隐藏面消除(hidden line、 hidden surface culling),⑧几何造型(Geometric
modeling)
早期的研究主要集中在基本算法上,由于当时的计算机只能生成一些简单的图形,还不具备交互功能。随着大规模集成电路(LSI)的飞速发展,硬件成本迅速下降,尤其是大容量存储器的出现,光栅扫描显示器的问世,为真实感图形显示提供了坚实的物质基础,从而真实感的图形显示也成为人们的研究热点。在过去的十几年中,人们一直在通过建模的方法仿真客观世界,由于客观世界千变万化、错综复杂,要把客观世界的各种细微结构直接用几何模型表示出来,不仅模型难以建立,而且计算量庞大,难以满足实时显示的要求。例如,一个曲面可以用许多微小多边形(或曲面片)表示其表面细节,每个微小多边形(或曲面片)具有自身的表面特性,要显示这个曲面,必须对这些小多边形(或曲面片)进行分别处理,这将要求大量的存储空间和计算时间,因此,在实际应用中,为了获得比较高的显示速度,往往以牺牲图形的真实感为代价。尽管这样,显示一幅较复杂的图形往往需要好几个小时,并且能满足实时要求的几何模型一直没有找到。于是,人们就想象是否可以用“贴”墙纸的方法将反映物体表面细节的图案贴到物体表面上,从而开辟了一个新的研究领域-纹理映射(texture
mapping),与建造模型的方法相比,在摸拟物体表面细节方面,纹理映射是一个较有效的方法。实际上,真实的景物表面存在着丰富的纹理细节。人们正是依据这些纹理细节来区别各种具有相同形状的景物,因此景物表面纹理细节的模拟在真实感图形合成技术中起着非常重要的作用,我们将景物表面纹理细节的模拟称为纹理映射技术。这种技术已在三维动画软件(如3DMAX)及图形处理软件中得到广泛应用。
本研究的目的是实现几种基本的纹理映射算法,应用于实际,并为以后进一步的深入研究打下基础。
1.2 纹理映射技术的发展现状和研究背景
纹理映射技术最早是由Catmull[1]在1974年率先提出的,Catmull首先找到了以(u,v)表示的双变量实数空间(纹理空间)和以参数(s,t)表示的三维曲面之间的对应关系(映射关系)。为了计算三维曲面上每一点的彩色值,Catmull使用了一个二维矩形数组,该数组的位置表示(u,v)的参数值,数组的值表示(u,v)点对应的彩色值;接着,应用上面找到的映射函数将每一点(u,v)及其对应的彩色值映射到相应的三维曲面上,代替了只用一种色彩表示曲面的情况,在三维曲面上得到了彩色图案。但是在Catmull的算法中,被映射的值仅限制为纹理图案的彩色值。为此,Blinn和Newell[2]在1976年提出了“反射映射”技术,他们在光照模型中考虑了纹理映射后的图形质量。在1978年,Blinn[3]又提出了另一种纹理映射技术-凹凸映射(bump
mapping),利用一个扰动函数扰动物体的表面法矢来模拟有随机法矢的粗糙表面纹理,实现了在光滑的物体表面附上粗糙纹理的方法。
Gardner[4]使用纹理函数控制物体的透明性,顺模拟自然界景物方面,取得了良好的效果。
Kajiya[5]扩展了Blinn的方法,利用扰动函数扰动物体表面的其它参数,很好地模拟了头发、衣服之类的物体。
与此同时,国外大量的学者通过实验手段在多边形表面生成了许多逼真的纹理图案。但不幸的是,这些方法非常低效,只适用一些简单的场景。我们知道,要将一幅纹理图案映射到一张曲面上,需对纹理图案进行拉伸或压缩以适应曲面的形状。一般来说,随着纹理图案的压缩,增加了纹理图案搞频成分,在图象空间中容易引起图形混淆(aliasing),这主要是由于欠采样(undersampling)引起的。因为图形显示器是由许多图象元素(简称象素 pixel)组成的,一个象素并不是理想中的无穷小量,而占据一定的区域,对纹理图案的采样频率取决于图形显示器的分辨率(即相邻两象素中心的间距),因此,对某个图形显示器来说,采用通常的显示方法,其采样频率是恒定的,随着纹理图案的压缩,增加了纹理图案的高频成分,容易产生图形混淆。关于纹理映射中的反混淆问题,国外学者已做了大量的工作,提出了许多反混淆方法。
1.3方案论证
就本次毕业设计的方案论证而言,关于纹理映射的资料相对较多,大多是英文材料,有关纹理映射技术在很大程度上是探索性质的。要做好纹理映射,
3D图形学、Direct3D和OpenGL的基础知识到是必不可少的,这为程序实现打下了基础。同时软件的开发是基于中地公司提供的“通用三维显示平台”,除了具有相关的C、VC++知识,了解该平台的性能,熟悉各种函数也是非常必需的。
第二章 3D图形概论与基础平台简介
2.1 3D图形概述
2.1.1 计算机图形学的研究分类
计算机图形学有三大研究领域:几何造型、图形显示和交互技术。几何造型在计算机中表示物体的方法和构造形体的技术。图形显示则在物体表示的基础上,研究各种显示算法。这些显示算法,按照显示对象的维数,可划分为二维图形显示算法和三维图形显示算法。交互技术研究人机交互的方式、手段和风格,用户接口的设计,用户界面的生成方法等。
三维图形显示算法有两大类。一类是线框图显示算法,生成的是用轮廓线和棱线表示的线框图,这些线框图可能是消隐的,也可能是没消隐的。另一类是真实感图像显示算法,生成具有光照效果的真实感很强的图像。三维图形显示还包括消隐、投影和空间转换、三维形体的裁剪和三维形体的几何变换等技术。这些技术,无论对生成线框图,还是对生成真实感图像,都是非常有用的。
2.1.2 真实感图形
所谓具有真实感的图像,至少应具有如下特点:
(1) 能反映物体的几何形状和物体间的相互关系,真实感图形通过光照下物体所形成的阴影,极大地改善场景的深度感和层次感,充分体现物体间的相互遮掩关系。
(2) 能反映物体表面颜色和亮度的变化。物体表面的颜色和亮度的变化表现在:在光源位置和观察点位置确定的情况下,物体表面有不同的朝向,会表现出不同的亮度;对于曲面体,表面的颜色会有光滑过渡;具有相同几何形状但颜色不同的物体,我们可以用其表面的颜色将它们区别出来;在不同的光照射下物体表面显示的颜色和亮度也不同;对于表面较光滑的物体,我们还会看到光源在其上形成的高光区;物体表面有其特有的纹理。
(3) 能表现物体的质感。物体的质感是由于其材料的属性决定的,不同的材料反映不同的质感。不同质感的物体对光的作用也不同,主要表现为对不同波长的光会有不同的吸收率、反射率、折射率,所以观察光照下的物体可以看出物体的质感。真实感图像应能表现图形的质感。
(4) 能反映镜象效果。镜象效果是指在特别光滑的表面上可以看见其他物体的图像。镜象效果能加深对物体之间相互关系的理解。
(5) 能反映透明效果。如果所显示的物体是一个透明或半透明的,那么透过这个物体,我们能够看到物体后面的其他物体或背景。
2.1.3 决定三维图形外观的因素
决定三维图形外观的因素有如下一些:
(1) 物体的几何形状;
(2) 物体的表面特性;这主要是指物体表面的粗糙度、纹理、物体的颜色、吸光率、反光性和透光性。
(3) 光源的特性;一个物体的外观除了决定于物体本身的几何形状和表面特性,还与外在因素有关。一个关键的外部因素就是照亮这个物体的光源。光源特性主要是指光源的光强分布、光源的光谱(决定了光的颜色)和光源的形状(如点、线、面光源)三个方面。
(4) 物体与光源的相对位置;
(5) 观察方式;它通常指视点位置和视屏位置的设定。
(6) 物体周围的环境;通过对光的反射和折射,形成环境光,在物体的表面上产生一定的照度。
2.1.4 生成真实感图形的基本步骤
生成一个具有真实感的图形,需要经过建立模型、计算视屏各像素颜色和显示计算结果三个大的步骤。
(1) 其中建立模型主要就是对我们上面谈到物体外观因素进行设置,包括建立物体的几何模型、设定光源的位置形状及光学特性和设定视点和屏幕的位置几小步。
(2) 在计算屏幕上各像素的颜色中有几项是必须进行的基本工作。这些工作包括:不可见面的消除,不可见面有两种,一种是被其他面遮挡的面,从视点看不到,一种是背向视点的面,用消隐算法可去掉物体上不可见面;阴影计算,就是确定物体上那些面受光源的光照,那些面处在其他
物体的阴影中;光照颜色计算。
(3) 显示计算结果,将计算出的结果在屏幕上显示出来,形成具有真实感的图形。
2.2 三维图形的显示流程
物体最初定义于自己的局部坐标系(模型坐标系)中,经适当的几何变换——模型变换,它以一定的形状、尺寸存在于世界坐标系中的某个位置。再经过观察变换,获得物体在观察坐标系中的表示。观察坐标系中的视见体划定了可见物体所在的范围,裁剪之后剩下的物体将投影到投影平面上的窗口之内,再由窗口至视区的变换将其变换到设备坐标系中用于显示。需要说明一下的是,在三维图形中处理数据的基本单位是多边形,一般是三角形,而多边形是由若干个顶点构成的,因此在处理三维数据时,顶点是数据处理的基本单位。
下面具体介绍一下几种变换的作用。
(1) 模型变换——模型坐标到世界坐标
构造一个复杂的场景需要很多物体,如果这些物体都定义于世界坐标系中,它们的表示可能是极其复杂的,甚至是难于构造的。即使是一个简单的立方体,如果它以任意角度存在于世界坐标系中,它的各顶点坐标也不易计算出来。此时,不妨将物体定义于其局部坐标系中,由于模型坐标系是依物体而建立的,物体在其中的表示相对简单,易于描述。如果物体本身定义在世界坐标系中则无须这个变换。图2.1表示的就是一个立方体在模型坐标系和世界坐标系中的示意。

(2) 观察坐标——世界坐标到观察坐标
在实际生活中,为了在不同的距离和角度上拍摄物体,我们即可以移动物体,也可以保持物体不动而移动照相机。拍摄结果只和物体与照相机之间的相对位置有关。物体所在的坐标系是世界坐标系
(WC),投影平面与投影中心也是在世界坐标系中指定的。但是在世界坐标系中,为了获得物体某个角度的投影,所指定的投影平面和投影中心的表示可能很复杂,导致投影变换十分复杂。此时,我们可以依赖于投影建立一个三维坐标系uvn,称为观察坐标系(VRC,
View Reference Coordinate),使得在VRC中,投影平面、投影中心的表示简单,这样就简化了投影变换。但带来得负作用是,在投影前必须将物体从世界坐标系变换到观察坐标系中来。
(3) 投影变换
一个投影变换类似于选择一个透镜的焦距,它是三种变换中最复杂的一个。投影矩阵是一个典型的缩放和透视矩阵。投影变换将视锥变换成一个直平行六面体的形状。因为视锥的近处比远处小,这样就会对靠近摄像机的对象起到放大的作用,也就将透视应用到了场景当中。图2.2显示了透视变换如何将一个视锥变换成一个新的坐标空间。注意:锥形体变成了直平行六面体,原点从场景的右上角移到了中心。

在透视变换中,x-与y-方向的限制是-1和1。z-方向的限制是前表面为0,后表面为1。这种定义被成为平行投影的规范视见体。定义了规范视见体之后,在观察坐标系中,我们的处理步骤为:首先将视见体规范化,再对规范视见体进行三维裁剪,最后物体进行投影。...
... ... ...
... ... ... ...
【论文说明】该论文包含各种示意图、模型图、算法代码和程序,Word格式,文件大小951K,字数1.9万,按计算机毕业论文格式要求书写,适用于计算机专业!

|