已阅读5页,还剩49页未读, 继续免费阅读
(应用数学专业论文)基于opengl的三维图形交互系统的研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
论文题目: 专业: 硕士生: 指导老师: 基于o p e n g l 的三维图形交互系统的研究 应用数学 刘大鹏( 签名 李勇( 签名 摘要 一种适当的数据结构和数据模型是任何一个图形信息系统软件首先需要解决的问 题,然而,庞大的网格数据对计算机的容量和处理能力等提出了较高的要求,给模型的 存储、传输、计算、绘制等带来了困难,所以不同的信息系统又对具体的数据和模型有 不同的简化需求。 本文从三维数据存储结构和数据内容出发,使用面向对象的思想建立数据结构,采 用矢量模型来对三维模型的格式进行定义,应用基本的二次误差测度的边折叠方法完成 网格数据的简化。为了保持模型良好的拓扑结构和特征结构,文中对多种方法进行了比 较,同时还借鉴了一种计算体积误差的方法,该方法与边折叠算法相结合既保留了边折 叠算法的简化速度快等优势,同时模型的特征保持也很不错,尤其在整体结构上特征保 持良好。其中实例以v c 2 0 0 5 为开发工具,设计数据结构并应用于网格简化中,由于重 点在网格简化算法中,所以实例未体现图形的光照、材质、纹理等辅助信息,而是体现 了三维图形的拓扑信息和几何信息。 实例验证了改进的方法是可行的,也基本达到了预期的效果。随着三维模型表示精 度及复杂度的不断提高,科学的数据结构和简化算法在建筑、制造、军事和地理信息等 领域中有广阔的应用空间。 关键词:数据结构;数据模型;网格;二次误差测度;体积误差;折叠算法 研究类型:应用研究 s u b j e c t :r e s e a r c ho nt h r e e d i m e n s i o n a ii n t e r a c t i v eg r a p h i c st e c h n o l o g y b a s e do no p e n g l s p e c i a l t y :a p p l i e dm a t h e m a t i c s n a m e:l i ud a p e n g i n s t r u c t o r :l iy r o n g ( s i g n a t u r e ( s i g n a t u r e a b s t r a c t 1 1 1 ef i r s tq u e s t i o nn e e d e dt 0s o l v ei na 1 1 yg r a p l l i c a li n f o m a t i o ns y s t e ms o 鲰砌陀i st o h a v ea 妯n do fs u i 切b l ed a t as t r u c t w e 锄dd a t am o d e l t l l eh u g ed a t ao f 酣dp r o p o s e sah i 曲e r r e q u e s tf o rt h ec a p a c i t ) ra i l dh a l l d l i n ga _ b i l i t yo fac o m p u t e ra i l da l s ob r i n g sd i 蚯c u l tt 0t h e m e m o r y ,t r a n s m i s s i o n ,c a l c u l a t i o na n dd i a w i n go ft h em o d e l t h u s ,d i f f e r e n ti i l f i o r m a t i o n s y s t e m sh a v ed i 仃e r e n td e m a n d sf o rt h es i m p l i f i c a t i o no fc o n c r e t e 加a l l dm o d e l t h i sp a p e rw h i c hi sb a s e do nt l l et 1 1 r e e d i m e n s i o m ld a t as t o r a g es t m c t u r e 锄d l ed a t a c o n t e n t ,u s e sm eo b j e c t o r i e n t e dm o u g h tt 0e s t a b l i s hd a :t as t n l c t u r e ,a d o p t st l l ev e c t o rm o d e l t 0d e f i n i t et h ef o m l a to fm o d e l t h ee d g ec o l l 印s em e t h o db a s e do nq u a d r i ce n 0 rm e t i i c si s 印p l i e dt 0r e a l i z e l es i i n p l i f i c a t i o no f 鲥dd a t a ho r d e rt ok e e pt l l em o d e l 、i t l lp r o p e r t o p o l o g ys t m c t u r ea n dc h a r a c t e rs 仇l c t u r e ,t h i sp a p e rc o m p a r e ss e v e r a lm 砒o d ,锄dd i 。a 、订n g l e s s o n sf 如mam e t h o df o rc a l c u l a t i n gv o l 啪ee 1 1 r o r t h ec o m b i n a t i o no f “sm e a s u r ea r l d f o l d i n ga l g o r i t i l i nh a v es o m ea d va i l _ t a g e so ff o l d i n ga l g o r i 也ms u c h 嬲q u i c ks p e e da n d c l l a r a c t 嘶s t i cr e t e m i v i 吼e s p e c i a l l yk e e p i n gt h e 、) l ,h o l es t m c t u r eo r d e r l y v c2 0 0 5i sl l s e d 嬲a d e v e l o p e dt o o lt 0d e s i g nd a _ c as 仃u c t l l r e sa 1 1 d 印p l yt l l es t l l j c t u r et om e s hs i r n p l i f i c a t i o n h lt l l e i n s t a n c eo fm e s hs i m p l i f i c a t i o n ,t l l ef o c u so fm e s hs i i n p l i f i c a t i o ni so nm ep r o c e s si n s t e a do f a u x i l i a 巧i n f 0 珊a t i o ns u c h 嬲i l l 吼i n a t i o n ,m a t e r i a la n dt e x l = u 】汜 t l l ei n s t a i l c ev e r i f i e sm a ti ti s 印p l i c a b l et 0a d o p ti m p r o v e dm e t l l o d ,锄de x p e c 泓e 虢c t l 粥b e e na t t a i n e d w i t ht 1 1 ep r e c i s i o na i l dc o r 印l e x i 够o ft h e3 dm o d e li i l c r e a s i n g l yi i n p r o v e d , t h es c i e n t i f i c c o n s t r i l c t i o na i l dm er e a s o m l b l em e s ha l g o r i t h m 、析l lh a v eb r o a d p e r f o n i l a l l c ei l ls 0 m es p h e r e ss u c h 邪m 锄u f a c t u r e ,m i l i t a 巧锄dg e o g r a p h yi i o m l a t i o n k e yw o r d s : d a t as t r u c t u r ed a :c am o d e lg r i d o u a 【d r i ce r r o rm e t r i c v o l 啪ee 舯r f o l d i n ga l g o r i t l l l i l t h e s i s:r e s e a r c ho na p p l i c a t i o n 妻料技大学 学位论文独创性说明 本人郑重声明:所呈交的学位论文是我个人在导师指导下进行的研究丁作及 其取得研究成果。尽我所知,除了文中加以标注和致谢的地方外,论文中不包含 其他人或集体已经公开发表或撰写过的研究成果,也不包含为获得西安科技大学 或其他教育机构的学位或证书所使用过的材料。与我,一同工作的同志对本研究所 做的任何贡献均已在论文中做了明确的说明并表示了谢意。 学位论文作者签名:旁f 天j 稍日期:冗么歹 学位论文知识产权声明书 本人完全了解学校有关保护知识产权的规定,即:研究生在校攻读学位期间 论文工作的知识产权单位属于西安科技大学。学校有权保留并向国家有关部门或 机构送交论文的复印件和电子版。本人允许论文被查阅和借阅。学校可以将本学 位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描 等复制手段保存和汇编本学位论文。同时本人保证,毕业后结合学位论文研究课 题再撰写的文章一律注明作者单位为西安科技大学。 保密论文待解密后适用本声明。 学位论文作者签名:参f 犬翮 指导教师签名: 日 1 绪论 1 1 研究意义 1 绪论 研究三维图形就意味着研究数据模型和算法。模型是用来表示实际的或抽象的物体 及对象。建立数据模型是对被处理的对象进行设计、分析、模拟和研究的基础。目前的 图形软件尚没有统一、完备的数据模型,而一个图形信息系统软件首先需要解决的问题 是寻找一种合适的数据结构和数据模型,这一研究最初是集中在网格或者说体元方耐1 1 。 模仿二维网格的方法,将一个三维物体按照一定的规则划分成一些等体积的体元。每个 体元是一个三维坐标的变量,不同的体元具有不同的特征。考虑到邻近的体元,常出现特 征相同的情况,为了减少存贮容量,模仿二维平面的四叉树方法,发展了一种与之相似的 八叉树方法【2 】。这种数据结构存在两个明显的缺点:首先,表达精度不够,难以达到要求; 其次,难以表达实体之间的各种关系。对于错综复杂的三维实体,如地质岩层,这种结 构则显得无能为力。 m o l e n a a r 教授提出了三维矢量数据模型1 3 j ,这是通过扩充二维矢量数据结构,将点、 线、面要素扩展到体。体由面组成,面由线构成,线性元素通过矢量坐标表达。更重要的 是,该模型除了表达各种元素的空间位置以外,还表达它们之间的拓扑关系。因此该模 型对表达比较规则的实体有实用价值,而对于不规则的三维现象则难以表达。另外,这种 方法把一个三维实体假设成均值,实际上,大部分的矿体都不是均值的。所以,将三维矿 体划分成网格体元的方法还是必需的。这样,采用矢量与网格结合的数据结构是适宜的。 三维空间信息系统与二维信息系统相比,不只是增加了一个三维坐标和将点、线、 面扩展到体,在数据表达时,三维对象的数据也将比二维对象的数据多而且复杂,致使目 前许多涉及到三维g i s ( g e o g r a p h i ci n f o r m a t i o ns y s t e m ) 的工作都进展缓慢,甚至美国 发布的空间数据交换标准( s d t s ,s p a t i a ld a t at r a n s f o r m a t i o ns t a n d a r d ) 4 1 ,都将三维 的问题搁置下来。虽然有些系统在三维数据处理和三维目标显示方面表现出比较好的能 力,但对三维的数据结构和数据模型远没有达成共识。 1 2 国内外研究现状 m i t 林肯实验室的i v a ne s u t h e r l a n d 发表了一篇题为“s k e t c h p a d :一个人一机 通信的图形系统 的博士论文,论文中首次使用了计算机图形学“c o m p u t e rg r a p h i c s 这个术语,证明了交互式计算机图形学是一个可行的、有价值的研究领域,从而确定了 计算机图形学作为一个崭新的科学分支的独立地位【5 】。 最近几年计算机图形学的发展使得三维表现技术得以形成,这些三维表现技术使我 西安科技大学硕士学位论文 们能够再现三维世界中的物体,能够用三维形体来表示复杂的信息,这种技术就是可视 化( v i s u a l i z a t i o n ) 技术。可视化技术使人能够在三维图形世界中直接对具有形体的 信息进行操作和计算机直接交流。这种技术已经把人和机器的力量以一种直觉而自然的 方式加以统一,这种革命性的变化无疑将极大地提高人们的工作效率。可视化技术赋予 人们一种仿真的、三维的并且具有实时交互的能力,这样人们可以在三维图形世界中用 以前不可想象的手段来获取信息或发挥自己创造性的思维。更令人惊奇的是目前正在发 展的虚拟现实技术,它能使人们进入一个三维的、多媒体的虚拟世界,人们可以游历远 古时代的城堡,也可以邀游浩瀚的太空。所有这些都依赖于计算机图形学、计算机可视 化技术的发展。 1 2 1 空间体系结构的研究历史与现状 面向对象( o b j e c t o r i e n t e d ) 的数据模型,其概念起源于面向对象的程序设计语言。 面向对象模型允许定义任意复杂语义的数据类型,它可以直接表达层次结构和一对多的 对象嵌套关系。它不仅支持变长记录,而且支持对象的集合,是理想的空间信息系统的 数据模型。面向对象数据模型有四个基本的概念,即分类( c l a s s i f i c a t i o n ) 、概括 ( g e n e r a l i z a t i o n ) 、联合( a s s o c i a t i o n ) 和聚集( a g g r e g a t i o n ) ,这四个语义概念可以用 来构造空间对象模型1 6 】。 空间体系结构的理论研究与实现国外已做了一些工作并已向实用化转换,美国的 t i g e r 系统便是目前世界上最大的空间数据库系统。国内这方面的工作虽然也有学者在 进行研究,但相对而言还远远不够,要建立一个真正高效的信息处理系统,必须对空间 数据结构体系进行认真的理论研究,提出符合系统需求的合理结构,满足各种显示技术, 具备可视化显示工具( 平移、缩放、旋转、显示方式等) ,提供灵活多样的视图操作和显 示控制方式,能直观地对三维空间内的实体快速进行定位和属性显示。 1 2 2 网格简化技术及其历史与现状 网格简化的目的是:对于输入网格模型m o ,产生与其对应的、基本保持形状的、 较粗糙的简化逼近模型m l ,输出的逼近模型m i ,应该满足某些预先给定的条件。若m o 是三角网格,那么这些条件可以是预设的网格元素( 如三角形网格顶点) 的数目,或是新 旧模型间的几何误差阈限等【7 j 。 任意多边形网格都可以转化为三角网格,所以三角网格的简化方法具有一般意义。 为了对网格模型进行简化,s c h r o e d e r 提出的基于顶点删除的网格简化算法【引,首先利 用网格各顶点的局部几何信息和拓扑信息对网格顶点进行分类,然后再根据不同顶点的 删除标准决定该顶点是否予以删除。如果删除该顶点,则采用递归环分割方法对删除顶 点后所留下的孔洞重新进行三角剖分。t u r k 等提出了基于网格重构的多边形模型简化方 2 1 绪论 法【9 】,这种方法是把一组新顶点分布到原模型上,再以原网格三角形顶点的曲率与三角 形面积作为因子决定新顶点的位置。k a l v i n 等采用三角面合并方法,以原模型中的一个 多边形面片作为“种子”,按照一组合并条件不断合并“种子 四周的面片,直到再无 面片满足合并条件【1 们。f o r s e y 等将网格简化与曲面拟合技术相结合,来产生b e z i e r 曲 面表示的规则四边形网格的简化模型【1 1 1 。d e h a e m e r 等则在f o r s e y 工作的基础上,提出 规则四边形网格模型的简化模型自动生成方法【1 2 1 。 国内学术界也在网格简化领域开展卓有成效的研究工作。周昆等利用八叉树对网格 进行自适应划分,提出一种基于顶点聚类的三角形折叠网格简化算法【l 引,该方法通过点 到平面的距离进行误差控制;潘志庚等提出一种基于三角形移去准则的网格模型简化方 法【1 4 】,与同类算法相比,该算法具有较少的计算量和较高删减率。 网格简化技术主要是由于虚拟现实等应用领域对多分辨率网格的要求而产生发展 的。近年来,由于网格细分、几何压缩、几何小波等技术的发展,以及计算机硬件对多 分辨率网格的支持功能同益增强,也更是因为网格简化技术自身的日益完善,网格简化 研究的热点逐步让位于各种新兴的数字几何处理技术的研究。但随着图形技术的发展, 网格简化的研究尚有迸一步深化的必要【7 】。 ( 1 ) 随着海量数据采集设备的日趋普及,巨量的网格数据已难以一次性调人内存进 行处理,快速有效的外存网格简化算法成为受人重视的研究工作。 ( 2 ) 简化过程中的模型误差代价一直是主要的研究方向,传统的误差度量计算存在 的主要问题,一是精度和可靠性,二是计算量,三是误差计算技术只能在模型简化后才 能计算误差,而人们更喜欢与某类算法相关的误差预测技术。 1 3 本文主要的研究工作 三维图形的良好表现依赖于合理的三维数据格式和数据存取技术,在研究本课题 时,借鉴了面向对象思想,三维图形技术及图像处理技术。主要研究面向对象的三维信 息和模型的表现、控制和处理。 ( 1 ) 定义出一个合理的结构,吸收面向对象的思想和空间数据库技术,使能在该数 据结构中存储三维图形模型数据和应用于简化算法中。 ( 2 ) 按照显示效果应用要求对三维模型的数据进行简化和优化处理。采用边折叠算 法简化数据,并对边折叠算法的折叠条件提出了改进,既高效的显示了数据,又减小了 数据的存储量。 1 4 论文结构 本文共分为六章,各章的内容安排如下: 第一章:绪论。简述了课题的研究背景、国内外发展现状及内容安排。 西安科技大学硕士学位论文 第二章:o p e n g l = 维可视化技术。这是计算机三维图形的理论基础,其中最后一节 更是为本文的实例做好了开发环境的准备工作。本章主要阐述了空间三维实体与计算机 二维平面显示的关系和o p e n g l 的工作原理,以及在v c 2 0 0 5 环境中如何使用o p e n g l 技术。 第三章:三维数据的结构。主要讲述了一种三维数据的结构表示方法,并对建立该 结构的原理一面向的对象思想一做了简单论述,为本文实例中的三维数据存储结构的设 计提供了理论基础。 第四章:三维数据的存取技术。对网格数据简化算法的一般步骤提出了改进,主要 是针对基于二次误差测度的边折叠算法,在折叠条件中做文章,使模型能够保持良好的 拓扑结构和特征结构。 第五章:网格算法运行实例。在前文工作的基础上,在v c 2 0 0 5 开发环境中设计数 据结构并编写程序,实例验证之前的理论工作。 第六章:结论。对全文的工作和理论、实际意义作了一个总结,并探讨可以进一步 深入研究的方向。 4 2o p e n g l 三维可视化技术 2o p e n g l 三维可视化技术 2 1 o p e n g l 的概念 0 p e n g l ( o p e ng r a p h i c sl i b r a r y ) 的前身是s g i 公司为其图形工作站开发的i r i s g l ,从本质上说,它是一个三维图形的模型库与硬件图形产生器的软件接口,开发者可 以利用这些函数来构造景物模型、进行三维图形交互软件的开发,具有高度的可移植性, 并且具有非常快的速度【l5 。o p e n g l 是一个独立于硬件的高效接e l ,可在很多硬件平台 上实现。o p e n g l 中没有执行窗口或获取用户输入的函数,程序员必须通过窗口系统来控 制硬件。此外,o p e n g l 也没有提供描述三维物体模型的高级函数。在o p e n g l 中,只能 使用少数的几种几何图元来构建所需的实体模型。o p e n g l 作为一个性能优越的图形应用 程序设计环境而应用范围广泛,从个人计算机到工作站,o p e n g l 都能实现高性能的三维 图形各种操作功能。 2 1 1o p e n g l 运行模式与工作方式 运行o p e n g l 主要有以下三种模式【1 6 1 : ( 1 ) o p e n g l 硬件加速模式 优化显示芯片,使o p e n g l 的大部分功能均由硬件实现,仅有少量功能由操作系统 来完成。这样将极大地提高图形的显示性能,并且能够获得工作站级的图形效果。 ( 2 ) 三维图形加速模式 由硬件来完成一些较为复杂的图形操作,而显示卡所不能支持的图形功能,则通过 软件模拟的方式在操作系统中进行模拟。采用这种方法,显示速度尽管无法与硬件加速 方法相比,但与纯软件模拟方式相比,速度要快很多。 ( 3 ) 纯软件模式 对于不具备三维加速功能的显示卡,要想运行o p e n g l ,只能采用纯软件模拟方式。 由于所有复杂的0 p e n g l 图形功能均通过主机来模拟,所以速度将会受到很大的影响。 但正是由于有了模拟方式,才使得更多的用户能够领略o p e n g l 的强大功能。 o p e n g l 是一种过程性而不是描述性的图形a p i ( a p p l i c a t i o np r o g r a m m i n g i n t e r f a c e ) 。即它并不描述场景及其外观,而是由程序员规定了某种特定外观或效果所 需要的实现步骤。这些“步骤”牵涉到对这种高度可移植a p i 的调用。o p e n g l 不包括任 何窗口管理、用户交互和文件i o ( i n p u t 0 u t p u t ) 函数。在这方面每个主机环境都有自 己的函数,这些函数负责实现某些方法,而把位图的绘制控制权移交给了o p e n a l 。 图2 1 展示了o p e n g l 的工作流程,图像像素数据的处理方式与几何顶点数据的处 5 西安科技大学硕士学位论文 理方式虽然不同,但它们都是经过光栅化、逐个片元( f r a g m e n t ) 处理直至把最后的光 栅数据写入帧缓冲器。在o p e n g l 中的所有数据包括几何顶点数据和像素数据都可以被 存储在显示列表中也可以立即得到处理。整个流程操作的最后,图形片元都要进行一系 列的逐个片元操作,然后将像素值送入帧缓冲器实现图形的显示。 图2 1o p e n g l 工作流程酬1 0 1 2 1 2o p e n g l 图形操作步骤 根据上一节的流程图可以归纳出,先在o p e n g l 中进行主要的图形操作直至在计算 机屏幕上渲染绘制出三维图形的基本步骤如下【1 7 i : ( 1 ) 根据基本图形单元建立模型,并且对所建立的模型进行数学描述( o p e n g l 中点、 线、多边形、图像和位图等都可以作为基本图形单元) 。 ( 2 ) 在三维空间中确定适当的位置放置模型,并且设置视点( v i e w p o i n t ) 以观察模 型。 ( 3 ) 计算模型中物体的辅助信息,即色彩、光照、纹理、材质等。 ( 4 ) 把模型的数学描述及其辅助信息转换至计算机屏幕的像素上,这个过程也就是 光栅化操作( r a s t e r i z a t i o n ) 。 在这些步骤的执行过程中,o p e n g l 还可能执行其他的一些操作,例如自动消隐处理 等。另外,模型光栅化之后被送入帧缓冲器之前还可以根据需要对像素数据进行操作。 2 1 3o p e n g l 提供的主要功能 o p e n g l 作为一个性能优越的图形应用程序设计工具,已成为目前三维图形程序开发 的标准,是从事三维图形开发工作的技术人员所必须掌握的开发工具。o p e n g l 提供的功 能主要包括以下几个方面【1 6 】: ( 1 ) 图形绘制。 6 2o p e n g l 三维可视化技术 o p e n g l 使用基本图元点、线、多边形来绘制三维图形和复杂的模型以及场景。 ( 2 ) 变换操作。 可以说无论多么复杂的三维图形都是由基本图元组成并经过一系列变换来实现的, o p e n g l 提供了一系列基本的变换,如模型变换、投影变换以及视口变换。 ( 3 ) 颜色模式。 o p e n g l 提供了两种可供选择的颜色模式:r g b a 模式和颜色索引模式。 ( 4 ) 光照和材质设置。 光照是生成真实感图形的重要环节。o p e n g l 光有环境光、散射光和镜面光。用户可 以通过在应用程序中定义多个光源,以及定义它们的位置和属性,以达到需要的光照效 果。材质是指物体表面对光的反射特性。一种材质分别说明了它对环境光、散射光和镜 面光反射的多少,即反射率。 ( 5 ) 图像效果增强。 o p e n g l 提供了一系列的增强图像效果的函数,它们通过反走样、融合、雾化等来增 强图像效果。反走样改善图像中两个面交接处的锯齿效果;融合可以产生半透明效果; 雾化则可以模拟场景,使场景更逼真。 ( 6 ) 位图和图像。 o p e n g l 提供一系列函数来实现位图和图像的显示与操作。 ( 7 ) 纹理映射。 纹理映射技术是增强三维真实感图形效果的重要手段。利用o p e n g l 的纹理映射功 能可以十分逼真地表达物体表面细节。 ( 8 ) 动画。 出色的动画效果是o p e n g l 的一大特色。o p e n g l 提供了双缓冲技术来实现动画的绘 制。 2 2 三维图形技术的简要介绍 3 d ( t h r e e d i m e n s i o n a l ,三维) 计算机图形实际上是平面的计算机屏幕上的二维图 像,它只是提供了深度的错觉,即第三个维度。 2 2 12 d 与3 d ( 1 ) 透视法 2 d + 透视法= 3 d t l5 1 ,计算机屏幕是在一个平面上的二维图像,而不是两幅图像从不同 透视角度落在两只眼睛上。从根本上说,所谓的3 d 计算机图形实际上是近似于真正的 3 d 。 图2 2 是实实在在的二维计算机图形,但是却给了我们三维的效果。图2 2 ( a ) ,通 7 西安科技大学硕士学位论文 过加入深度差,使二维计算机图形看上去更像三维图形。图2 2 ( b ) ,因为删除了被挡住 的线段,而得到了关于立方体真实朝向的更多线索,同样给了我们三维的效果。除了用 线段绘制之外,我们还想加上颜色以创建实心的对象。我们以灰色和白色给立方体上色 时,如图2 2 ( b ) ,通过给侧面上不同的颜色获得了实体对象的感觉。 给立方体的每个侧面上不同的着色有助于眼睛辨别出对象的不同侧面。通过对各侧 面进行适当的明暗处理并赋予立方体阴影就会进一步增加真实感。 ( a ) ( b ) 图2 2 透视法 除此之外,还可以加入纹理、透明度等来增强三维效果。 ( 2 ) 投影 屏幕上的像素只有两个维度,无论眼睛看到的如何,它总是以二维像素呈现在计算 机屏幕上。把三维物体变为二维图形表示的过程称为投影变换,这是将一种地图投影点 的坐标变换为另一种地图投影点的坐标的过程。 投影变换可分为两大类: a 、正射投影。又叫平行投影或直角投影,属于任意性质的视透方位投影。即投影 平面切于地球面上一点,视点在无限远处,投影光线是互相平行的直线,并与投影平面 相垂直。该方式使尺寸相同的物体看起来一样大,不论它们是离的很远还是靠的很近。 b 、透视投影。透视投影的视线( 投影线) 是从视点( 观察点) 出发,视线不是平 行的。透视投影是用中心投影法将形体投射到投影面上,从而获得的一种较为接近视觉 效果的单面投影图。它具消失感、距离感、相同大小的形体呈现出有规律的变化等一系 列的透视特性,能逼真地反映形体的空间形象。 透视投影符合人们心理习惯,即离视点近的物体大,离视点远的物体小( 图2 3 ) , 远到极点即为消失,成为灭点。透视投影的视景体类似于一个顶部和底部都被切除掉的 棱椎,也就是棱台。这个投影通常用于动画、视觉仿真以及其它许多具有真实性反映的 方面。 8 西安科技大学硕士学位论文 值和y 值。图2 4 显示了常用的两种修剪区域的方法。 jy r ( 0 ,o ) x jy r ( o ,o ) x 图2 4 修剪区 ( 3 ) 视见区 以像素计算的话,修剪区的宽度和高度可能不会恰好与窗口的宽度和高度一致。所 以,坐标系必须从逻辑笛卡尔坐标映射为物理屏幕的像素坐标。这种映射是由设置“视 见区 指定的。视见区是在窗口的客户区内用于绘制修剪区的区域。视见区只是把修剪 区映射为窗口的一个区域。通常会把视见区定义为整个窗口( 图2 5 ) ,但这不是必须的, 可以把窗口任何大小的区域定义为视见区。 j l :,一- : 修剪区 x - - 。、:j ? : - - - - - - - - - - i - 一 视见区 - - - - ,- - - - - - _ - - - - - - 一 图2 5 视见区与修剪区 ( 4 ) 3 d 笛卡尔坐标 如果给二维笛卡尔坐标系扩展出第三个维度,并加上一个深度分量。图2 6 显示的 笛卡尔坐标系统带有一个新的轴:z 轴( 代表深度) 。z 轴与x 轴和y 轴都垂直。它表示 l o 2o p e n g l 三维可视化技术 一条垂直于屏幕中心并指向观察者的直线( 图2 6 中已经把查看坐标系统的视角绕y 轴 向左旋转并绕x 轴向后下方旋转了) 。现在便可以用三个坐标x ,y 和z ,来指定空 间中的一个点。 图2 6 三维笛卡尔坐标系 2 2 3 三维图形显示流程 计算机本身只能处理数据,图形在计算机内也是以数据的形式进行加工和处理的, 图形和数字之间的联系可以通过坐标系建立。为了使被显示的物体数据化,需要在被显 示的物体所在的空间中定义一个世界坐标系。世界坐标系的坐标轴的单位和坐标轴的方 向要适合对物体的描述。 计算机对数据化的显示物体作了加工处理后,要实现在图形显示器上显示的目的, 这就需要在图形显示器屏幕上定义一个二维直角坐标系,这个坐标系称为屏幕坐标系。 这个坐标系坐标轴的方向通常取成平行于屏幕的边缘,坐标原点和坐标轴方向可根据情 况而定,长度单位常取成一个像素的长度,大小可以是整型数。 有时为了只显示图形的某一部分,可以定义一个三维视景体( v i e w i n gv 0 1 u m e ) 。 正射投影时一般是一个长方体的视景体,透视投影时一般是一个棱台状的视景体。只有 视景体内的物体能被投影在显示平面上,其他部分则不能。在屏幕窗口内定义一个视见 区( 也叫视口区) ,视景体投影后的图形就在视见区内显示。 为了适应物理设备坐标和视见区所在坐标的差别,还要作适应物理坐标的变换。根 据上面所述,三维图形的显示流程如图2 7 所示。 西安科技大学硕士学位论文 世界坐屏幕坐 三维 标系中 卧 三维视口 标系中 几何 - 的三维 变换 裁剪变换 的图形 物体显示 图2 7 三维图形显示流程 2 3v c 和0 p e n g l 建立三维图形开发环境 0 p e n g l 独立于任何窗口系统或操作系统,而且包含了许多图形函数,但它并没有窗 口函数,因此需要借助一个窗口系统来完成0 p e n g l 三维图形的绘制。v i s u a lc + + 包含 了功能强大的基于w i n d o w s 的应用程序框架,已经是一种当前非常流行的工作平台。于 是我们可以利用v i s u a lc + + 的强大功能来实现对0 p e n g l 三维图形的绘制18 1 。 2 3 1 准备工作 第一步:设置开发环境。 在v c 2 0 0 5 环境下,以w i n d o w sx p 操作系统为例。 首先检查9 1 h ,g l u h ,g l a u x h 文件是否存在于m i c r o s o f tv i s u a ls t u d i o 8 v c p l a t f o r m s d k i n c l u d e g l 目录中;o p e n 9 1 3 2 1 i b ,9 1 u 3 2 1 i b ,g l a u x 1 i b 和 g l u t 3 2 1 i b 文件是否存在于m i c r o s o f tv i s u a ls t u d i o8 v c p l a t f o r m s d k l i b 目录 中和操作系统安装目录w i n d 0 w s s y s t e m 3 2 目录下。 第二步:创建一个m f c 单文档结构的工程。 将该工程命名为3 d o p e r a t o r 。如果工程创建成功,在工程中会生成一个派生的视图 类c m y 3 d 0 p e r a t o r v i e w ,它分别在文件3 d o p e r a t o r v i e w h 和3 d o p e r a t o r v i e w c p p 中声 明和实现。 第三步:在工程中加入o p e n g l 的连接库。 打开解决方案资源管理器,在解决方案上右击,选择“添加 子菜单“现有项, 出现添加现有项对话框。选择第一步中的o p e n g l 3 2 1 i b ,g l u 3 2 1 i b 和g l a u x 1 i b 三个 文件,并确定添加。 第四步:添加头文件到s t d a f x h 中。在文件s t d a f x h 中包含以下头文件: # i n c l u d e # i n c l u d e # i n c l u d e 2 3 2 渲染上下文 1 2 2o p e n g l 三维可视化技术 o p e n g l 的绘图方式与w i n d o w s 的绘图方式不同,其区别主要表现在以下三个方面: ( 1 ) w i n d o w s 采用的是g d i ( g r a p h i c sd e v i c ei n t e r f a c e ) 绘图; ( 2 ) o p e n g l 采用的是渲染上下文r c ( r e n d e rc 0 n t e x t ,又称渲染描述表) 绘图; ( 3 ) o p e n g l 使用的是特殊的像素格式一p i x e l f o r m a t d e s c r i p t o r 结构。 在w i n d o w s 中使用的g d i 绘图时必须指定在哪个设备上下文d c ( d e v i c ec o n t e x t , 又称设备描述表) 中绘制,同样地,在使用o p e n g l 函数时也必须指定一个所谓的渲染上 下文。正如设备上下文d c 要存储g d i 的绘制环境信息如笔、刷和字体等,渲染上下文 r c 也必须存储o p e n g l 所需的渲染信息如像素格式等。 一般情况下,在使用单个r c 的应用程序中,在响应i i m _ c r e a t e 消息时创建r c ,当 1 j | m c l o s e 或w m d e s t r o y 消息到来时再删除它。在使用o p e n g l 命令向窗口中绘图之前, 必须先建立一个r c ,并使之成为现行r c 。否则,0 p e n g l 将简单地忽略所有的绘图命令。 在使用现行r c 时,不应该释放或者删除与之关联的d c 。如果应用程序在整个生命期内 保持一个现行r c ,则应用程序必须也要有一个d c 资源。 关于管理r c 与d c 的方法【1 6 l : ( 1 ) r c 由w m - c r e a t e 消息响应时创建,创建后立即释放d c ,当1 j | m p a i n t 消息到来 时,程序再获取d c 句柄,并与r c 关联起来,绘图完成后,立即解除r c 与d c 的关联, 并释放d c ;当w m _ d e s t r o y 消息到来时,程序只需简单地删除r c 即可。 ( 2 ) r c 在程序开始时创建并使之成为现行r c 。它将保持为现行r c 直至程序结束。 相应地,g e t d c 在程序开始时调用,r e l e a s e d c 在程序结束时才调用。此种方法的好处 是在响应w m p a i n t 消息时,无需调用十分耗时的w g l m a k e c u r r e n t 函数,一般它要消耗 几千个时钟周期。 2 3 3 具体实现步骤 本节内容紧接着2 3 1 节的工作进行操作。 第一步:设置像素格式。 首先需要在视图类c m y 3 d o p e r a t o r v i e w 中添加自定义成员函数,函数原型如下: b o o lc m y 3 d 0 p e r a t o r v ie w :s e t u p p i x e1f o r l a t ( c d c ,i cp d c ) ;设置像素格式 并向视图类c m y 3 d o p e r a t o r v i e w 中添加成员变量:c c l i e n t d c 棚y _ p d c ; o p e n g l 渲染上下文在w i n d o w s 中,使用结构p i x e l f o r m a t d e s c r i p t o r 来设置像素格 式,并提供c h o o s e p i x e l f o r 腿t ( ) 函数来选择最为匹配的像素格式以及s e t p i x e l f o r m a t ( ) 函数来为设备场景设置像素格式。设置像素格式的步骤如下: a 填写结构p i x e l f o r m a t d e s c r i p t o r ,像素格式是用这个结构来描述的。 b 调用函数c h o o s e p i x e l f o r m a t ( ) ,将填写好的像素格式结构传递给该函数,函数 c h o o s e p i x e l f o r m a t ( ) 返回一个整型的序号。这个序号标识一个当前设备场景中所能提 西安科技大学硕士学位论文 供的,且与所要求的像素格式最为匹配的像素格式。 c 将这个返回的像素格式序号传递给函数s e t p i x e l f o r m a t ( ) ,使之设置成为当前设 备场景的像素格式。 使用自定义函数来定义p i x e l f o r m a t d e s c r i p t o r 结构: b 0 0 lc m y 3 d o p e r a t o r v i e w :s e t u p p i x e l f o r m a t ( ) p i x e l f o r m a t d e s c r i p t o rp f d = s i z e o f ( p i x e l f o r m a t d e s c r i p t o r ) , 1 , p f d d r a w j ( ) 二w i n d o wp f d s u p p o r t o p e n g lp f p d o u b l e b u f f e r , p f d t y p e r g b a , 2 4 , 0 ,o , 0 , o , o , o , 0 , 0 , 0 , o ,0 ,0 ,o , 3 2 , o , 0 , p f p m a i n p l a n e , o , 0 ,o , o ) : i n tp i x e li n d e x : i f ( ( p i x e l i n d e x = c h o o s e p i x e l f o r m a t ( m y p d c 一 g e t s a f e h d c ( ) ,p f d ) ) = = 0 ) r e t u r nf a l s e : i f ( s e t p i x e l f o r m a t ( m y p d c 一 g e t s a f e h d c ( ) ,p i x e li n d e x ,& p f d ) = = f a l s e ) r e t u r nf a l s e : ) 1 4 2o p e n g l 三维可视化技术 r e t u r nt r u e : 第二步:创建渲染场景。 为c m y 3 d 0 p e r a t o r v i e w 类添加消息w m r e a t e 的响应函数,用w 9 1 c r e a t e c o n t e x t ( ) 函数来创建o p e n g l 的渲染场景,用w 9 1 m a k e c u r r e n t ( ) 函数使给定的渲染场景设置成为 当前调用线程的渲染场景,而线程中随后调用的0 p e n g l 命令都将通过与该渲染场景相 关联的设备场景来实现窗口的场景绘制。 具体实现代码如下: i n tc m y 3 d o p e r a t o r v i e w :o n c r e a t e ( l p c r e a t e s t r u c t1 p c r e a t e s t r u c t ) i f ( c v i e w :0 n c r e a t e ( 1 p c r e a t e s t r u c t ) = = 一1 ) r e t u r n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年外科泌尿损伤专项测试题附答案
- 2025至2030中国男士针织服装行业市场发展分析及发展前景与投融资报告
- 2025至2030中国牙科实验台灯行业项目调研及市场前景预测评估报告
- 2025至2030自助BI工具行业项目调研及市场前景预测评估报告
- 福清市法院书记员招聘笔试真题2025
- 中医护理专业面试题库及答案解析
- 石嘴山市公费师范生招聘真题2025
- 2025年连云港市连云区事业单位考试真题
- 2025至2030中国风电叶片行业项目调研及市场前景预测评估报告
- 2025-2030中国骑行头盔安全认证升级对产业结构影响
- d-d二聚体课件教学课件
- 跌倒坠床风险评估报告制度
- 2025年法院司法辅助人员测试卷附答案
- 压力管理策略课件
- 大学核心机房建设项目技术方案
- 微波暗室应急预案
- 铁路除雪打冰知识培训
- 2025年商砼搅拌站混凝土试验室主任年终会发言年终总结报告发言稿
- 大学生心理课件
- 2025年岩棉复合板行业分析报告及未来发展趋势预测
- 2024妊娠期心肺复苏中国急诊专家共识
评论
0/150
提交评论