已阅读5页,还剩56页未读, 继续免费阅读
(计算机应用技术专业论文)基于visual+basicopengl的三维图形及动画平台研究和实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘嗄 摘要 本论文围绕“基于v i s u a lb a s i c o p e n g l 的三维图形及动画平台研究和 实现”过程而展开。本研究面向工程应用,设计和开发有较高实用价值的三维 图形和动画平台。 本文主要研究工作及所取得的研究成果如下: ( 1 ) 基于v i s u a lb a s i c 和o p e n g l 的软件开发环境,实现三维图形和动画平台 的开发。该平台的主要功能包括:场景环境的管理、维护和模型逼真显示等功能, 提供参数设置和鼠标键盘等交互及实时对象维护功能。 ( 2 ) 分析并研究v i s u a lb a s i c 编程的特点及指针和类等关键技术的使用,深入 探讨v i s u a lb a s i c 与w i n d o w s 系统的关系及与o p e n g l 之间的联系。同时深入研 究o p e n g l 的工作特点和流程。 ( 3 ) 设计并实现多视点、多角度、全方位的实时视点观测方法,并建立一整 套随任意控制视点进行局部或全局的观测场景的方法。为用户进行微观和宏观观 察视景对象提供便利的途径。 ( 4 ) 实现对光照的设计、效果处理和外部数据模型调入的基本功能,把这些 基本功能统一起来,能较好的实现模拟真实的效果。对模型进行参数化设计和实 时绘制。 ( 5 ) 对平台中涉及到的关键技术进行探讨,对o p e n g l 的纹理映射技术及原 理、拾取技术的使用、显示列表的使用、动画的实现进行了深入研究,并探讨出 一套系统平台开发中合理的应用方法。 本论文理论上能更深刻地认识三维图形设计的本质,实践上对二次开发人员 可以针对具体应用领域实现复杂的行为。随着软件功能的发展和完善该平台可被 广泛的应用于多种行业。 关键字v i s u a lb a s i c ;o p e n g l ;平台;三维图形;动画 a b s t r a c t a b s t r a c t i nt h i s p a p e r , f o c u s i n g o n ”b a s e do nv i s u a lb a s i c o p e n g l t h r e e d i m e n s i o n a lg r a p h i c sa n da n i m a t i o np l a t f o r mf o rr e s e a r c ha n dr e a l i z e ”t h e p r o c e s si n i t i a t e d t h i sr e s e a r c hi s f o r e n 西n e e r i n ga p p l i c a t i o n s ,d e s i g n a n d d e v e l o p m e n tt h r e e d i m e n s i o n a lg r a p h i c sa n da n i m a t i o np l a t f o r mo fh i 曲p r a c t i c a l v a l u e i nt h i sp a p e r , r e s e a r c hw o r ka n dt h er e s e a r c hr e s u l t sa r eo b t a i n e da sf o l l o w s : ( 1 ) t h e3 一dg r a p h i c sa n da n i m a t i o np l a t f o r mr e a l i z eb a s e do ns o f t w a r e d e v e l o p m e n te n v i r o n m e n to fv i s u a lb a s i ca n do p e n g l t h em a i nf e a t u r e so f p l a t f o r mi n c l u d e :m a n a g e m e n tf o rs c e n e se n v i r o n m e n t a l ,m a i n t e n a n c ea n dr e a l i s t i c d i s p l a ym o d e l s ,t h em o u s ea n dk e y b o a r di n t e r a c t i v e ,r e a l t i m eo b j e c tm a i n t e n a n c e u s e dp a r a m e t e rs e t t i n g ( 2 ) t oa n a l y z ea n dr e s e a r c ht h ec h a r a c t e r i s t i c so fv i s u a lb a si cp r o g r a m m i n g a n du s eo ft e c h n o l o g i e sf o rp o i n t e ra n dc l a s se t c t h er e l a t i o n s h i po fv i s u a lb a s i c , w i n d o w ss y s t e ma n do p e n g li ss t u d i e di nd e p t h a tt h es a n l et i m e ,o p e n g u s c h a r a c t e r i s t i c sa n dp r o c e s s e si ss t u d i e di nd e p t h ( 3 ) d e s i g n e da n dr e a l i z e dam u l t i p e r s p e c t i v e ,m u l t i a n e 丑e , af u l lr a n g eo f r e a l t i m ep e r s p e c t i v em e t h o d ,e s t a b l i s h e das e to b s e r v a t i o n a ls c e n e sa p p r o a c hw i t ht h e a r b i t r a r yc o n t r o lo fl o c a lo rg l o b a lp o i n t f o ru s e r sp r o v i d eac o n v e n i e n tw a yt o o b s e r v et h em i c r oa n dm a c r ov i e wo ft h eo b j e c t ( 4 ) r e a l i z e dt h eb a s i cf u n c t i o n so ft h el i g h td e s i g n i n g ,t h ee f f e c td e a l i n ga n d e x t e r n a ld a t am o d e lt r a n s f e r i n g ,i tc a l lb e t t e rr e a l i z es i m u l a t et h er e a le f f e c tt ou n i f y t h e s eb a s i cf u n c t i o n s d e s i g nm o d e lo f p a r a m e t e r sa n dr e a l t i m er e n d e r i n g ( 5 ) d e s c r i b e d i n k e yt e c h n o l o g y o nt h e p l a t f o r m ,i n d e p t h r e s e a r c h t e x t u r e m a p p i n gt e c h n o l o g ya n dp r i n c i p l e , t h eu s eo fp i c ku pt e c h n o l o g ya n dd i s p l a y l i s t ,a n i m a t i o nr e a l i z e do nt h eo p e n g l ,g a i nt h ea p p l i c a t i o nm e t h o d so fr e a s o n a b l et o d e v e l o p i n gas y s t e mp l a t f o r m i nt h i sp a p e r , t h en a t u r eo f3 - dg r a p h i c d e s i g nw a sm o r ep r o f o u n du n d e r s t a n d i n g i nt h e o r y , t h ec o m p l e x i t yo fb e h a v i o rc a nr e a l i z ef o rs e c o n d a r yd e v e l o p m e n to f p e r s o n n e l s p e c i f i ca p p l i c a t i o n si np r a c t i c e w i t hd e v e l o p m e n ta n dp e r f e c t i o n ,t h i s p l a t f o r mc a nb ew i d e l yu s e di nav a r i e t yo fi n d u s t r i e s k e y w o r d s v i s u a lb a s i c ;o p e n g l ;p l a t f o r m ;3 dg r a p h i c s ;a n i m a t i o n i i i 独创性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其它 人已经发表或撰写过的研究成果,也不包含为获得北京工业大学或其它教育机构 的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均 已在论文中作了明确的说明并表示了谢意。 签名:叁墓墨日期:逍圣2 = 3 0 帧秒时,动画才会被视为连续的,这给出了场景简化算 法处理时间的底线也就是: ( 场景算法执行时间调用场景简化算法的平均帧间隔+ 简化后场景的平均 每帧图形的渲染时间) = 1 3 0 秒 上面的理论为平台的场景管理指明了方向。 平台将利用八叉树来管理一个区域内的场景物体,通过八叉空间划分树来帮 助场景裁减以提高裁减算法的效率。同时将采用硬件支持的闭合测试来剔除大部 分被遮挡的场景物体。硬件支持的闭合测试就是:用物体层次包围球和包围盒来 北京t 业人学t 学硕 j 学位论文 代替物体,进行尝试性渲染,如果尝试性渲染过程中没有影响z 缓存的数据就说 明物体是被已经绘制的物体所遮挡的可以剔除掉。否则就绘制物体本身。通过八 叉树的空间排序性,可以按距离视点远近和物体大小,先绘制近处的大物体,然 后在绘制后续物体前先用物体的包围盒进行上述的遮挡测试,如果测试通过就绘 制物体否则就忽略掉物体的绘制。由于包围盒的面片数量比较少,所以能够很大 的剔除掉被遮挡物体的绘制,而增加的测试代价可以忽略不计。 同时场景数据的表示方法对于显卡处理时问和显存的消耗是不同的,比如一 个三角形网格其中有很多共用的三角形顶点,那么这些共用的顶点如果用三角形 条带和索引表来表示就只需要一个顶点数据和一个索引来表现,但是如果将网格 分割为一系列三角形的列表来表示则会出现很多重复的顶点索引,而如果不用索 引方式来表示顶点,那么就会额外的出现很多重复的顶点数据。所以加快图形渲 染的另一种方法就是进行几何压缩,把三角形网格中的三角形尽量的分配到少数 的几个三角形条带中。并用索引来表示三角形的顶点的数据在三角形顶点表中什 么位置。 ( 2 ) 资源管理系统 所谓资源管理就是要在系统需要时候合理的分配计算机系统中的硬件资源 如内存、显存等,处理系统对资源的争用,以及在不需要时候合理的释放硬件资 源。而平台系统的资源管理主要是要处理好场景元素的顶点缓冲区、图元缓冲区、 纹理缓冲区在内存和显存中的分配。将频繁使用的缓冲区分配到显存上,将不频 繁使用的缓冲区分配到内存上,在减少显卡设备总线的数据传输的同时,保证系 统高效和稳定的运行。 ( 3 ) 渲染管理系统 要将场景图元送入显示硬件并调用o p e n g l 接口进行绘制,需要首先设定设 备的状态参数,然后调用绘制函数进行图元绘制。设备状态参数包括设定变换矩 阵、渲染目标缓冲区、深度和模版缓冲区、纹理等以及他们的协同控制参数和设 备工作参数等等。而图元绘制是在这些状态参数的系统控制下,将顶点、图元、 纹理像素等送入设备按规定的设备设置进行处理。 所有设备状态参数和场景数据构成一个单步渲染过程的渲染作业。通常一个 场景由很多的场景图元和绘图资源构成,而一个场景图元由很多不同的组成部分 构成,每个独立的部分对应不同的绘图资源,通常不能够在有限的设备状态和设 备存储中设定一个图元的所有绘图资源,并且一些渲染算法要求按顺序的多次设 定互斥的设备参数来绘制场景图元的一个组成部分( 如绘制透明体需要先设定透 明度测试让设备过滤所有的透明面片来首先绘制所有不透明面片,然后设定透明 度测试过滤所有不透明面片,并设定颜色混合来绘制所有不透明面片。由于需要 在两个不同的设备状态集上对同一组面片数据工作两次所以必须分两步完成) 。 这就使场景的绘制过程通常不是一个单步的渲染作业,而是一个按顺序进行处理 2 4 第3 章f 台总体建构 ;| 讨 詈! ! ! 曼曼! ! 曼曼! 皇皇皇! 曼! ! ! ! ! ! ! ! 鼍! 皇曼皇曼! ! 曼! 皇曼! 苎i i 鼍! ! ! ! 鼍苎皇! 皇! 鲁! 皇皇皇暑! 富! ! ! 詈! 曼! ! ! ! ! 鼍! 鼍! ! ! 詈! 曼皇鼍 的渲染作业的工作队列构成的一个渲染工作集。 由于很多情况下后续作业需要前面的作业提供一些产品数据添加到绘图资 源里才能让后续作业正确的完成,所以场景渲染工作集中作业的前后相继顺序通 常不能够任意改变。必须按规定的顺序来完成,如果作业的处理顺序被改变通常 会让场景的显示失真或出现错误的结果。 在图形系统里,从单个图元的角度来审视绘制过程中可以发现,对于一个图 元的绘制,需要指定图元显示需要实现哪些特效,如:有什么形式的阴影,是否 折射和反射等,而每一种特效需要让设备按顺序做哪些渲染作业。通常实现同样 的特效对于不同的场景图元在作业中设备状态的设置和作业的顺序上并没有不 同,只是针对不同的绘图资源而已,实现一种特效的工作集中共同的作业顺序和 作业中设备状态参数的设置就构成了固定的特效渲染算法。对于单个图元只要告 诉它要使用哪几种特效算法,和每种算法的作业要用到他哪些绘图资源,它应该 就知道如何去表现自己的全部信息。 但是从整个场景绘制的角度来看则不然。从单个图元的每一个特效的算法中 我们可以抽取出一个工作集,这个工作集能够正确的绘制一个图元的一个效果。 但是正如画一幅水彩画我们先画树还是先画树下的人,先用红色画还是先用黑色 画将得到不同的图像一样,多个图元的绘制顺序和不同特效的绘制顺序将导致绘 图系统得到不同的图像。所以在绘制整个场景的过程中必须将从绘制单个图元的 工作集中的作业拉出来进行正确的排序和组合才能构成绘制场景的正确的工作 集。另外由于频繁的设置设备参数和装卸绘图资源更加地耗费设备的处理时间, 所以对于能得到同样绘图结果的两个不同组合的工作集其效率也是不同的。 如何实现不同渲染算法的工作集的优化组合在保证正确渲染出场景的情况 下能够让渲染的帧速率最优就是渲染管理的目标。优化渲染效率的方法只有一种 有效的途径就是没有前后相互关系的渲染作业按资源聚合。以减少资源到显示处 理设备的频繁调度。 ( 4 ) 动画播放系统 动画播放的实质是:在特定时刻改变场景物体变换矩阵、改变程序中的参数 以及改变纹理和材质实现的。 具体可划分为:场景图元动画、摄像机动画、纹理材质动画。 纹理和材质动画是按时间改变一个场景物体面片上纹理和材质实现的。如过 程性纹理、视频纹理和时变纹理。对于纹理材质动画我们可以给场景物体赋予多 列纹理和材质队列或建立一个视频纹理,在开启某个动画时指定某个纹理材质队 列为活动的队列,探测时间事件,并在时刻到来时移动活动纹理材质队列中的当 前指针,让指针所指向的纹理和材质作为当前纹理材质或根据具体时刻在当前纹 理材质和队列中下一个纹理材质问混合。 摄像机动画是在移动摄像机的情况下对场景的投影矩阵和视区变换矩阵进 北京t 业火学t 学硕l :学位论文 行改变引起的动画。通常交互式改变摄像机的时候就会发生该动画,这时候不需 要进行额外的处理,只要保证摄像机类的参数同这些矩阵同步就行了。如果在某 个时刻需要由系统根据具体路线来实时改变摄像机位置方向,这个时候让摄像机 处理时间事件,并根据时间来设置其参数就可以实现这种情况下的动画。 场景图元动画是场景图元的位置和方向的改变引起的动画。通常分为:变形 动画、骨骼动画、变换动画、替换动画。 变形动画是场景物体的顶点按固定的轨迹变化位置和法线方向产生的。这种 动画要求场景物体记录顶点的多个位置和法线方向,在动画开始后顶点的位置和 法线方向根据时间在两个相邻位置数据和法线数据间插值得到。这可以通过特定 的程序实现。 变换动画是按时间改变场景物体的变化矩阵实现。可以为场景物体指定一组 ( 物体只有一种动作) 或多组世界( 物体有多种动画) 矩阵。在开启某个动画的时候 指定一组矩阵活动,并根据时间事件在活动的一组矩阵中的两个相邻矩阵中插值 来决定当前时刻的世界矩阵,通过这种方式实现动画。 骨骼动画是变换动画的一种进化形式。实现骨骼动画的场景物体由皮肤和骨 骼组成。皮肤就是面片网格,而骨骼对应于面片顶点的世界变换矩阵。一个顶点 可以有多个世界矩形,顶点的位置由多个世界矩阵变换出的多个顶点位置来根据 各个矩阵影响顶点位置的权重来插值得到。这种动画的好处是对于动物等由皮肤 和关节构成的物体,关节转动时候,关节两边的皮肤由于位置不同需要用两个矩 阵来分别变换,但是如果用传统变换动画的方法,关节处的皮肤会出现断裂。为 了防止断裂,关节处皮肤的顶点应该根据两个矩阵变换出的位置插值得到。 替换动画要求场景物体对象存储一个对象的不同网格表示,在动画发生后, 随时间事件渲染不同的网格来显示场景物体,就实现了替换动画。由于这种动画 相邻变化的差异比较大,为了动画的连续性,可以在渲染两个不同表示之问插入 一些中间帧,中问帧采用两个表示的渲染结果进行颜色混合得到,这样可以提高 这种动画的连续性。 3 2 系统平台的需求 3 2 1 平台功能需求 综合上一节考虑,设计的系统平台应具有以下功能: ( 1 ) - 维模型的创建和修改在平台系统中,用户能够建立简单的三维模型, 并通过键盘、鼠标对模型进行一系列的操作( 包括对模型的位移、缩放、旋转等) 。 还可以通过参数接口来传递模型的位置、角度等信息来观察模型的真实程度。支 持外部信息的输入,实现交互式操作,实时观察模型效果。 箔3 章、f 角总体雀构探讨 ( 2 ) 外部信息处理支持外部数据文件的导入,包括文本、图像、三维模型文 件等,并支持文件的输出。 ( 3 ) 特殊效果能设置实现特殊效果显示,主要有材质、灯光、雾以及背景等 的编辑修改,以达到最佳视觉效果。 ( 4 ) 对场景进行渲染输出。 ( 5 ) 多视点的设置和观察无论是单一的固定视点或者是绑定视点都不能满 足用户对场景观察的要求,在视点设计中,增加多视点的功能,从不同的角度来 观察平台中建立的场景。 ( 6 ) 动画设置功能。 3 2 2 平台性能需求 在平台的设计中,除了满足上述的功能需求外,性能需求也很重要。主要体 现在以下几个方面: ( 1 ) 友好的人机界面人机界面的设计是平台设计的一个重要方面。因此,将 以用户为中心的设计思想融和到系统的人机界面设计中,即以用户对界面的需要 变化为出发点,使用户界面的外在形式符合不同用户的需求。 ( 2 ) 人机交互技术在系统初始化及运行过程中,人可以在场景空间中产生、 操纵、删除对象并设置或改变其属性。 ( 3 ) 绘制技术系统能够正确地绘制场景,正确地表现场景中各种三维对象的 效果,并通过有效的、快速的绘制算法,完成场景绘制,满足应用的性能需求, 系统还应将用户的入机操作及时表现在场景的绘制过程中。 ( 4 ) 体系设计系统应该具有开放性的一个结构,即具有一个通用性较强与具 体算法、绘制平台无关的一个框架结构,可以生成一个与平台无关的绘制命令, 实现对绘制算法的支持。 3 3 平台开发环境论证 在软件开发平台上,操作系统选定为w i n d o w sx p 操作系统。w i n d o w sx p 操作系统是p c 平台窗口环境事实上的工业标准,w i n d o w sx p 操作系统所提供 的标准服务有以下几种: ( 1 ) 提供与设备无关的y o 功能; ( 2 ) 高效的内存管理突破了常规内存限制,允许程序透明地存取扩充内存和 扩展内存; ( 3 ) 支持多任务处理。 开发环境工具选定为m i c r o s o f t 公司的m i c r o s o f tv i s u a lb a s i c6 0 。 2 7 北京t q k 人学t 学硕i :学位论文 v b 是一个集成开发环境。在这个环境中,编程者可设计界面、编写代码、 调试程序,直至把应用程序编译成可在w i n d o w s 中运行的可执行文件,并为它 生成安装程序。v b 是基于事件触发机制的编程环境,v b 具有丰富的数据类型, 是一种符合结构化程序设计思想的语言,而且简单易学。v b 的核心是对对象的 链接与嵌入( o l e ) 技术的支持,它是访问所有对象的一种方法。利用o l e 技 术,能够开发集声音、图像、动画、字处理、w 曲等对象于一体的程序【9 】。 使用v b 有以下几个优点: ( 1 ) v b 相对与其它语言来说比较简单,易学,易用; ( 2 ) v b 在界面和开发速度上有很大的优势; ( 3 ) v b 为程序设计提供一个可视的程序开发环境; ( 4 ) v b 能够使用大量的资源库及其组件,拓宽了开发环境; ( 5 ) v b 是一种成熟、有效的软件开发工具,它提供了一个由许多工具组成的 工具包及一个集成开发环境。 o p e n g l 最初用于高端的图形工作站,后来其接1 3 与功能得到了发展,并走 向其它平台,如m sw i n d o w s ,xw i n d o w ,o s 2 和m a co s 等。o p e n g l 是复杂 的3 d 图形设计的标准应用程序接口。它的特点是可以在不同平台之间进行移植, 还可以在客户机朋艮务器系统中工作,效率也要比d i r e c t 3 d 高。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 是一种设计良好的低层的三维a p i ,其运行平台最为广泛。 3 4 平台实现方案论证 开发平台系统时,决定采用何种编程方法是三维应用程序开发的重要环节。 完整的o p e n g l 函数库包含在三个动态链接库( d l l ) 中,即o p e n g l 3 2 d 1 1 、g l u 3 2 d l l 和酉u t 3 2 d l l 。在v b 中实现o p e n g l 图形丌发,可以有三种方案。 第一种方案是直接从动态链接库中访问o p e n g l 函数和命令。每次编程时用 工具打开g l h ,对照数据类型,把需要的变量进行类型转换,如i n t 变l o n g ,f l o a t 变s i n g l e 等,对照函数声明,把需要的函数用p u b l i cd e c l a r ef u n c t i o n s u b l i b ”o p e n g l 3 2 d l l ”声明,若是翻译g l u h 则是l i b ”西u 3 2 d l l ”。把这些写在一个 模块,如此就可以在v b 中直接使用o p e n g l 的函数了,速度比使用其它的第三 方控件都快【2 0 1 。但此方法一般没有人使用。因为o p e n g l 函数库有上百个函数, 每个函数都要在v b 中声明后才能使用,在声明时必须要知道函数的名字、参数、 返回值和该函数被包含在哪一个文件中,有些函数的名字比较长,并带有很多参 数,在输入时不仅费时,而且容易出错;另外在使用o p e n g l 的窗1 3 时,w i n 3 2 2 8 笫3 币、r 翁总1 书建f f :f 探讨 ii_ii_ 要求对窗口类型进行设置,在v b 环境中去设置底层窗口类型非常困难。 第二种方案是使用o c x 控件。把o p e n g l 函数库包装成o c x ( o l ec u s t o m c o n t r 0 1 ) 控件,直接注册安装在v b 环境中,将控件放置在窗体上就可以使用该 控件的方法和属性来调用o p e n g l 函数和命令。w a i t e g l o c x 是由w a i t eg r o u p p r e s s 开发的一个控件,它包含核心库( 西) 、实用库( 哲u ) 、辅助库( a u x ) 中的大多数 函数 2 l 】,该控件不支持n u r b s ( 非均匀有理b 样条) 曲线和多边形图形的绘制。 w a i t e g l o c x 控件由于执行速度较慢,功能较少,运行不稳定等原因,运用不 是很广泛。 第三种方案是使用第三方函数库v b o p e n g lt y p el i b r a r y ( v b o e 丑f i b 类型库) , 它支持o p e n g l1 2 规范,包含g l u t3 6 的库函数。类型库是c o m ( c o m p o n e n t o b j e c tm o d e l ) 的概念,是客户端通过接口访问服务器端所提供的属性和方法的一 种机制,它包含可调用描述特定对象的体系结构的代码,包括对象的名称、方法、 传递给方法参数及对象所使用的一些类型,然后在v b 中通过这些类型来调用动 态链接库中的方法、属性等【2 2 】。应用于m i c r o s o f t 平台的w o p e n g l t y p el i b r a r y , 封装有w i n 3 2 函数。这种方法因其功能强大,应用较为广泛,本论文就是基于 利用v b 0 9 1 t l b 类型库来研究讨论的。 3 5 本章小结 本章主要讲述了系统平台的总体设计方案,给出系统平台的结构组成,绘图 功能的组成,大致清楚了系统应完成的功能。论证了系统开发环境。对于系统的 具体实现从三个方案进行了考虑,即一种是直接用v b 调用动态链接库中的 o p e n g l 函数。另一种是将o p e n g l 函数封装在o c x 控件中,对于现成的控件 w a i t e g l o c x 来说,功能较弱。如果自己重新写o c x 控件,工作量较大。最后 一种是把o p e n g l 函数封装在类型库中,v b 0 9 1 t l b 类型库相对功能比较强大,本 系统采用了第三种方案进行实施。 2 9 第4 章、f 台的软r 设计j 实现 第4 章平台的软件设计与实现 4 1 平台的组织和管理 4 1 1 场景的框架组织 本系统平台主要是能进行场景的各种设置。通过人机交互的方式进行参数化 设置,来达到场景展示的一个功能。其组织结构如图4 1 所示: 甲甲 图4 1 平台组织结构图 f i g u r e4 1p l a t f o r mo r g a n i z a t i o nc h a r t 4 1 2 场景的数据组织 平台的核心数据采用场景图的组织方式。场景图是一种数据结构图的形式组 织在一起的场景数据管理方式,它是一个k 。树状结构,根节点是场景,树中每个 节点可以有任意多的子节点,每个节点存储有场景的数据结构,包括场景的三维 物体、光源、相机、变换和其它属性等。平台在场景的绘制过程中,需要对场景 图进行访问和遍历。 4 1 3 场景的管理 基于平台在功能方面的需求分析,平台在场景方面的管理和绘制主要有以下 几个方面: ( 1 ) 场景的构建平台通过提供简单模型的绘制和外部数据文件的调入来绘 制模型。通过场景图表示结构,创立与之对应的类型节点,并根据各自的组织结 构、按层次调入到场景中来,同时记录场景绘制过程中所必需的全局状态信息, 如光照、初始视点等各种状态,保存于场景图中。 ( 2 ) 场景状态管理用来对平台所产生的场景的全局状态管理,其操作有状态 北京t q k 人学厂学硕i “学位论文 的启用或者消除,状态值改变等。主要设计到光照、雾化、视点等方面的管理。 ( 3 ) 场景对象管理场景对象管理主要是按照场景图的数据格式,对场景对象 对应的场景图中的节点和子节点进行管理。主要包括场景对象的添加删除等属性 信息的维护等,还包括对对象的位置、运动方式的管理。 ( 4 ) 场景的绘制场景的绘制功能包括获取当前场景的数据,实现对当前场景 的绘制。 基于场景图的场景绘制需要按照场景图结构的层次来实现场景的显示。如果 在场景图没有改变的情况下,场景的绘制不需要时刻去访问场景图。如果在场景 图更新的情况下,如对对象进行位移、缩放等,则需要对该对象所在的节点以及 它的子节点进行遍历,使场景图进行更新,实现对场景的绘制。 4 2 平台软件框架构建 在v b 中使用o p e n g l 进行绘图时,最基本、最重要的环节就是构建三维图 形运行环境,一个良好的绘图环境给程序的编写和运行都能带来较高的效率。本 论文采用的是v b o p e n g lt y p el i b r a r y 类型库,以下就此类型库进行讨论。 t l b 文件使用和控件的使用类似,需要注册后才能使用。v b 0 9 1 t l b 类型库 注册的具体方法是,将v b 0 9 1 t l b 文件复制到s y s t e m 3 2 系统文件夹下,在开始菜 单的运行命令中输入r e g s v r 3 2 “c :w i n d o w s s y s t e m v b 0 9 1 t l b 运行,在v b 的 集成环境的“工程 菜单下通过“引用”子菜单中选择“v bo p e n g la p i1 2 ( a n s i ) 项将t l b 文件加入项目,这样就将类型库加载到v b 编辑环境中。可 以在“对象浏览器”中查看该函数库中包含的常数、接口和类及每个类的方法和 属性等。 由于o p e n g l 是一个与操作系统无关的图形库,编写o p e n g l 有一定特殊 性,因此需要对o p e n g l 的元素进行初始化,还要按一定的次序清理资源。下 面讨论在v b 编程环境下的使用。 ( 1 ) 设置v b 编程环境 在v b 编辑开发环境的“工程 菜单下通过“引用”子菜单将“v bo p e n g l a p i1 2f a n s i ) ”加入到项目中。 ( 2 ) 初始化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 结构定 义1 、建立渲染描述表r c ( r e n d e rc o n t e x t ) 、设置投影矩阵的模式、清除缓冲存储 区、设置光照和材质等。o p e n g l 是个状态机,设置它的各种状态后,这些状态 一直生效,直到他们被修改。这些工作应该在程序运行开始就完成,因此,完成 工作的代码应该放在窗体较先执行的事件中,如l 0 a d 事件,是在窗体装入到内 存时发生的,执行时问较早。其部分指令格式如下: 3 2 第4 章甲台的软件设计j _ 实现 p f i v a t es u bf o r m l o a d ( ) d i mh g l r ca sl o n g d i mp f da sp i x e l f o r m a t d e s c r i p t o r p f d n s i z e = l e n ( p f d ) 设置像素格式 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 th d c ,p f d匹配设备上下文的像素与指 定的像素 s e t p i x e l f o r m a th d c ,p i x e l f o r m a t ,p f d 设置设备上下文的像素格式 h g l r c = w g l c r e a t e c o n t e x th d c 创建渲染描述表 w g l m a k e c u r r e n th d c ,h g l r c设置为当前渲染描述表 g l c l e a r c o l o r 指定缓冲区的清除值 e n ds u b ( 3 ) 设置投影模式和视口 设置光照和材质等特性 其它 投影变换和视口变换一同决定场景是如何映射到计算机屏幕的,投影变换指 定映射应该如何发生的机制,视口变换指出场景所映射到的有效屏幕区域。当 w i n d o w s 窗口大小发生变化时,o p e n g l 不会自动调整窗口的大小,为了使 o p e n g l 图形显示出来,投影变换和视口变换的函数需要放到窗体的 f o r mr e s i z e ( ) 事件中,r e s i z e 事件是当窗体大小改变时发生。 p f i v a t es u bf o r m _ r e s i z e o g l v i e w p o r t g l m a t r i x m o d eg l _ p r o j e c t i o n g l l o a d i d e n t i t y g l u p e r s p e c t i v e 。 g l m a t r i x m o d eg l ,m o d e l v i e w g l l o a d l d e n t i t y e n ds u b ( 4 ) 图形显示 设置视区 设置当前矩阵为透视矩阵 设置透视矩阵 设置当前矩阵为模型视图矩阵 图形显示是我们的最终目的,主要考虑视图变换、模型变换,模型显示和交 换缓冲区等,这些代码需要实时运行,以此来保证图形的正常显示,因此这些代 码可以放在窗体的p a i n t 事件过程中实现。p a i n t 事件是当窗体重绘时发生。 p f i v m es u bf o r m p a i n t0 百c l e a rc l r c o l o r b u f f e r b i to rc l r d e p t h b u f f e r b i t 清除指定缓冲区 3 3 北京t 业人学t 学坝十学位论文 绘制场景 g l f l u s h 强制命令执行 s w a p b u f f e r s h d c交换缓冲区 m e r e f r e s h 刷新屏幕 e n ds u b ( 5 ) 释放资源 在窗体退出时,除了需要释放属于一般应用程序关闭时应该释放的资源,还 应释放o p e n g l 占用的系统资源,如d c 对象相联的r c 对象等。u n l o a d 事件 是当窗体从内存中卸载时发生。 p r i v a t es u bf o r m u n l o a d ( c a n c e la si n t e g e r ) w g l m a k e c u r r e n t0 ,0 w g l d e l e t e c o n t e x th g l r c e n ds u b 4 3 平台基本功能实现 4 3 1 视点设计 断开h d c 和h g l r c 的关联 删除渲染描述表 视点便于观察者从全局和局部观察场景的状态,平台应提供多视点、多角度、 全方位的综合实时观测方法,并建立一套任意控制视点位置和角度的观测方法, 为用户进行全局及局部观察对象提供便利的方法。 ( 1 ) 三种不同的视点 平台中使用三种不同的观察视点:固定视点、绑定视点和跟踪视点,来观察 场景对象。固定视点是指视点固定在空间一点,去观察空问中一个固定的区域。 如俯视点就是这样的一个固定视点。用于观测全局绑定的视点是指视点与空间物 体绑定在一起,随之一起运动。绑定视点把视点与被观察物体关联起来,以便视 点和物体一同运动。跟踪视点是指视点的位置是固定的,但被观察点的位置是变 化的【2 3 】。 本文中,通过o p e n g l 的g l u l o o k a t 0 来定义一个视图变换。函数原型如下f 2 7 】: s u bg l u l o o k a t ( e y e xa sg l d o u b l e ,e y e ya sg l d o u b l e ,e y e za sg l d o u b l e , c e n t e r xa sg l d o u b l e ,c e n t e r ya sg l d o u b l e ,c e n t e r za so l d o u b l e ,u p xa so l d o u b l e , u p ya sg l d o u b l e ,u p za sg l d o u b l e ) 其中:e y e x 、e y e y 、e y e z 指定眼睛的位置,u p x 、u p y 、u p z 指定j 下( 向上) 向 量的方向,c e n t e r x 、c e n t e r y 、c e n t e r z 指定参考点的位置。 函数的功能是由眼睛的位置、参考点、向上矢量导出取景矩阵,它实际上封 笫4 章甲f 的软件设计j 实现 装了o p e n g l 中的三维平移和旋转变换,从而实现物体坐标系到视点坐标系的坐 标转换。场景中进行视点变换时,使被观测物的位置等于参考点的位置,眼睛的 位置在参考点的位置上增加一个变量,变量的大小由用户通过键盘和鼠标改变以 实时地改变观测角度以及视距范围。 ( 2 ) 视点的运动 当物体运动到固定视点外、把绑定视点从物体的头部改到尾部、物体离跟踪 视点很远时,可以通过鼠标、键盘交互的方式,移动和转动视点的位置和角度, 来控制视点以便继续观察。原理是通过消息循环机制,系统捕捉到某事件信息后, 发送给适当的窗口函数,处理后视点作出相应的改变。 视点的控制方式定义了两种:平移控制和转动控制。 视点的平移控制是指:键盘或鼠标控制视点在当前水平面上向前、向后、向 左、向右的平移,和在垂直方向向上或向下的平移,如图4 2 所示。设视点平移 的变化量为幽,在x o z 平面上的角度为c c ( 即当前视点在水平面上的角度) ,视 点平移之前的坐标是( x ,y ,z ) ,平移之后的坐标是( x ,y ,z ) 它们的关系是如下 ( 4 1 ) ( 4 2 ) ( 4 - 3 ) 公式所示: 工=xahxcos(4一1) z = z a h s i n t r ( 4 2 ) y = y a h ( 4 3 ) 视点的转动控制是指:键盘或鼠标控制视点在当前方向的基础上左旋、右旋、 和下俯,如图4 3 所示。设角度的旋转变化量为,在x o z 平面上的角度为q , 在y o z 平面上的角度为d ,视点转动后的角度分别是口,它们的关系为公 式( 4 4 ) ( 4 5 ) 所示: 口= 口a r ( 4 - 4 ) = a t ( 4 5 ) + x 图4 2 视点的平移控制示意图 f i g u r e4 2v i e w p o i n tt r a n s l a t i o n a lc o n t r o lc h a r t + x 图4 3 视点的转动控制示意图 f i g u r e4 - 3v i e w p o i n tr o t a t i o nc o n t r o lc h a n 北京t 业人学t 学硕l :学位论文 4 3 2 物体模型调入 场景中的模型都是通过人机交互的方式从菜单中调入到场景中,该平台可以 从模型库中调入简单的模型,也可以很方便的调入3 ds t u d i om a x 的二进制输出 格式一3 d s ) 的外部模型文件。 3 d s 文件由许多块组成,每个块首先描述其信息类别,各信息类别由i d 来 标识,且块还包含下一个块的相对位置信息。3 d s 二进制文件中的数据是按低位 在前、高位在后的方式组织的。块中用2 个字节的无符号数来标识块的i d 号,4 个字节的无符号数描述下一个数据区对于当前数据区的位置,实际上就是本数据 区的大小。各个块实际上是一个层次结构,不同类型的块,其层次结构也不同。 为了便于理解和直接转换为源程序,每个块都定义了一个名字。其中,基本块的 i d 为4 d 4 d ,每一个3 d s 文件开头总是由这个块构成。基本块内的块称为主块。 最开始出现的主块是基本块,包含整个文件。还有两种主块:3 d 编辑程序块( 3 d 3 d ) 和关键帧块( b 0 0 0 ) 。3 d 编辑块表明物体形体数据定义由此开始。关键帧块表明 将开始定义关键帧信息【3 2 】。 实现导入3 d s 文件时,为方便编程,首先将3 d s 文件的各个块进行常量定 义,然后按需要将场景模型的各个信息读入。3 d s 文件的导入,除了要考虑模型 的几何属性外,还要考虑其它属性,如纹理、颜色、材质等。所以,要设计相应 的数据结构来存放这些信息。在本系统的实现中,用了两个类模块来完成
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 习作七:写信教案
- 高浓度稳定性二氧化氯溶液的研制及其在自来水消毒中的效能与前景探究
- 高比能量之路:硅-锗基负极材料制备与锂电性能探秘
- 高校贷款办学财务风险预警及防范的研究-以某地方高校为例
- 高校教育国际化浪潮下中外合作办学管理机制的创新与实践
- 高校工程研究中心发展策略深度剖析
- 高校大学生弱势群体问题剖析与多维对策构建
- 高校危险化学品安全管理体系构建与实践-以S农业大学为样本的深度剖析
- 高一政治下册单元复习与测评试题4
- 货运站场安全运营管理实施细则
- 化工装置开车前的安全培训
- 初中英语七年级下册期末复习补全对话练习题(共20篇附参考答案)
- JBT 10381-2013 柔性组合式悬挂起重机
- JJG 703-2003光电测距仪行业标准
- 可穿戴电子设备的柔性传感器
- 苏教版八年级上册数学全册教学课件
- 2024年员工考勤表(通用版)
- 陪玩创业计划书
- 芯片热管理研究
- 仓库物料调拨管理规范
- 【汤臣倍健采购成本问题和对策11000字(案例论文)】
评论
0/150
提交评论