毕业设计论文—生物器官三维模型的色彩及纹理映射技术研究-精品(共52页)_第1页
毕业设计论文—生物器官三维模型的色彩及纹理映射技术研究-精品(共52页)_第2页
毕业设计论文—生物器官三维模型的色彩及纹理映射技术研究-精品(共52页)_第3页
毕业设计论文—生物器官三维模型的色彩及纹理映射技术研究-精品(共52页)_第4页
毕业设计论文—生物器官三维模型的色彩及纹理映射技术研究-精品(共52页)_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 本科毕业设计论文PAGE PAGE 50本科毕业设计(shj)论文题 目 生物器官三维模型(mxng)的色彩及纹理映射技术研究_专业(zhuny)名称 生物医学工程 学生姓名 张婕 指导教师 张树生 毕业(b y)时间 2006.6 毕业(b y)eq o(sup 16(设计(shj),sdo 6(论文(lnwn)任务书题目:生物器官三维模型的色彩及纹理映射技术研究指导思想和目的要求:指导思想通过了解OpenGL技术中纹理映射的相关方法,熟悉纹理映射的过程,能够在心脏三维网格模型的基础上,添加纹理,表现人体心脏外形的色彩及特征。(2) 目的要求掌握纹理映射技术的相关方法,熟悉映射的过程。做到

2、对心脏的三维模型添加色彩,并表现出心脏的细节。在VC+中构建OpenGL环境,并编写相应的程序。主要技术指标:掌握纹理映射的相关函数及方法;熟悉VC+环境中编程的思想;熟悉纹理映射的过程;设计实现纹理映射的程序;软件原型系统实现:实现语言为基于VC+基础上的OpenGL。进度与要求:5-6周 查阅与翻译资料,纹理映射(yngsh)的概念及相关算法,熟悉纹理(wnl)映射的过程,熟悉(shx)编程语言。7-9周 完成纹理映射程序的设计。10-13周 编程实现算法。14-16周 完成论文撰写。17-18周 论文答辩。主要参考书及参考资料:1 Bruno Levy and Jean-Laurent

3、Mallet. Non-Distorted Texture Mapping For Sheared Triangulated Meshes2 Greg Turk. Texture Synthesis on Surfaces3 Dave Shrener, Mason Woo ,Jackie Neider, Tom Davis著,邓郑祥译.OpenGL编程指南(第四版).人民邮电出版社.20004 和平鸽工作室.OpenGL三维图形系统开发与实用技术(基础编程篇).清华大学出版社.重庆大学出版社5 孙家广,杨长贵编著.计算机图形学(第三版).北京:清华大学出版社,19956王雪莉 李宗民.Visu

4、al C+下OpenGL开发框架与应用.电脑学习第5期.2004.10.学 生 张 婕 指导教师 张树生 系主任 苑伟政摘 要三维建模是当前计算机视觉与计算机图形学领域的一个研究热点,在多媒体、人机交互、通讯等方面具有广泛的应用。三维建模一般(ybn)包括几何建模和纹理建模两个方面。本论文着重(zhuzhng)论述三维心脏建模中的纹理映射问题。在采集好的心脏几何(j h)数据以及建立好的心脏网格模型的基础上,进一步研究如何对心脏网格模型实现色彩和纹理映射。我们的基本方法是应用程序读入心脏的二维图片,再将三维心脏网格模型经过平移、旋转等坐标变换,投影到二维平面上,使心脏网格模型的位置与图像中心脏

5、的位置相对应,然后用视图区与窗口区的坐标转换公式求解图像中的点坐标与模型中的三维坐标之间的对应关系,应用程序对心脏进行纹理映射。在完成几何模型与指定图像间的纹理映射之后,通过进一步合成心脏的局部纹理,从而完成心脏纹理模型的构建。所有的工作是在VC+基础上构建的OpenGL环境中完成的。论文中也给出了相关实验结果,并且就仍然存在的问题进行分析,最后提出了对下一步工作的展望。关键字:纹理映射,坐标变换,纹理坐标,OpenGLABSTRACT3D modeling is an active topic in computer vision and computer graphics, which h

6、as broad applications in multimedia, human-machine interaction, communication, etc. Generally, 3D modeling techniques can be classified into two categories: geometry modeling and texture modeling. In this thesis, we focus on the topic about how to estimate the texture mapping between the heart mesh

7、model and a color image. We utilize the acquired heart geometry images and the heart mesh model from the geometry images. After that, we generate heart texture models by the registration between the constructed mesh model and one color image. The image of the color photo of heart model is firstly re

8、ad by application program. And then the 3D heart mesh model is preprocessed by using translation and rotating transformations to map it into 2D plane, in order to make the model to match the heart in the image. After all the transform of coordinate and projection, we use the coordinate transforms fo

9、rmula between view area and window area to evaluating corresponding relation of the coordinate between the model and image. Then write mapping program in OpenGL to finish the work. With the estimated parameters, a part texture map is synthesized from the texture mapping corresponding to the image, a

10、nd then come into being a part of heart with texture. All of the work are finished in the surroundings of OpenGL on the base of VC+. Experimental results are given to demonstrate the performance of our method. Some existed problems are also analyzed and the future work to be done is discussed.Key wo

11、rds: texture mapping, coordinate transform, texture coordinate, OpenGL目 录 TOC o 1-3 h z u HYPERLINK l _Toc138332669 摘 要 PAGEREF _Toc138332669 h I HYPERLINK l _Toc138332670 ABSTRACT PAGEREF _Toc138332670 h II HYPERLINK l _Toc138332672 第一章绪 论 PAGEREF _Toc138332672 h 1 HYPERLINK l _Toc138332673 1.1毕业设计

12、(b y sh j)的意义 PAGEREF _Toc138332673 h 1 HYPERLINK l _Toc138332674 1.2纹理映射(yngsh)技术的研究背景和发展现状 PAGEREF _Toc138332674 h 2 HYPERLINK l _Toc138332675 1.2.1研究(ynji)背景 PAGEREF _Toc138332675 h 2 HYPERLINK l _Toc138332676 1.2.2 发展现状 PAGEREF _Toc138332676 h 3 HYPERLINK l _Toc138332677 1.3论文主要工作及本文结构 PAGEREF _

13、Toc138332677 h 4 HYPERLINK l _Toc138332678 1.3.1 本文的主要工作 PAGEREF _Toc138332678 h 4 HYPERLINK l _Toc138332679 1.3.2 研究内容和目标 PAGEREF _Toc138332679 h 5 HYPERLINK l _Toc138332680 1.3.3 本文的结构 PAGEREF _Toc138332680 h 5 HYPERLINK l _Toc138332681 第二章三维图形概论及基础平台简介 PAGEREF _Toc138332681 h 6 HYPERLINK l _Toc13

14、8332682 2.1 3D图形概述 PAGEREF _Toc138332682 h 6 HYPERLINK l _Toc138332683 2.2 OpenGL PAGEREF _Toc138332683 h 8 HYPERLINK l _Toc138332684 2.2.1 OpenGL的基本功能与操作 PAGEREF _Toc138332684 h 8 HYPERLINK l _Toc138332685 2.2.2 OpenGL的体系结构 PAGEREF _Toc138332685 h 10 HYPERLINK l _Toc138332686 2.2.3 OpenGL绘制几何图元 PAG

15、EREF _Toc138332686 h 11 HYPERLINK l _Toc138332687 2.2.4 在OpenGL中使用颜色 PAGEREF _Toc138332687 h 12 HYPERLINK l _Toc138332688 2.2.5 在OpenGL中使用光照 PAGEREF _Toc138332688 h 12 HYPERLINK l _Toc138332689 2.2.6 在OpenGL中使用材质 PAGEREF _Toc138332689 h 13 HYPERLINK l _Toc138332690 2.2.7 在 OpenGL中使用纹理映射 PAGEREF _Toc

16、138332690 h 13 HYPERLINK l _Toc138332691 2.3 VC+面向对象技术 PAGEREF _Toc138332691 h 14 HYPERLINK l _Toc138332692 2.3.1 面向对象技术的内容 PAGEREF _Toc138332692 h 14 HYPERLINK l _Toc138332693 2.3.2 面向对象技术的特征 PAGEREF _Toc138332693 h 14 HYPERLINK l _Toc138332694 2.3.3 面向对象技术(jsh)的应用 PAGEREF _Toc138332694 h 15 HYPERL

17、INK l _Toc138332695 第三章纹理(wnl)映射技术及映射思路 PAGEREF _Toc138332695 h 17 HYPERLINK l _Toc138332696 3.1 纹理函数(hnsh)的定义及控制 PAGEREF _Toc138332696 h 17 HYPERLINK l _Toc138332697 3.1.1纹理函数的定义 PAGEREF _Toc138332697 h 17 HYPERLINK l _Toc138332698 3.1.2纹理数据的获取 PAGEREF _Toc138332698 h 18 HYPERLINK l _Toc138332699 3

18、.1.3纹理映射的反走样处理 PAGEREF _Toc138332699 h 19 HYPERLINK l _Toc138332700 3.1.4纹理控制 PAGEREF _Toc138332700 h 19 HYPERLINK l _Toc138332701 3.1.5光照函数 PAGEREF _Toc138332701 h 21 HYPERLINK l _Toc138332702 3.2 心脏模型在窗口区和视图区中的坐标变换 PAGEREF _Toc138332702 h 21 HYPERLINK l _Toc138332703 3.3 心脏模型纹理坐标的获取 PAGEREF _Toc13

19、8332703 h 23 HYPERLINK l _Toc138332704 3.4心脏模型的映射思路 PAGEREF _Toc138332704 h 25 HYPERLINK l _Toc138332705 第四章心脏模型上的纹理映射 PAGEREF _Toc138332705 h 26 HYPERLINK l _Toc138332706 4.1 VC+下OpenGL环境的构建 PAGEREF _Toc138332706 h 26 HYPERLINK l _Toc138332707 4.2 心脏模型数据来源 PAGEREF _Toc138332707 h 29 HYPERLINK l _To

20、c138332708 4.2.1 心脏模型数据的采集 PAGEREF _Toc138332708 h 29 HYPERLINK l _Toc138332709 4.2.2 STL文件及心脏网格模型 PAGEREF _Toc138332709 h 30 HYPERLINK l _Toc138332710 4.2.3 添加色彩的心脏模型 PAGEREF _Toc138332710 h 32 HYPERLINK l _Toc138332711 4.3 心脏模型的纹理映射程序 PAGEREF _Toc138332711 h 33 HYPERLINK l _Toc138332712 4.4 心脏模型重现

21、结果及分析 PAGEREF _Toc138332712 h 35 HYPERLINK l _Toc138332713 4.5本章小结 PAGEREF _Toc138332713 h 37 HYPERLINK l _Toc138332714 第五章结论与展望 PAGEREF _Toc138332714 h 38 HYPERLINK l _Toc138332715 5.1本文完成的工作 PAGEREF _Toc138332715 h 38 HYPERLINK l _Toc138332716 5.2研究展望 PAGEREF _Toc138332716 h 38 HYPERLINK l _Toc138

22、332717 致 谢 PAGEREF _Toc138332717 h 40 HYPERLINK l _Toc138332718 参考文献 PAGEREF _Toc138332718 h 41 HYPERLINK l _Toc138332719 毕业设计小结 PAGEREF _Toc138332719 h 42 绪 论1.1毕业设计(b y sh j)的意义 在计算机图形学中,最引人注目的研究方向就是图形的真实感问题。所谓图形的真实感,是指计算机所生成的图形反映客观世界的程度。长期以来,图形真实感问题一直是计算机图形学研究的一个主要课题。这主要有两个原因,其一是由于计算机技术的飞速发展,其应用愈

23、来愈广,某些应用领域(计算机艺术、计算机制片,计算机娱乐(yl)和广告等)把高度真实感的图形作为其发展的最终目标;其二是因为计算机所能显示图形的真实程度也是对我们目前技术水平的一个度量,如果我们不能生成比较真实的图形,那么,对图形进行艺术加工和控制更无从谈起。然而,要用计算机生成一个比较(bjio)逼真的模型并不是一件容易的事情,要解决各种各样的问题。目前,围绕真实感图形的显示问题,主要涉及以下几方面问题:画面绘制(rendering)明暗处理(shading)图形反混淆(antialising)光线跟踪(ray tracing)纹理映射(texture mapping)阴影(shadow)隐

24、藏线、隐藏面消除(hidden line、 hidden surface culling)几何造型(Geometric modeling)早期的研究主要集中在基本算法上,由于当时的计算机只能生成一些简单的图形,还不具备交互功能。随着大规模集成电路(LSI)的飞速发展,硬件成本迅速下降,尤其是大容量存储器的出现,光栅扫描显示器的问世,为真实感图形显示提供了坚实的物质基础,从而真实感的图形显示也成为人们的研究热点。在过去的十几年中,人们一直在通过建模的方法仿真客观世界,由于客观世界千变万化、错综复杂,要把客观世界的各种细微结构直接用几何模型表示出来,不仅模型难以建立,而且计算量庞大,难以满足实时显

25、示的要求。例如,一个曲面可以用许多微小多边形(或曲面片)表示其表面细节,每个微小多边形(或曲面片)具有自身的表面特性,要显示这个曲面,必须对这些小多边形(或曲面片)进行分别处理,这将要求大量的存储空间和计算时间,因此,在实际应用中,为了获得比较高的显示速度,往往以牺牲图形的真实感为代价。尽管这样,显示一幅较复杂的图形往往需要好几个小时,并且能满足实时要求的几何模型一直没有找到。于是,人们就想象是否可以用“贴”墙纸的方法将反映物体表面细节的图案贴到物体表面上,从而开辟了一个新的研究领域纹理映射(texture mapping),与建造模型的方法相比,在模拟物体表面细节方面,纹理映射是一个较有效的

26、方法。实际上,真实的景物表面存在着丰富的纹理细节。人们正是依据这些纹理细节来区别各种具有相同形状的景物,因此景物表面纹理细节的模拟在真实感图形合成技术中起着非常重要的作用,我们将景物表面纹理细节的模拟称为纹理映射技术。这种技术已在三维动画软件(如3DMAX)及图形处理软件中得到广泛应用。1.2纹理映射技术的研究背景和发展(fzhn)现状1.2.1研究(ynji)背景纹理映射(yngsh)技术最早是由Catmull在1974年率先提出的, Catmull1首先找到了以(u,v)表示的双变量实数空间(纹理空间)和以参数(s,t)表示的三维曲面之间的对应关系(映射关系)。为了计算三维曲面上每一点的彩

27、色值,Catmull使用了一个二维矩形数组,该数组的位置表示(u,v)的参数值,数组的值表示(u,v)点对应的彩色值;接着,应用上面找到的映射函数将每一点(u,v)及其对应的彩色值映射到相应的三维曲面上,代替了只用一种色彩表示曲面的情况,在三维曲面上得到了彩色图案。但是在Catmull的算法中,被映射的值仅限制为纹理图案的彩色值。为此,Blinn和Newell在1976年提出了“反射映射”技术,他们在光照模型中考虑了纹理映射后的图形质量。在1978年,Blinn又提出了另一种纹理映射技术凹凸映射(bump mapping),利用一个扰动函数扰动物体的表面法矢来模拟有随机法矢的粗糙表面纹理,实现

28、了在光滑的物体表面附上粗糙纹理的方法。Gardner使用纹理函数控制物体的透明性,在模拟自然界景物方面,取得了良好的效果。Kajiya扩展了Blinn的方法,利用扰动函数扰动物体表面的其它参数,很好地模拟了头发、衣服之类的物体。与此同时,国外大量的学者通过实验手段在多边形表面生成了许多逼真的纹理图案。但不幸的是,这些方法非常低效,只适用一些简单的场景。我们知道,要将一幅纹理图案映射到一张曲面上,需对纹理图案进行拉伸或压缩以适应曲面的形状。一般来说,随着纹理图案的压缩,增加了纹理图案高频成分,在图像空间中容易引起图形混淆(aliasing),这主要是由于欠采样(undersampling)引起的

29、。因为图形显示器是由许多图像元素(简称象素pixel)组成的,一个象素并不是理想中的无穷小量,而占据一定的区域,对纹理图案的采样频率取决于图形显示器的分辨率(即相邻两象素中心的间距),因此,对某个图形显示器来说,采用通常的显示方法,其采样频率是恒定的。关于纹理映射中的反混淆问题,国外学者已做了大量的工作,提出了许多反混淆方法。1.2.2 发展(fzhn)现状最近几年计算机图形学的发展使得三维表现技术得以形成,这些三维表现技术使我们能够再现三维世界中的物体,能够用三维形体来表示复杂(fz)的信息,这种技术就是可视化 ( Visualization ) 技术2。可视化技术使人能够在三维图形世界中直

30、接对具有形体的信息进行操作,和计算机直接交流。这种技术已经把人和机器的力量以一种直觉而自然的方式加以统一,这种革命性的变化无疑将极大地提高人们的工作效率。可视化技术赋予人们一种仿真的、三维的并且具有实时交互的能力,这样人们可以在三维图形世界中用以前不可(bk)想象的手段来获取信息或发挥自己创造性的思维。机械工程师可以从二维平面图中得以解放直接进入三维世界,从而很快得到自己设计的三维机械零件模型。医生可以从病人的三维扫描图像分析病人的病灶。军事指挥员可以面对用三维图形技术生成的战场地形,指挥具有真实感的三维飞机、军舰、坦克向目标开进并分析战斗方案的效果。更令人惊奇的是目前正在发展的虚拟现实技术(

31、jsh),它能使人们进入一个三维的、多媒体的虚拟世界,人们可以游历远古时代的城堡,也可以遨游浩瀚(hohn)的太空。所有这些都依赖于计算机图形学、计算机可视化技术的发展。人们对计算机可视化技术的研究已经历了一个很长的历程,而且形成了许多可视化工具,其中SGI公司推出的GL三维图形库表现突出,易于使用而且功能强大。利用GL开发出来的三维应用软件颇受许多专业技术人员的喜爱,这些三维应用软件已涉及建筑、产品设计、医学、地球科学、流体力学等领域(ln y)。随着计算机技术的继续发展,GL已经进一步发展成为OpenGL, OpenGL已被认为是高性能图形和交互式视景处理的标准,目前包括ATT公司UNIX

32、软件实验室、IBM公司、DEC公司、SUN公司、HP公司、Microsoft公司和SGI公司在内的多家在计算机市场占领导地位的大公司都采用了OpenGL图形标准。纹理映射技术是近年来发展最快的3D技术之一,成为大家公认最能衡量3D图像质量的技术标准。各种图形标准都提供了对纹理映射的支持。如:OpenGL、DirectX9.0等1.3论文主要工作及本文结构就本次毕业设计而言,有关生物器官的纹理映射的资料相对较少,大多数是英文资料,所以学习生物器官上的纹理映射技术在很大程度上是探索性质的。要做好纹理映射,3D图形学和OpenGL的基础知识到是必不可少的,这将为程序实现打下基础。除了需要具有相关的V

33、C+知识,还要了解OpenGL环境的性能,熟悉各种函数也是非常必需的。因此本次毕业设计的难度较大,所需要学习的基础知识比较多。1.3.1 本文的主要工作(1)纹理函数的应用及坐标变换应用相关的纹理函数,读入图像数据,设置纹理控制函数,然后对已有的心脏网格模型数据进行处理,将三维坐标点经坐标转换成二维平面上的点,使其与心脏彩色图像相对应,为下一步纹理映射打好基础。(2)OpenGL环境的搭建在熟悉(shx)VC+平台(pngti)的基础(jch)上搭建OpenGL环境,为实现纹理映射打好基础。使用OpenGL中基本功能,例如颜色、光照、材质、纹理映射等编写基本程序。(3)纹理贴图网格模型与图像对

34、应好以后,利用程序计算求得纹理坐标,将纹理映射到心脏网格模型上得到最终结果。1.3.2 研究内容和目标基于上述内容,提出本文的研究内容和目标:(1)学习OpenGL环境的搭建,以及OpenGL函数和纹理映射函数的使用。(2)为心脏网格模型添加纹理,形成一个有色彩,真实感的心脏表面模型。1.3.3 本文的结构在本次毕业设计中,由于现有的心脏网格模型与心脏模型的照片不是十分精确地吻合,所以要通过坐标变换以及人眼定位的交互使用,在OpenGL中编写程序获得纹理坐标,然后再进行纹理映射,才能得到带有色彩和纹理的心脏模型。但由于心脏的不规则性,以及数据量也非常大,对于初学者有一定的难度,所以在本次毕业设

35、计的结果中只映射了心脏的一部分,在以后的研究生学习中将对心脏完整的纹理映射的算法进行进一步的研究和学习。论文结构安排如下:第二章简单概述三维图形的基本知识和VC+的面向对象技术,较为详细的介绍了OpenGL中的基本功能,并将自己的学习成果及实验结果作一简单整理和介绍。第三章则是毕业论文研究的重点,对纹理映射技术以及纹理映射函数做了较为详细的介绍,通过坐标变换,获得纹理坐标,给出本文的映射思路。第四章将纹理映射技术应用到心脏模型上,首先搭建起OpenGL环境,其次简单介绍心脏模型数据的来源,然后给心脏模型添加色彩、光照,最后通过编写程序进行纹理贴图,把心脏模型的纹理重现出来。第五章对毕业设计进行

36、小结,就仍然存在的问题进行分析,并且提出了对下一步工作的展望。三维图形概论(giln)及基础平台简介2.1 3D图形(txng)概述计算机图形学是随着计算机及其外围设备而产生和发展起来(q li)的。它是近代计算机科学与雷达、电视机图像处理技术的发展汇合而产生的硕果。计算机图形学有三大研究领域:几何造型、图形显示和交互技术。几何造型在计算机中表示物体的方法和构造形体的技术。图形显示则在物体表示的基础上,研究各种显示算法。这些显示算法,按照显示对象的维数,可划分为二维图形显示算法和三维图形显示算法。交互技术研究人机交互的方式、手段和风格,用户接口的设计,用户界面的生成方法等。 三维图形显示算法有

37、两大类3。一类是线框图显示算法,生成的是用轮廓线和棱线表示的线框图。另一类是真实感图像显示算法,生成具有光照效果的真实感很强的图像。三维图形显示还包括消隐、投影和空间转换、三维形体的裁剪和三维形体的几何变换等技术。这些技术,无论对生成线框图,还是对生成真实感图像,都是非常有用的。所谓具有真实感的图像,至少应具有如下特点:(1) 能反映物体几何形状和物体间的相互关系,真实感图形通过光照下物体所形成的阴影,极大地改善场景的深度感和层次感,充分体现物体间相互遮掩的关系。(2) 能反映物体表面颜色和亮度的变化。物体表面的颜色和亮度的变化表现在:在光源位置和观察点位置确定的情况下,物体表面有不同的朝向,

38、会表现出不同的亮度;对于曲面体,表面的颜色会有光滑过渡;具有相同几何形状但颜色不同的物体,我们可以用其表面的颜色将它们区别出来;在不同的光照射下物体表面显示的颜色和亮度也不同;对于表面较光滑的物体,我们还会看到光源在其上形成的高光区;物体表面有其特有的纹理。(3) 能表现物体的质感。物体的质感是由于其材料的属性决定的,不同的材料反映不同的质感。不同质感的物体对光的作用也不同,主要表现为对不同波长的光会有不同的吸收率、反射率、折射率,所以观察(gunch)光照下的物体可以看出物体的质感。(4) 能反映(fnyng)镜像效果(xiogu)。镜像效果是指在特别光滑的表面上可以看见其他物体的图像。镜像

39、效果能加深对物体之间相互关系的理解。(5) 能反映透明效果。如果所显示的物体是一个透明或半透明的,那么透过这个物体,我们能够看到物体后面的其他物体或背景。此外,决定三维图形外观的因素有如下一些:(1) 物体的几何形状。(2) 物体的表面特性。这主要是指物体表面的粗糙度、纹理、物体的颜色、吸光率、反光性和透光性。(3) 光源的特性。一个物体的外观除了决定于物体本身的几何形状和表面特性,还与外在因素有关。一个关键的外部因素就是照亮这个物体的光源。光源特性主要是指光源的光强分布、光源的光谱(决定了光的颜色)和光源的形状(如点、线、面光源)三个方面。(4) 物体与光源的相对位置。(5) 观察方式。它通

40、常指视点位置和视屏位置的设定。(6) 物体周围的环境。通过对光的反射和折射,形成环境光,在物体的表面上产生一定的照度。综上所述,生成一个具有真实感的图形,需要经过建立模型、计算视屏各像素颜色和显示计算结果三个大的步骤。(1) 其中建立(jinl)模型主要就是对我们上面谈到物体外观因素进行设置,包括建立物体的几何模型、设定光源的位置形状及光学特性和设定视点和屏幕的位置几小步;(2) 在计算屏幕上各像素的颜色中有几项是必须进行的基本工作。这些工作包括:不可(bk)见面的消除,不可见面有两种,一种是被其他面遮挡的面,从视点看不到,一种是背向视点的面,用消隐算法可去掉物体上不可见面;阴影计算,就是确定

41、物体上那些面受光源的光照,那些面处在其他 物体的阴影中;光照颜色(yns)计算;(3) 显示计算结果,将计算出的结果在屏幕上显示出来,形成具有真实感的图形。2.2 OpenGL目前,OpenGL在国内外都掀起了热潮,但国内对这一领域介绍的资料并不是很多。OpenGL(即开放性图形库,Open Graphics Library)是近几年发展起来的一个性能卓越的三维图形标准,它源于美国SGI公司图形工作站开发的IRIS GL,在跨平台移植过程中发展成为OpenGL。SGI在1992年7月发布1.0版,后来成为工业标准。OpenGL作为一个性能优越的图形应用程序设计界面(API),具有广泛的可移植性

42、,它独立于硬件系统,操作系统和窗口系统。OpenGL适用于广泛的计算机环境,从个人计算机到工作站和超级计算机,用户可利用它创建漂亮的三维图形。由于许多在计算机领域具有领导级别的公司纷纷采用它作为三维图形应用程序设计界面,因此,OpenGL是从事三维图形开发工作的技术人员所必须掌握的开发工具。由于OpenGL能实现高性能的三维图形功能(实现三维空间、绘制三维物体等),这使得科学计算可视化,仿真可视化技术发展迅速。可视化系统不仅可以帮助技术人员形象直观地查看仿真结果,而且在一定程度上可以提高设计水平,减少错误的发生。因此计算机图形技术在各行业,各个领域内得到越来越广泛地应用。有人说20世纪是计算机

43、多媒体技术发展的世纪,21世纪将是虚拟现实飞速发展的世纪,因此,积极推动计算机图形领域的发展将对于国家的经济建设,科学研究具有重要的现实意义。2.2.1 OpenGL的基本功能与操作(cozu)OpenGL是一套图形标准,它严格按照计算机图形学原理设计而成,符合光学(gungxu)和视觉理论,非常适合可视化仿真系统。首先(shuxin),在OpenGL中允许视景对象用图形方式表达,如:有物体表面顶点坐标集合构成的集合模型。这类图形数据含有丰富的几何信息,得到的仿真图像能充分表达出其形体特征;而且在OpenGL中有针对三维坐标表示的顶点的几何变换,通过该变换可使顶点在三维空间内进行平移和旋转,对

44、于有顶点的集合表达的物体则可以实现其在空间的各种运动。其次,OpenGL通过光照处理能表达出物体的三维特性,其光照模型是整体光照模型,它把顶点到光源的距离、顶点到光源的方向向量以及定点到视点的方向向量等参数代入该模型,计算顶点的颜色。因此,可视化仿真图像的颜色体现着物体与视点以及光源之间的空间位置关系,具有很强的三维效果。另外,为弥补图形方法难于生成复杂自然背景的不足,OpenGL提供了对图像数据的使用方法,即直接对图像数据读、写和拷贝,或者把图像数据定义为纹理与图形方法结合在一起生成视景图像以增强效果。为增强计算机系统三维图形的运算能力,有关厂家已研制出了专门对OpenGL进行加速的三维图形

45、加速卡,其效果可与图形工作站相媲美。OpenGL实质上是一个开放的三维图形软件包,它独立于窗口系统和操作系统,能十分方便地在各平台之间移植,它不但具有开放性、独立性和兼容性三大特点,还提供了以下基本操作和功能:(1)建模功能OpenGL图形库除了提供基本的点、线、多边形的绘制函数之外,还提供了比较复杂的三维物体(如球、锥体,多面体、茶壶等)以及复杂曲线和曲面(如Bezier, NURBS等曲线或曲面)绘制函数。(2)变换功能可以说,无论多复杂(fz)的图形都是由基本图元组成并经过一系列变换来实现的。OpenGL图形库的模型变换有平移、旋转、缩放等多种变换,投影变换有透视(tush)投影和正交投

46、影两种变换。(3)颜色(yns)模式设置OpenGL应用了一些专门的函数来指定三维模型的颜色。程序开发者可以选择二个颜色模式,即RGBA模式和颜色索引模式(Color Index)。(4)光照和材质设置正如自然界不可缺少光一样,绘制有真实感的三维物体必须使用光照处理。OpenGL光源属性有辐射光、环境光、漫反射光和镜面光等。材质是用光反射率来表示。场景(Scene)中物体最终反映到人眼的颜色是光的RGB分量与材质的RGB分量反射率相乘后形成的颜色。(5)反走样在OpenGL绘制图形过程中,由于使用的是位图,所以绘制出的图像的边缘会出现锯齿形状,称为走样。为了消除这种缺陷,OpenGL提供了点、

47、线、多边形的反走样技术。(6)融合为了使三维图形更加具有真实感,经常需要处理半透明或透明的物体图像,这就需要用到融合技术。(7)雾化正如自然界中存在烟雾一样,OpenGL提供了“fog”的基本操作来达到对场景进行雾化的效果。(8)位图显示和图像增强在图形绘制过程中,位图和图像是非常重要的一个方面。OpenGL提供了一系列函数来显示位图和图像的操作。(9)纹理映射在计算机图形学中,把包含颜色、alpha值、亮度等数据的矩阵数组称为纹理。三维景物因缺少景物的具体细节而显得不够真实,为了更加逼真地表现三维景物,OpenGL提供了纹理映射的功能。OpenGL提供的一系列纹理映射函数使得开发者可以十分方

48、便地把真实图像贴到景物的多边形上,从而可以在视窗内绘制逼真的三维景观。(10)双缓存出色(chs)的动画效果是OpenGL的一大特色(ts),OpenGL提供(tgng)了双缓存区技术来实现动画绘制。双缓存即前台缓存和后台缓存,后台缓存计算场景、生成动画,前台缓存显示后台缓存一画好的画面。2.2.2 OpenGL的体系结构由于OpenGL是一个与平台无关的三维图形接口,操作系统必须提供像素格式管理和渲染环境管理。OpenGL在Windows上的实现是基于Client/Server模式的,应用程序发出OpenGL命令,由动态链接库OpenGL32. dll接受和打包后发送到服务器端的WINSRV

49、.dll,然后由它通过的DDI层发往视频显示驱动程序。OpenGL的体系结构图如图2-1所示4。应 用 程 序OpenGL32.DLLGDI32.DLL可安装的客户端驱动程序ClientServer视频显示驱动程序WIN32.DLL硬件相关DDIWINSRV.DLL图2-1 OpenGL在Windows平台上的体系结构2.2.3 OpenGL绘制(huzh)几何图元在实际应用中,通常用一组相关(xinggun)的顶点序列以一定的方式组织起来定义某个几何图元,而不采用单独定义多个顶点来构造几何图元。在OpenGL中,所有(suyu)被定义的顶点必须放在glBegin()和glEnd()两个函数之

50、间才能正确表达一个几何图元或物体,否则,glVertex*()不完成任何操作5。函数glBegin(GLenum mode)标志描述一个几何图元的顶点列表的开始,其参数mode表示几何图元的描述类型。函数glEnd()标志顶点列表的结束。在glBegin()和glEnd()之间最重要的信息就是由函数glVertex*()定义的顶点,必要时也可以调用相关的函数为每个顶点指定颜色、法向、纹理坐标或其他。2.2.4 在OpenGL中使用颜色在OpenGL中通常使用两种颜色模式,即RGBA模式和颜色索引模式。使用RGBA模式还是使用颜色索引模式要根据所用的硬件和应用的需求来定。另外,对于明暗处理、光照

51、、纹理映射和雾化等特殊效果,使用RGBA模式较使用颜色索引模式更灵活。因此,本文将采用RGBA颜色模式。如果一个具有复杂光滑表面的物体是用一系列的多边形逼近的,而且这些多边形都是单一着色的多边形,那么这个物体看上去像是由一片一片东西拼接起来的,显得非常不自然。改善浮躁物体表面的外观,方法之一是用更多更小的三角形来做逼近,另一种更为简单的方法是使用多边形的填充颜色产生层次或连续变化,这种技术称为光滑着色。在OpenGL中,光滑着色时它的默认处理方法。设置着色模式函数是glShadeModel(),该函数的原型如下:void glShadeModel(Glenum mode)mode指定一种着色模

52、式。它可取的值为GL_SMOOTH和GL_FLAT。使用GL_SMOOTH时表示光滑着色,使用GL_FLAT时表示单一着色。2.2.5 在OpenGL中使用(shyng)光照光照(gungzho)对于模拟三维真实感图形时非常重要(zhngyo)的。事实上,如果没有光照,所制作的三维图形就没有立体感,和二维图形基本没有区别。OpenGL中的光照是真实光照的一种逼近,它是一个高效的方法,在OpenGL中可以处理多个光源,也可以单独使用某个光源。OpenGL所执行的计算的目的就是计算在颜色缓存中每个象素的最终颜色,如果所构建的三维场景中有光照,则计算是和场景中的光照有关的。在现实世界中,当光照在非透

53、明物体上时,部分光线被物体吸收,剩余的部分光线被反射。人眼依靠这种反射光来感知物体的形状、颜色和其他细节。从光源投向物体的光称为入射光,从物体表面反射回来的光称为反射光。在OpenGL的简化光照模型中,将光照分为4个独立的组成部分:辐射光(Emitted Light)、环境光(Ambient Light)、漫反射光(Diffuse Light)和镜面反射光(Specular Light)。2.2.6 在OpenGL中使用材质材质就是通常所说的物体表面的质感。通过定义三维物体表面的材质可以使物体看上去更为真实。在OpenGL中,它是通过定义材料对红、绿、蓝三色光的反射率来近似定义材料的颜色。材料

54、颜色也分为环境,漫反射和镜面反射成分,它们决定了材料对于环境光,漫反射光和镜面反射光的反射率。2.2.7 在 OpenGL中使用纹理映射纹理映射的用途非常广泛,因此纹理映射是一个涉及面非常广且非常复杂的主题,使用纹理映射时,必须做出多种编程决策。我在初学的时候还觉得纹理是二维的,但实际上纹理可以是一维的,甚至可以是三维的。可以将纹理映射到由一组多边形构成的平面或曲面上,并沿一个、两个或三个方向(取决于纹理的维数)重复使用纹理以覆盖表面。另外,还可以自动将纹理映射到物体上,从而用纹理来表示物体的等高线或其他属性。可以对光照物体进行纹理映射,使其位于房间或其他环境中央时,表面反射的是周围的景色。最

55、后,还可以以其他方式将纹理应用于物体表面:可以直接将它画到物体表面上(类似于贴花),用于调整物体表面的颜色,或者将纹理的颜色和物体表面的颜色进行混合。例如,使用一大片植被的图像映射到一些连续的多边形上,以模拟地貌,或者以大理石、木纹等自然物质的图像作为纹理映射到相应的多边形上,作为物体的真实表面。纹理是一个数组,其中(qzhng)的数据为颜色、辉度或者颜色和alpha值。纹理数组中的值通常被称为纹素。矩形纹理可能(knng)被映射到非矩形区域,所以必须以合理的方式来实现这种映射,这使得纹理映射非常复杂。在OpenGL中提供(tgng)了一系列完整的纹理操作函数,用户可以用它们构造理想的物体表面

56、纹理映射只能工作在RGB模式下。在OpenGL中,进行纹理映射的基本步骤如下:创建纹理对象并为其指定纹理;指定如何将纹理应用于每个像素;启用纹理映射;使用纹理坐标和几何坐标绘制场景6。2.3 VC+面向对象技术2.3.1 面向对象技术的内容对象是面向对象方法的基础;而对象则是对一个信息及其相应处理的描述7。对象可以分为两类:一类是客观世界中的对象,利用现实世界中对象的抽象以及对各个对象之间相互关系、相互作用的描述来实现由现实世界到目标系统的映射。因此抽象性是在对象设计、实现及应用过程中体现出来的,是面向对象方法的最重要的特性之一。另一类是目标系统中的对象,对于对象使用人员来说,经过封装后的对象

57、以一种简明、易学易用的方式出现,对象向其使用者展示的是一组完成某种特定功能的操作(或称方法)。可重用性是面向对象方法的重要优点,一方面是指以前设计的系统中的对象,可在新系统的分析和设计中应用;另一方面是指在系统中设计好一个对象后,实际上代表的是一类事物的集合。从程序设计来看,对象是一个程序模块。一组大体上相似的对象可以定义为类,一个类所包含的方法和数据描述一组对象的共同行为和属性。有了类之后,对象则是类的具体化(或称类的实例),类可以有子类,形成父类与子类的层次结构。继承性是父类和子类之间共享数据和方法的机制。继承性就是指一个对象可以从另一个对象派生对象。因此,合理地建立并组织好自己的类库,是

58、利用面向对象方法进行程序设计的关键一环。由于类库可以看作是若干基类的集合,而实际应用的对象或是直接使用基类,或是由基类派生,因此必须谨慎地定义基类的数据和方法。继承性是面向对象程序设计的最主要特点,是面向过程程序设计所没有的。2.3.2 面向对象技术(jsh)的特征面向对象程序设计(chn x sh j)方法有4个基本特征:抽象(chuxing)、封装、继承和多态性。抽象(abstract)就是忽略一个问题中与当前目标无关的那些方面,以便将注意力放在与当前目标有关的方面。抽象并不打算解决全部问题,而只是选择其中一部分,暂时不考虑一些细节问题。抽象包括过程抽象和数据抽象,过程抽象是指任何一个明确

59、定义功能的操作都可被使用者作为单个实体看待,尽管这个操作实际上可能由一系列更低级的操作完成;数据抽象定义了数据类型和施加于该类型对象上的操作。封装(encapsulation)是面向对象程序设计的一个主要特征。封装就是把每个对象的数据(属性)和操作(行为)保障在一个类中。一旦定义了对象的属性和行为,则必须决定哪些属性和行为用于表示内部状态,哪些属性和行为在外部是可见的。一般限制直接访问对象的属性,而应通过才作借口访问,这样使程序中模块之间的关系更简单、数据更安全。对程序的修改也仅限于类的内部,使得由于修改程序所带来的影响局部化。继承(inheritance)是指一个新类可以从现有的类派生出来。

60、新类继承了现有类的特性,包括一些属性和行为,并且可以修改或增加新的属性和行为,使之适应具体的需要。例如,所有的Windows应用程序都有一个窗口,他们可以看作都是从一个窗口类派生出来的,但是有的应用程序用于文字处理,有的用于绘图,这是由于派生出了不同的类,他们增加了不同的属性和行为。继承很好的解决了软件的可重用性问题。多态性(polymorphism)是指允许不同类的对象对同一消息作出的响应不相同。多态性使程序设计灵活、抽象,具有行为共享和代码共享的优点,很好的解决了程序的函数同名(tngmng)的问题。 2.3.3 面向对象技术(jsh)的应用面向对象的程序设计方法是当今用于开发和扩充复杂软

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论