简单的三维场景制作毕业论文.doc

上传人:爱问知识人 文档编号:3961526 上传时间:2019-10-11 格式:DOC 页数:57 大小:979.50KB
返回 下载 相关 举报
简单的三维场景制作毕业论文.doc_第1页
第1页 / 共57页
简单的三维场景制作毕业论文.doc_第2页
第2页 / 共57页
简单的三维场景制作毕业论文.doc_第3页
第3页 / 共57页
简单的三维场景制作毕业论文.doc_第4页
第4页 / 共57页
简单的三维场景制作毕业论文.doc_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《简单的三维场景制作毕业论文.doc》由会员分享,可在线阅读,更多相关《简单的三维场景制作毕业论文.doc(57页珍藏版)》请在三一文库上搜索。

1、简单的三维场景制作摘要: 随着计算机图形学应用研究不断深入,以及应用不断扩大,虚拟场景的渲染技术在应用当中占有相当重要的位置。虚拟场景渲染主要目的是真实地显示三维(3D)环境,并且允许与人们在其中进行漫游观察。如何渲染一个逼真的虚拟场景,是现在图形学领域的一个重要研究方向,OpenGL提供的强大图象处理功能,让虚拟场景的渲染工作变得更加方便、灵活,渲染效果更加逼真。 本文尝试使用最简单又高效的算法,并力求渲染效果的仿真性达到应用的需要。最终本文在地域生成渲染方面得到相对简单高效又效果逼真的渲染方法,并基于这些算法以及OpenGL提供的强大功能,开发了一个逼真的室外场景,并在这个虚拟场景中进行漫

2、游观察。关键词:图形学 虚拟场景 OpenGLAbstract: With the application of computer graphics deeper study ,and continuously expand the application ,the technology of Virtual Scene Rendering occupies a very important position in the applications .The main purpose of Virtual scene rendering is to demonstrate the true t

3、hree-dimensional(3D) environment ,and allow user to roam for observation .Exaggeration of a realistic virtual environment is an important research direction in graphics field ;OpenGL provides a powerful graphic processing function for virtual scene rendering work has become more convenient ,flsxible

4、 ,and simulation effects more realistic. We attempt to use the most simple and efficient algorithm ,and sought to exaggerate the effect of simulations to achieve application needs .Finally ,this paper foud a relatively simple and efficient results also realistic rendering method of Terrain Generatio

5、n .Based on these algorithms ,and the powerful functions OpenGL provided ,we developed a system which shows realistic outdoor scenes .And user can go in the virtual scene to toam for observation. Keywords:Computer Graphics ,Virtual Scene ,OpenGL(Open Graphic Library)毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所

6、呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它

7、复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名: 日期: 年 月 日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本

8、学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期: 年 月 日导师签名: 日期: 年 月 日指导教师评阅书指导教师评价:一、撰写(设计)过程1、学生在论文(设计)过程中的治学态度、工作精神 优 良 中 及格 不及格2、学生掌握专业知识、技能的扎实程度 优 良 中 及格 不及格3、学生综合运用所学知识和专业技能分析和解决问题的能力 优 良 中 及格 不及格4、研究方法的科学性;技术线路的可行性;设计方案的合理性 优 良 中 及格 不及格5、完成毕业论文(设计)期间的出勤情况 优 良 中 及格 不及格二、

9、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格建议成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)指导教师: (签名) 单位: (盖章)年 月 日评阅教师评阅书评阅教师评价:一、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范?

10、优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格二、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格建议成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)评阅教师: (签名) 单位: (盖章)年 月 日教研室(或答辩小组)及教学系意见教研室(或答辩小组)评价:一、答辩过程1、毕业论文(设计)的基本要点和见解的叙述情况 优 良 中 及格 不及格2、对答辩问题

11、的反应、理解、表达情况 优 良 中 及格 不及格3、学生答辩过程中的精神状态 优 良 中 及格 不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格评定成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)教研室主任(或答辩小组组长): (签

12、名)年 月 日教学系意见:系主任: (签名)年 月 日前言:随着计算机的不断地飞速发展,计算机应用已经深入渗透到人们日常生活的每一个角落。计算机图形学作为计算机计算机科学与技术学科的一个重要分支已经经历了近40年的发展历程。一方面作为一个学科,计算机图形学在图形算法,图形软件与图形硬件三方面取得了长足的进步,成为当代几乎所有科学和工程技术领域用来加强信息理解和传递的技术和工具。另一方面,计算机图形学的硬件和软件本身已发展成为一个巨大的产业,1996年总产值达500亿美元,预计到2000年将达到1000亿美元。因此,当前全世界从事计算机图形学研究、应用和产业的队伍十分庞大,这也是为什么每年参加S

13、IG-GRAPH年会的人数多达34万人的理由。越来越多的计算机应用都向着可视化的方向迈进。计算机图形学主要是研究图形(图像)的计算机生成,其研究方向众多。在图形基础研究方面可归纳为两个主要方向,即建模(modeling)技术(又称造型技术)和绘制(rendering)技术。建模技术又可分为两大分支,即计算机辅助几何设计和自然景物建模。计算机辅助几何设计追求建模的精确度、可靠性和建模的速度;自然景物建模追求建模的逼真度和速度。计算机图形学中的绘制技术是指基于光栅图形显示技术的真实感图形绘制技术,包括各种光照模型、明暗(shading)处理和纹理生成等内容。绘制技术追求的是真实感(逼真度)和绘制速

14、度。综合上述两大研究方向的追求目标可以看出,计算机图形学研究水平的高低就是反映在真实感和速度的高低以及两者的结合上,也就是既要逼真地反映客观世界的对象,又能高速地、通常又称实时地绘制它们。众所周知,真实感与实时性是一对尖锐的矛盾,如何解决这一矛盾是当代计算机图形学工作者奋斗的目标。综观SIGGRAPH 96的大会论文报告、专题讨论会内容及产品展览会,明显感到计算机图形学的主攻方向不再是孤立地追求图形的真实感和绘制的实时性,而是把重点转移到如何把两者结合在一起,即向更高的目标迈进。操作系统,应用软件,计算机游戏由以前的非图形的到绚丽的图形界面,从二维的到三维的,无不见证计算机图形学的迅猛发展,以

15、及它给人们带来的各种便利。三维互动式场景建模更是计算机三维图形应用所必须解决的问题。OpenGL是优秀且功能强大的图形库,利用OpenGL进行三维建模,从而能够实现各种仿真。OpenGL作为一项开放性的标准、主攻专业图形应用和3D游戏开发的图形API,即便其发展处于目前的低潮状态,OpenGL仍然牢牢把持着专业绘图领域,而DirectX在此毫无竞争力,功能更强大的OpenGL 2.0无疑将继续保持垄断性地位。因此,研究OpenGL图形库的结构和实现原理,深入了解OpenGL的各种机制,有一定的商业价值。1 绪论1.1 课题的来源随着计算机的普及,计算机图形已不再是稀罕物,它是所有计算机用户界面

16、的一个组成部分,并且对于二维(2D)、三维(3D)和更高维对象的可视化是不可或缺的,诸如教育、科学、工程、医学、商业、军事、广告和娱乐等各种各样的领域都离不开计算机图形。正因为计算机图形与我们日常生活如此密切,美国SGI公司为图形工作站开发了功能强大的三维图形和模型库OpenGL(即开放性图形库,Open Graphics Library)。而这个图形学领域的事实标准诞生,又更加促进了图形学应用范围迅速扩大,其中很重要的影响就是在简单的物品摆放和材质渲染方面。如何渲染出一个逼真的场景,是现在图形学领域一个重要的研究方向。OpenGL提供强大的图形处理功能,使简单的三维场景制作变得方便、灵活,效

17、果更加逼真。本文基于OpenGL开发了一个简单的三维场景,并在这个场景中添加了材质渲染,灯光,运动轨迹效果。1.2 三维建模的意义20世纪中后期,随着计算机技术的飞速发展,计算机描述现实世界的方式越来越丰富:从声音到图像再到视频,计算机所能表示的世界越来越复杂。三维模型作为一种新的媒体形式进入了人们的生活、学习和工作中,并且很快被普通大众所接受。它在影视娱乐,建筑,机械制造,医疗,军事,电子商务,虚拟现实,考古等很多方面都得到了越来越广泛的应用。在影视娱乐中,基于三维建模技术的CG(计算机图形学)影片(如图1.1)层出不穷,CG技术已经在这个领域得到了广泛的应用。将三维建模技术应用到电影,可以

18、让电影导演能有更广泛的想象空间来实现现实生活中无法完成的场面,从而降低影片制作中的风险和为影片减少开支。 图1.1 影片“最终幻想”场景 图1.2 游戏“完美世界”人物模型CPU的发展一直跟不上GPU的发展,这是三维游戏推动的结果。三维游戏虽然和民生关系不大,但是确是一种具有强有力号召力的娱乐方式。计算机图形学技术的发展很大程度上得益于三维游戏的发展需求,随着GPU的不断发展,三维游戏中的画面越来越美观和真实。图1.2展示了一个游戏人物模型,这种简单的人物模型最开始就是由网格模型组成,再通过对模型贴图和渲染而达到这种效果。很明显,在这种大型的游戏中数据的处理过程是非常复杂的。三维建模技术也广泛

19、应用电子商务领域。如图1.3所示是耐克鞋官方主页上提供的一种服务,客户可以通过IE浏览器来设计和订购自己的产品。这是目前电子商务领域比较热门的一种服务,其中就涉及到三维建模以及模型的传输等技术。 图1.3 耐克官方主页提供的订购服务 图1.4 文物模型的虚拟拼接在考古学领域,可以对破损的文物进行采样和收集数据,然后通过三维建模技术复原文物模型。图1.4现实的是北京大学虚拟化实验室对洛阳龙门石窟古阳洞高树龛中的破损佛像的数据进行搜集然后再三维建模从而得到的完整的模型。在医疗领域,三维建模技术很久以前就得到了广泛的应用。使用CT或者MRI(核磁共震)技术可以得到人体各个部位的横截面的图像,然后通过

20、三维建模技术可以对这些图像合并成各种人体组织的三维模型。这种三维模型能比二维的平面图像更加准确,从而让医务人员能更加准确的对病情进行诊断。 在建筑和机械制造等领域,三维建模技术的作用更不用说,CAD技术在工业设计领域已经应用了几十年。在军事和虚拟现实等领域三维建模技术也有广泛的应用,例如航天员可以在虚拟的航天环境下进行模拟训练。上面的里例子充分说明了三维建模技术已经深入到社会各个方面,对人们的生活已经产生了巨大的影响。因此,三维建模具有非常重要的意义。1.3 三维场景建立概述及其意义 随着计算机信息技术的高速发展,计算机三维动画技术被广泛地应用于许多方面。利用计算机和三维动画软件的强大功能,通

21、过三维建模、材质及动画的设定可以将真实世界中的各种对象在计算机中真实再现。但是三维动画在中国的宣传力度不是很大,许多人还没有概念。外国动画垄断中国市场的现状与后果令人不安,但真正惊人的是背后的损失。首先是民族精神的弱化。动画的受众主体是青少年,如长期接受国外动画的影响,其价值观、审美观和趣味观必然发生偏移;其次是经济利益的损失;第三是动画产业的衰弱。所以该课题的应用前景十分广阔,不但锻炼了三维动画的实现能力,还提高了编程的总体思路,大大提高了编程水平。更何况中国市场的匮乏,这无疑是一块很大的蛋糕!1.4 本文的主要工作 本论文的主要研究的内容是如何利用OpenGL开发出一个微型游戏。因此,所要

22、解决的主要问题有四个:一是如何用数学方法建立所需三维场景的几何描述,并将它们输入到计算机中,这部分工作由三维实体造型系统来完成。场景的几何描述直接影响了图形的复杂性和图形绘制的计算耗费,选择合理的有效的数据表示和输入手段是极其重要。二是将三维几何描述转换为二维透视,通过场景的透视变换来完成。三是确定场景中的所有可视面,这需要使用隐藏面消除算法将视域之外或其它物体遮挡的不可见面消去。四是计算机场景中所有可见面的颜色,这就需要根据基于光学物理的光照明模型计算可见面投影到观察者眼中的光亮度的大小和色彩组成,并将它转换成适合图形设备的颜色值,从而确定投影画面上每一象素的颜色,最终生成图形。 2 几何三

23、维建模技术概述绪论已经讨论了本文的基本思路,并且说明了制作三维场景的前提是进行三维建模。在计算机图形学中,对于三维空间的点P(X,Y,Z),如果要将点P变换到一个新的点P,设其坐标为(X,Y,Z),则其解析表达式如下:如果将上面的式子改用矩阵的形式表示,则可以写为:其中矩阵X Y Z称为几何信息矩阵,或者称为位置矢量矩阵;33的矩阵称为变换矩阵;而X Y Z称为变换后的位置矢量矩阵。显然,变换后的矩阵除了和原来的位置矢量有关外,同时还与变换矩阵的每一个元素的大小有关系。一般来说可以采用齐次坐标来表示空间上的一个点,则有四个分量,即P(x,y,z,1)。显然,相应的变换矩阵应该是44的方阵。习惯

24、上用小写字母x y z 1来表示变换前的空间点的位置矢量;用大写字母X Y Z H来表示变换后的空间点的位置矢量。通常情况下,变换后的第四个分量H往往不是1,为了用正常化的齐次坐标表示变换后的位置矢量,可以用H去除四个分量,得到正常化的齐次坐标,并用带字母表示为:对于空间中的三维体,例如线段、平面、立体,都可以将其n个顶点以点集的形式用齐次坐标写成n行四列矩阵P,则三维图形变换可以表示为P=PT。其中,P是空间点集的齐次坐标矩阵;P是经过变换后而且是以正常化的齐次坐标表示的空间点集矩阵;T则是44阶的变换矩阵,其一般形式为: 根据变换矩阵中各个元素在变换过程中的作用,可以将变换矩阵划分成四个子

25、矩阵:概括起来,这四个矩阵分别对应的作用是:(1) 33矩阵是产生比例变换,对称变化,旋转变换和错切变换。(2) 13矩阵是产生平移变换。(3) 31矩阵产生透视变换。(4) 11矩阵将产生整体的比例变换。下面将介绍几种常见的三维变换矩阵:2.1 比例变换比例变换主要用于三维模型的放大和缩小操作。对于模型的放大和缩小可以分为全局比例放大和轴向比例放大。对于全比例变换,其变换矩阵为:其变换过程如下:当时,模型沿三个轴向等比例放大;当时,则模型沿着三个轴向等比例缩小;当时模型将产生对坐标原点的对称变换加比例变换。对于轴向比例变换,变换矩阵中主对角线上的元素a,f,j,s的作用是使空间几何元素产生比

26、例变换,其中a,f,j分别为X,Y,Z轴三个方向的缩放因子。当a=f=j时三个轴向的缩放比例相同;否则三个轴方向的缩放比例不相同。2.2 对称变换对称变换可以分成如下三种变换方式:(1) 对称于XOY坐标面的对称变换,变换矩阵为:;其变换过程为:。(2) 对称于YOZ坐标面的对称变换,变换矩阵为:;其变换过程为:。(3) 对称于XOZ坐标面的对称变换,变换矩阵为:;其变换过程为:。2.3 平移变换平移变换是指在空间坐标中的模型从一个位置移动到另外一个位置时,其形状、大小均不发生改变的变换。其变换矩阵如下:很明显,l,m,n三个元素分别产生沿X轴、Y轴和Z轴方向的平移,三为空间的点的平移过程如下

27、:2.4 旋转变换旋转变换5,很明显是指对于空间中的模型沿着某个轴或者某条直线旋转。可以将其分成如下几种情况,如图2.1所示的旋转变换的示意图:(1) 绕X轴旋转角度。其变换矩阵为:。(2) 绕Y轴旋转角度。其变换矩阵为:。(3) 绕Z轴旋转角度。其变换矩阵为:。图2.1 三维旋转变换示意图(4) 绕过原点的任意倾斜直线旋转。假设该直线为ON,它对三个坐标轴方向的余弦已知。设三个方向的余弦分别为;可以先在ON上取一个单位矢量OK,将OK先绕OY旋转,再绕OZ旋转,使得OK和ON重合,这样就可以得到ON轴的方向余弦和、的关系如下:这样可以得到最终的绕ON轴旋转变换角度的变换矩阵如下:3 Open

28、GL三维建模原理概述3.1 OpenGL简介3.1.1 什么是OpenGLOpenGL是个专业的3D程序接口,是一个功能强大,调用方便的底层3D图形库。OpenGL的前身是SGI公司为其图形工作站开发的IRIS GL。IRIS GL是一个工业标准的3D图形软件接口,功能虽然强大但是移植性不好,于是SGI公司便在IRIS GL的基础上开发了OpenGL。OpenGL的英文全称是“Open Graphics Library”,顾名思义,OpenGL便是“开放的图形程序接口”。3.1.2 OpenGL概览OpenGL是一个图形硬件的软件接口,包括大约250个函数(其中200个在OpenGL核心中,其

29、他50个在OpenGL核心库中),您可以使用它们来指定物体和操作,以创建交互式三维应用程序。它的主要作用是将二维或三维的对象绘入一个帧缓冲区中。对象被描述为一系列的顶点(用来定义几何对象)或像素(用来定义图像)。OpenGL对数据进行几个步骤的处理从而将其转换成像素,这些像素将在帧缓冲区中形成最终需要的图形。OpenGL是一个独立于硬件的高效接口,可以在很多平台上实现。因此,OpenGL中没有执行窗口任务或获取用户输入的函数,程序员必须通过窗口系统来控制硬件。另外OpenGL也没有提供用于面熟三维物体模型(如汽车,人体,飞机或分子模型)的高级函数。在OpenGL中,只能使用几种几何图元(geo

30、metric primitive)(点,直线,多边形)来构建所需的模型。当然,可以在OpenGL之上建立提供上述高级特性的复杂库。OpenGL实用库(GLU,OpenGL Utility Library)提供了很多建模(modeling)特性,如二次曲面,NURBS曲线和曲面。GLU是OpenGL实现的标准组成部分。OpenGL在屏幕上渲染图像时执行的主要图形操作:(1)使用几何图元建立模型,即是说所建立的模型由图元构成(使用若干个三角形来建立曲面),这里的几何图元包括:点,直线,多边形,图形和位图。(2)在三维空间排列物体,选择观察场景的有利位置,也即一系列的变换。(3)计算所有物体的颜色。

31、物体的颜色可以由程序来指定,根据光照来确定,进行纹理贴图,或者上述操作的组合来实现的。(4)将物体的数学描述和相关颜色信息转换为屏幕像素,这被称为光栅化(rasterization)。在上述步骤中,OpenGL还可以执行其他操作,如隐藏面(线)消除。另外,在场景被光栅化后,但被绘制到屏幕之前,可以对像素数据执行某些操作。3.1.3 OpenGL的基本特点从程序开发人员的角度来看,OpenGL是一组绘图命令的API集合。利用这些API能够方便地描述二维和三维几何物体,并控制这些物体按某种方式绘制到显示缓冲区中。OpenGL的API集提供了物体描述、平移、旋转、缩放、光照、纹理、材质、象素、位图、

32、文字、交互以及提高显示性能等方面的功能,基本涵盖了开发二、三维图形程序所需的各个方面。与一般的图形开发工具相比,OpenGL具有以下几个突出特点: (1) 应用广泛 OpenGL是目前最主要的二、三维交互式图形应用程序开发环境,已成为业界最受推荐的图形应用编程接口。自从1992年发表以来,OpenGL已被广泛地应用于CAD/CAM、三维动画、数字图象处理以及虚拟现实等领域,Kinetix公司的3D Studio Max就是突出的代表。无论是在PC机上,还是在工作站甚至是大型机和超级计算机上,OpenGL都能表现出它的高性能和强大威力。(2) 跨平台性 OpenGL能够在几乎所有的主流操作系统上

33、运行,包括UNIX、Mac OS、OS/2、Windows NT/9X/ME/2K/XP、Linux等;也能够与其中绝大多数的窗口系统一起工作。(3) 高质量和高性能 无论是在CAD/CAM、三维动画还是可视化仿真等领域,OpenGL高质量和高效率的图形生成能力都能得到充分的体现。在这些领域中,开发人员可以利用OpenGL制作出效果逼真的二、三维图象来。(4) 出色的编程特性OpenGL体系结构评审委员会(ARB)独立负责管理OpenGL的规范,这使得OpenGL具有充分的独立性。OpenGL在各种平台上已有多年的应用实践,加上严格的规范控制,因此OpenGL具有良好的稳定性。良好的前瞻性、伸

34、缩性和易使用性等也是OpenGL的突出编程特点。(5) 网络透明性 建立在客户/服务器模型上的网络透明性是OpenGL的固有特性,它允许一个运行在工作站上的进程在本机或通过网络在远程工作站上显示图形。利用这种透明性能够均衡地共同承担图形应用任务的各工作站的负荷,也能使得没有图形功能的服务器能够使用图形工具。3.2 OpenGL的体系结构OpenGL是一套图形标准,它严格按照计算机图形学原理设计而成,符合光学和视觉原理,非常适合可视化仿真系统。首先,在OpenGL中允许视景对象用图形方式表达,如由物体表面顶点坐标集合构成的几何模型,这类图形数据含有丰富的几何信息,得到的仿真图像能充分表达出其形体

35、特征;而且在OpenGL中有针对三维坐标表示的顶点的几何变换,通过该变换可使顶点在三维空间内进行平移和旋转,对于由顶点的集合表达的物体则可以实现其在空间的各种运动。其次,OpenGL通过光照处理能表达出物体的三维特性,其光照模型是整体光照模型,它把顶点到光源的距离、顶点到光源的方向向量以及顶点到视点的方向向量等参数代入该模型,计算顶点颜色。因此,可视化仿真图像的颜色体现着物体与视点以及光源之间的空间位置关系,具有很强的三维效果。另外,为弥补图形方法难于生成复杂自然背景的不足,OpenGL提供了对图像数据的使用方法,即直接对图像数据读、写和拷贝,或者把图像数据定义为纹理与图形方法结合在一起生成视

36、景图像以增强效果。为增强计算机系统三维图形的运算能力,有关厂家已研制出了专门对OpenGL进行加速的三维图形加速卡,其效果可与图形工作站相媲美。一个完整的窗口系统的OpenGL图形处理系统的结构为:最底层为图形硬件,第二层为操作系统,第三层为窗口系统,第四层为OpenGL,第五层为应用软件。如图3.1所示。 应用软件OpenGL窗口系统操作系统图形硬件图3.1 OpenGL图形处理系统的层次结构OpenGL的作用机制是客户(client)/服务器(sever)机制,即客户(用OpenGL绘制景物的应用程序)向服务器(即OpenGL内核)发布OpenGL命令,服务器则解释这些命令。大多数情况下,

37、客户和服务器在同一机器上运行。正是OpenGL的这种客户/服务器机制,OpenGL可以十分方便地在网络环境下使用。因此WindowsNT下的OpenGL是网络透明的。图3.2给出了网络下的OpenGL体系结构,在实际操作中,应用程序发出OpenGL命令,由动态链接库OpenGL32.dll接受打包后,发送到服务器端的WINSRV.DLL,然后由它通过DDI层发往视频显示驱动程序。如果系统安装了硬件加速器,则由硬件相关的DDI来处理。从程序员的角度看,在编写基于Windows的OpenGL应用程序之前必须掌握两点,一个是OpenGL本身是一个复杂的系统,这可以通过简化的OpenGL辅助库函数来学

38、习和掌握;另一个是必须清楚地了解和掌握Windows与OpenGL的接口。应 用 程 序OpenGL32.DLLGDI32.DLL可安装的客户端驱动程序WINSRV.DLL相关DDIWIN32.DDI视频显示驱动程序图3.2 OpenGL/NT体系结构3.3 OpenGL的渲染流水线可以把OpenGL的工作过程看成是一条生产流水线,原料是场景,物体的顶点,表面细节等信息,产品是看起来有三维感觉的平面位图。在OpenGL中是以面边界(B-REP)模型来描述物体的,或者说是使用多边形造型系统。在OpenGL中每个物体都是由一组平面构成,这组平面记录了该物体的表面,需要用户提供围绕平面边缘的线段的顶

39、点参数,平面内图案的位图两组信息,术语称为Vertex(顶点),Texture(纹理)。显然这些平面越小画出不断的物体越逼真。OpenGL生成三维图形可以分成以下几个步骤:(1) 坐标变换,生成基本图元:根据基本图形单元建立景物模型,并对所建立的模型进行数学描述。(2) 裁剪变换:把景物模型放在三维空间核实的位置上,并且设置视点一观察所感兴趣的场景。(3) 色彩与光照:根据应用要求确定色彩,同时确定光照条件。(4) 光栅化,生成图形片段:把景物模型的数学描述及其色彩信息转换成计算机屏幕上的像素点。OpenGL显示三维图形流程图如图3.3所示。当命令进入流程时,你可以选用两种方法对其进行处理:一

40、种是通过流程立即执行这些命令;另一种是将其中一些命令组织到一个“显示列表”,过一段时间再执行它们。流程中的“评价器”阶段通过将输入值赋给多项式命令提供了一种非常有效的方法来生成几何曲线和曲面的近似值。接下来的“各顶点操作”阶段主要是处理OpenGL的几何图元:点,线段和多边形。所有这些图元均由顶点来描述。顶点可以被转换和照亮,接下来图元图元被剪切到视口,为下一阶段做好准备。“光栅化”生成了一系列的帧缓冲区地址以及相应的用于描述点、线段或多边形的二维值。这些生成的“片断”将被送到最后一个阶段“各片断的操作”,这一阶段是数据以像素形式存入“帧缓冲区”之前的最后操作。这些操作包括根据几何物体图形帧缓

41、存器顶点 评价器顶点操作显示列表光栅化像素像素操作纹理存贮器基本操作图3.3 OpenGL渲染流水线帧缓冲区中原有的深度值(用于深度缓存操作)与输入值而有条件地更新帧缓冲区的操作,还包括对输入的像素颜色与已存储的颜色所进行的融合操作,对像素值所进行的屏蔽操作及其他的逻辑操作。数据是以像素形式而非顶点形式输入的。这些数据可以用来描述一个用于纹理映射的图像,它将跳过第一阶段(如前面所述),而通过“像素操作”阶段作为像素来处理。这一阶段的处理将导致两种结果:其一是被存入“纹理存储器”,以备光栅化阶段所用;其二是直接被光栅化。后者所形成的片断将被存入帧缓冲区,就好象它们是由几何数据生成的一样。一个Op

42、enGL应用程序可以获得OpenGL状态的所有元素,其中包括纹理存储器的内容,甚至还包括帧缓冲区的内容。3.4 OpenGL开发库的基本组成3.4.1 OpenGL开发组件Windows 9x/NT下的OpenGL组件有2种,一种是SGI公司提供的,一种是Microsoft公司提供的。两者的开发库大体上,没有什么区别,都是有3大部分组成。(1)函数的说明文件。gl.h,glu.h,glut.h和glaux.h.(2)静态链接库文件。glu32.lib,glut32.lib,glaux.lib和opengl32.lib。(3)动态链接库文件。glu.dll,glu32.dll,glut.dll,

43、glut32.dll和opengl32.dll。3.4.2 OpenGL的库函数开发基于OpenGL的应用程序开发基于OpenGL的应用程序,必须先了解OpenGL的库函数。在OpenGL中有115个核心函数,这些函数是最基本的,他们可以在任何OpenGL工作平台上应用。这些函数用于建立各种各样的形体,产生光照效果,进行反走样纹理映射,投影变换等操作。由于这些核心函数有许多种形式并能够接受不同类型的参数,实际上这些函数可以派生出300多个函数。OpenGL库函数的命名方式非常有规律,每个库函数均有前缀gl、glu、aux,分别表示该函数属于OpenGL基本库、实用库和辅助库。OpenGL的库函

44、数大致可以分为六类:(1) OpenGL核心库:包含有115个函数,函数名的前缀为gl。这部分函数用于常规的、核心的图形处理。由于许多函数可以接收不同数据类型的参数,因此派生出来的函数原形多达300多个。(2) OpenGL实用库:包含有43个函数,函数名的前缀为glu。这部分函数通过调用核心库的函数,为开发者提供相对简单的用法,实现一些较为复杂的操作。如:坐标变换、纹理映射、绘制椭球、茶壶等简单多边形。OpenGL中的核心库和实用库可以在所有的OpenGL平台上运行。(3) OpenGL辅助库:包含有31个函数,函数名前缀为aux。这部分函数提供窗口管理、输入输出处理以及绘制一些简单三维物体。OpenGL中的辅助库不能在所有的OpenGL平台上运行。(4) OpenGL工具库:包含大约30多个函数,函数名前缀为glut。这部分函数主要提供基于窗口的工具,如:多窗口绘制、空消息和定时器,以及一些绘制较复杂物体的函数。由于glut中的窗口管理函数

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1