已阅读5页,还剩62页未读, 继续免费阅读
(计算机应用技术专业论文)基于ogre的三维演示系统的设计与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 基于o g r e 的三维演示系统的设计与实现 摘要 演示系统是一种演示文稿图形程序,集制作、演示文稿为一体。在会 议、展览和教学以及其它许多涉及演示需求的领域中,三维演示系统具有 比二维演示系统更好的视觉效果,具有广泛的使用前景。本课题设计和实 现了一个基于o g r e 的三维演示系统,可以用于对三维演示文稿的编辑 和播放,从而增加了演示文稿的表现力。 本课题把演示系统和o g r e 相结合,结合o g r e 的良好设计和渲染 性能设计并实现演示系统的主要功能。结合o g r e 的场景管理方法,利 用设计模式的成熟经验,完成动画和转场的设计与实现;结合o g r e 的 可渲染对象,采用把文字作为被渲染的物体的方法,完成文字字体在场景 中的载入;结合o g r e 的整个渲染过程和渲染特点,利用设计模式的成 熟经验,尤其是监听者模式,完成了一个可播放多格式动画的播放器的设 计与实现。 关键词:三维演示系统,o g r e ,动画编辑器,动画播放器 o g r e b a s e dt h r e e d i m e n s i o n a ld i s p l a ys y s t e m d es i g na n di m p l e m e n t a t i o n a b s t r a c t d e m os y s t e mi sap r e s e n t a t i o ng r a p h i c sp r o g r a m , f o c u s e do nt h e p r o d u c t i o na n dp r e s e n t a t i o n t h i s i s s u e d e s i g n s a n di m p l e m e n t sa3 d r e n d e r i n gs y s t e mb a s e d o i lo g r ew h i c hc o u l db eu s e di ne d i t i n ga n dp l a y i n g 3 d p r e s e n t a t i o na n dg r e a t l ye n r i c ht h ee x p r e s s i v e n e s so f t h e p r e s e n t a t i o n t h i si s s u ei n t e g r a t e st h er e n d e r i n gs y s t e ma n do g r e ,d e s i g n sa n d i m p l e m e n t st h em a i nf u n c t i o no ft h e3 dr e n d e r i n gs y s t e mb yo g r e sg o o d d e s i g na n dr e n d e r i n gp e r f o r m a n c e c o m b i n eo g r e s c e n em a n a g e m e n t ,u s eo f e x p e r i e n c e so fd e s i g np a t t e r n s ,a n i m a t i o n sa n dt r a n s i t i o n st oc o m p l e t et h e d e s i g na n di m p l e m e n t a t i o n ;c o m b i n eo g r e sc a nr e n d e ro b j e c t s ,u s i n gt h e t e x tt ob er e n d e r e da so b j e c t s ,t oc o m p l e t et h et e x tf o n ti sc o n t a i n e di nt h e s c e n ei n c o m e ;c o m b i n eo g r er e n d e r i n gt h ee n t i r er e n d e r i n gp r o c e s sa n dt h e c h a r a c t e r i s t i c so ft h em a t u r ee x p e r i e n c eo fu s i n gd e s i g np a t t e r n s ,e s p e c i a l l y t h el i s t e n e rm o d e ,c o m p l e t e dap l a ya n yf o r m a tp l a y e ra n i m a t i o nd e s i g na n d i m p l e m e n t a t i o n k e yw o r d s :3 dd e m os y s t e m , o g r e ,a n i m a t i o ne d i t o r , a n i m a t i o n p l a y e r i i i 北京化工大学学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立 进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不含 任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重 要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声 明的法律结果由本人承担。 作者签名:壅亟日期:塑! ! :! 堑呈兰 关于论文使用授权的说明 学位论文作者完全了解北京化工大学有关保留和使用学位论文的 规定,即:研究生在校攻读学位期间论文工作的知识产权单位属北京 化工大学。学校有权保留并向国家有关部门或机构送交论文的复印件 和磁盘,允许学位论文被查阅和借阅;学校可以公布学位论文的全部 或部分内容,可以允许采用影印、缩印或其它复制手段保存、汇编学 位论文。 保密论文注释:本学位论文属于保密范围,在上年解密后适用本授 权书。非保密论文注释:本学位论文不属于保密范围,适用本授权书。 作者签名:叠堡鱼日期: 导师签名:丝里聋 酗| o o 6 匕 日期:翌! 坠! i 塑名 第一章绪论 1 1 课题的研究背景 第一章绪论 随着计算机技术和信息技术的不断发展,企业现代化水平的不断提高,企业对演 示系统的要求也越来越高。演示系统具有直观,易于表达和易于理解的特点。目前正 在大范围使用的演示系统大多基于2 d 的图像处理技术。相对于3 d 技术来说,2 d 技 术容易实现,成本低,硬件要求低,技术较为成剥。计算机3 d 图形技术是近年来 随着微型计算机性能的不断提高,而逐步发展并获得越来越多的应用的。3 d 技术相 对于2 d 技术来说有很多优势,可以更直观的表达信息,有利于演示系统进一步发展。 本课题即是针对3 d 演示系统的需求而开发的基于o g r e 的3 d 演示系统,系统 实现3 d 图像的演示,动画的编辑,播放和保存。系统具有很好的通用性、可扩展性 和可维护性,能够切实满足需求,有效提高演示系统的表达能力。 1 2 演示系统概述 1 2 1 演示系统 演示系统是一种演示文稿图形程序,集制作,演示文稿为一体。演示系统利用计 算机图形技术以形象的方式向观众形象的展示演示文稿的内容和意图。 信息是演示文稿非常重要的成分。信息是经过加工过的数据,它对接收者的行为 能产生影响。由于现代社会信息量大,繁杂的特点,提倡信息的传递应具有高效,便 捷和易于理解的方式【2 】。由于当代计算机技术的巨大进步,尤其是计算机图形学,计 算机多媒体技术的快速发展,客观上为信息的大量,快捷和以生动形象的方式进行传 递提供了技术基础。 演示系统对于传统的演示方式有着巨大的优势。首先,演示者在事先编辑好演示 文稿,演示时再进行播放。这样可以节约演示者在演示时的时间和精力,将注意力集 中在演示文稿要说明和阐述的问题上 2 1 。其次,在制作演示文稿时,简便省时。演示 文稿在编辑时可以很方便的加以修改,增加,和删除。再者,演示系统可以很方便的 为演示文稿制作副本,无论是电子副本,还是进行打印,较之传统方式都方便许多。 另外,演示系统还可以将演示文稿方便的打印出来,在投影仪或幻灯片机上播放。 北京化工大学硕士学位论文 1 2 2 研究历史和应用现状 在计算机技术,特别是计算机图形技术尚未兴起的时代,演示文稿主要通过黑板 和粉笔的方式传播信息。现场书写往往受到演示者自身书写和绘画能力的限制,而且 耗时,耗力。在投影仪问世以后,制作幻灯片的方式极大的提高了演示者的效率,初 步将演示者从繁重的书写工作中解放出来【3 1 。但是,幻灯片的制作依旧很繁琐,需要 耗费演示者大量的精力和劳动。幻灯片不易于修改,保存和复制。 在计算机技术兴起之后,尤其是计算机操作系统,计算机多媒体技术和计算机图 形学的长足发展,以及计算机性能的不断提高,2 d 演示系统实现了产品化。主要代 表有美国m i c r o s o f t 公司开发的p o w e rp o i n t 。p o w e rp o i n t 提供了对演示文稿强大的编 辑和播放功能。能够非常方便的制作演示文稿,任何针对演示文稿的修改,删除和备 份都非常容易;既可以用复杂的美观的方式表示文字和图片,又可以表现声音和动画 视频。演示文稿的方便,快捷,高效的提供了商业化的2 d 演示系统解决方案逐渐取 代了手工书写和制作幻灯片的传统方式【4 】,极大的提高了演示系统的效率和演示文稿 的说明力。 在我国,演示系统的使用程度不断得到提高。在许多大中院校,已经广泛采用了 演示系统进行教学工作【4 】。在大部分企事业单位,会议,展览乃至于其它许多涉及演 示需求的领域,演示系统都有广泛的使用。 1 2 3 演示系统发展趋势 当代演示系统的技术进步飞快,朝着网络化、3 d 化、多媒体化和可交互的方向 发展。随着计算机网络的快速发展,计算机网络资源的日益丰富,如何在网络环境下 应用演示系统的全部或部分功能,对演示系统的发展和应用来说至关重要。演示系统 的另一个发展方向是3 d 化,当前主流的演示系统主要是2 d 的演示系统。3 d 的演示 系统相对于2 d 的演示系统拥有更好的表现能力,和更直观的效果。伴随着计算机3 d 技术的发展,演示系统的3 d 化趋势将势不可挡【1 1 。 总的说来演示系统正朝着以下趋势发展【5 】: ( 1 ) 网络化 ( 2 ) 3 d 化 ( 3 ) 多媒体化 ( 4 ) 可交互 本课题主要是做3 d 方面的研究。 2 第一章绪论 1 3 本课题的主要研究内容和意义 3 d 演示系统和2 d 的演示系统一样主要包含着编辑和播放两个方面。 在编辑方面,3 d 演示系统对文字处理的需求要远远高于2 d 的演示系统,不仅有 平面字体的渲染,也要有3 d 字体的渲染,尤其是增加中文3 d 字体的渲染效果。不仅 能够提供2 d 贴图,而且也要有3 d 的物体渲染,并处理好灯光,背景和动画等一系列 问题。 在播放方面,由于动画种类灵活多样,应根据不同动画的不同特点有针对性的进 行动画播放,并为将来可能增加的动画类型预留出完整的接口,以方便后期维护和更 新,从而达到方便的支持所有动画类型的目的。 演示文稿的存储格式是沟通动画编辑器和动画播放器的桥梁和纽带。演示文稿由 动画编辑器编辑并保存,并由动画播放器播放,其格式定义与动画播放器和动画编辑 器的功能息息相关,因此,设计一个良好的规范的文件格式对提高演示系统的效率和 质量有一定的关系。 本课题即是为解决以上问题,为满足社会对演示系统实用性与方便性的要求,适 应演示系统3 d 化的趋势,构建一个基于o g r e 的3 d 演示系统,是3 d 技术与演示 系统相结合的有益尝试。 1 4 论文的组织结构 全文共分五章,具体安排如下: 第一章绪论 首先介绍课题的研究背景,接着给出演示系统概述,介绍历史及现状,演示系统 发展趋势和课题主要研究内容和意义。 第二章系统关键技术综述 主要介绍系统设计与开发所用到的关键技术。首先介绍设计模式概述,然后介绍 o g r e 的相关技术。 第三章基于o g r e 的三维演示系统的设计 主要介绍三维演示系统的设计。首先进行需求分析,然后介绍基于o g r e 的三维 演示系统的体系结构。分别介绍了基础库的设计、动画播放器的设计、动画编辑器的 设计和中间文件的设计。 第四章基于o g r e 的三维演示系统的实现 主要介绍三维演示系统的重要实现。主要有基础库中动画和转场的实现、动画编 辑器的渲染框架的实现、字符载入的实现、键盘鼠标帧监听的实现、常用功能接口的 实现和动画编辑器的m f c 用户界面的实现。 3 北京化工大学硕士学位论文 第五章结论与展望 4 第二章系统关键技术综述 第二章系统关键技术综述 2 1 设计模式 近年来,设计模式已经成为一个热点研究领域。设计模式帮助设计者做出有利于 系统复用的选择,避免设计损害系统复用性。设计模式使人们可以非常简单而且方便 地使用已经被实践证明了的成功的设计和体系结构,将已证实的技术表达成设计模式 也会使新系统开发者更加容易的理解其设计思路【6 】。总之,设计模式可以帮助设计者 更快,更好地完成系统的设计。一个解决方案,如果比较严格的遵守了设计模式的基 本原则,参考了其设计经验,是比较容易成功的r 刀。所以本系统的设计与实现是在严 格遵循设计模式的原则基础上,灵活运用了多种设计模式,如抽象工厂模式、监听模 式等,以提高演示系统的可扩展性、可复用性和灵活性。 2 1 1 设计模式定义 设计模式就是人们首先对已经解决的类似问题进行分析和总结,然后对该类问题 给出一个通用的解决方案,这类解决方案是建立在成功和失败的经验基础之上的【7 1 。 该方案可以指导人们在以后的生产实践中更加简单,方便并且高效率的重复使用成功 的设计和体系结构,以最佳方式来解决问题【8 】。 设计模式的概念最早产生于建筑行业。正如建筑大师c h r i s t o p h e ra l e x a n d e r 所说 的那样:“每一个模式都描述了一个在我们周围不断重复发生的事情,以及该问题解 决方案的核心【9 】。应用设计模式,设计者能一次又一次地使用这个成熟的方案而不必 做重复的劳动 。尽管a l e x a n d e r 所说的不是软件技术中的设计模式,但是他的关于设 计模式的基本思想同样适用于面向对象的设计模式【姗。无论是在建筑业,还是在面向 对象的演示系统中,设计模式的核心都在于提供了相关问题一个优雅的,高效率的, 可重复利用的通用解决方案 6 1 。于是在8 0 年代后期,设计模式的思想就被引入了计算 机领域【1 1 1 。从1 9 9 5 年g o f 小组总结出2 3 种设计模式,设计模式作为- i j 新兴学科迅 速地发展起来,已经被确认的设计模式结构也日益丰富【1 2 】。 一般而言,一个模式有四个基本要素呸 ( 1 ) 模式名称:用一两个词来形象的描述模式的问题和解决方案。拥有了一个 模式词汇表,设计者以及开发人员之间就可以方便的讨论这些模式并在编写文档时使 用它们。 ( 2 ) 问题:描述具体的模式针对的问题。它解释了设计模式要解决的问题和这 个问题的前因和后果。 ( 3 ) 解决方案:描述了设计模式的组成成分、与这些组成成分之间的相互关系 5 北京化工大学硕士学位论文 以及它们各自的职责和协作方式。模式就是一个模板,针对同样性质的问题,并应用 于多种不同场合,所以解决方案并不描述任何特定的设计,只是提供针对设计问题的 抽象描述和针对这个描述的解决方案。 ( 4 ) 效果:描述了模式应用的效果及使用时应考虑的问题。复用是面向对象设 计的要素之一,所以设计模式效果的主要方面包括这个设计模式的应用对系统的灵活 性、可扩展性或可移植性的积极影响。 2 1 2 设计模式分类 各种设计模式千差万别,在粒度和抽象层次上有很多不相同的地方。g o f 小组根 据模式为软件结构解耦的解决方式不同,将设计模式分为创建型模式、结构型模式和 行为型模式三种阴。 2 1 3 设计模式的原则 尽管设计模式的数量还在不断增多,各类设计模式的内容虽然千差万别,但是在 设计目标上是一致的,即增加系统的灵活性,可扩展性和可移植性【1 2 】。在此目标下, 无论设计模式在形式上有怎样的变化,其本质是在不同程度上遵循以下原贝, i j t t i ( 1 ) 开闭原则:对扩展开放,而对修改关闭。在软件模块已经实现的情况下, 如果更改需求,或者在软件使用维护中需要变更或强化原有功能时,不应考虑修改原 模块的代码,而是通过既有接口对原有模块进行扩展的方式实现修改的目的【1 3 】。开闭 原则反映了对软件可扩展性的需求。 ( 2 ) 里氏代换原则:调用时使用父类,定义时使用子类【1 4 1 。这样,在更换子类 对象的时候,程序依然可以工作。里氏代换原则体现了对软件灵活性的需求。 ( 3 ) 合成复用原则:在构建新类时,尽可能使用组合而不是继承方式【b 】。继承 方式使子类和父类的耦合度增加,当父类需要改变时,子类的行为也会受到影响,而 有些时候,这些影响是不需要的,或者是错误的。 ( 4 ) 依赖倒转原则:细节应该依赖于抽象的接口,而不是细节依赖于细节【1 6 1 。 细节依赖于抽象的接口,这使得程序的细节之间耦合度减少,增加了灵活性和可复用 性。 ( 5 ) 接口隔离原则:接口的大小应该与它要描述的事物相适应【1 7 1 。接口应该既 不冗余也不残缺。 从本质上来说,无论设计模式的表现形式有多么不同,它们都在一定程度上受到 了以上原则的约束【l 引。 6 第二章系统关键技术综述 2 2o g r e 2 2 1o g r e 概述 o g r e ( o b j e c t - o r i e n t e dg r a p h i c sr e n d e r i n ge n g i n e ) 是一个实时3 d 图形库【1 9 1 。 很多引擎只是针对某一特定类型的游戏或者演示而开发,o g r e 却不是这样。在o g r e 的理念中,设计是先于功能实现的【捌,每一个加入o g r e 的特性,都经过了慎重的考 虑,尽可能的完善设计并伴随完整的文档,而且o g r e 也完美的采用了多种设计模式, 能够较好的实现其设计目榭2 。o g r e 遵循面向对象的设计理念,并借鉴在商业领域 广泛使用的设计模式等技术c 2 2 】。 o g r e 出现之前,引擎的概念已经成熟团l 。其中中国农业大学的m a g e ( m a k ea g a m ee n g i n e ) 小组,在开发自己的引擎出现问题的情况下,引进了开源图形引擎 o g r e 3 d ,并写了一个比较粗略但实用的教程【2 4 】。因为当时的计算机效率并不高,很 多人对大量使用虚函数,面向对象的o g r e 3 d 图形引擎表示怀疑,这时的o g r e 3 d 只适合学习,并不适合使用【2 5 1 。 o g r e 到了1 x x 版本之后,逐步进行了完善【2 6 1 。其优越的设计和结构,带来了 引擎持续的发展【2 7 】。越来越多的商业公司开始考虑使用o g r e 。有一些公司开始采用 o g r e 作为开发手段。 o g r e 不只是一个普通的图形引擎而已。o g r e 有自己的特点,首先是场景图的 管理,一般而言,图形引擎都是固化一个场景图管理器到里面的【绷,比如q 3 的b s p 或者其他图形引擎【2 9 】。而o g r e 把场景管理器抽象成插件,然后就可以动态的选择场 景图组织方法。这样做带来的好处是o g r e 可以支持多个场景管理器,即在同一个场 景中使用多个场景管理器【捌。当一个室内室外交界的画面,你可以从室内场景管理其 自然的过渡到室外中。 可以用组合的时候尽量不要使用继承。这样做带来的好处是:在想要修改场景图 的部分,所有场景内容都不会跟着一起改变接口【3 1 1 。或者当增加新的场景内容的时候, 所有场景管理器都要增加适配代码。o g r e 在这里采用了组合的方式,场景图和场景 内容分离。o g r e 的特点不是技术,而是设计。好的设计可以为实现带来更多的特性, 而相反则不能p z j 。 2 2 2o g r e 的插件体系 o g r e 被设计成可扩展的。与传统的渲染a p i 设计区别的地方,就是o g r e 并没 有强迫用户一定要使用某一个组成部分。使用者可以根据自己需要来组合不同的插件 7 北京化工大学硕士学位论文 来实现不同的效果。o g r e 通过一套固有的“契约模型( c o n t r a c t - b a s e d ) 来支持相应 的功能。换句话说,o g r e 被设计成为类似集合的装置,里面包含着一些支持不同功 能的元素,这些元素通过一套共识的接口( 契约) 来实现之间的通信协作。 2 2 3o g r e 的可渲染对象 利用可渲染对象的接口,可以实现文字的渲染。把和文字渲染相关的信息,用继 承自可渲染对象接口的子类封装起来,就可以无缝的连结到o g r e 的场景之中,挂接 到场景节点上【3 3 】。这样就会使文字的渲染成为o g r e 的一个组成部分一样。如图2 1 所示: 图2 - 1 场景图 f i g 2 - 1s n eg r a p h 可渲染对象( r e n d e r a b l eo b j e c t ) 接1 2 是o g r e 用以渲染实体的唯一接口。如图 2 1 所示,活动对象m o b e a b l e o b j e c t 可以直接操作所有几何体和渲染属性。它并不是 场景节点的子类,而是挂接到场景节点中( 通过组合代替继承) 。程序中的场景节点 可以不用了解与之相关的可渲染对象的任何细节。可以扩展、改变、重写或者其他改 变场景图的实现,而不会影响场景内容接口的设计和实现。可渲染对象彻底独立于场 景图,场景图甚至可以完全修改而不会影响任何内容类。 反过来说也同样适用:场景图同样不需要对所挂接的场景内容节点有任何了解, 只要通过所用的接口来通知就可以完成所需要的功能。o g r e 甚至可以完成对用户自 定义内容节点的挂接。如果构造一个拥有环绕立体声的场景,可以把各种音效实现自 定义节点,然后无缝的挂接到场景中。自定义的场景节点只需要实现一个简单的接口, 就可以把定制数据挂接到场景中的任意节点上。 第二章系统关键技术综述 2 2 4o g r e 灵活的渲染队列 在o g r e 的设计中,采用了特别的方法处理场景中不同部分的渲染排序问题。在 传统的标准排序中采用如下顺序:渲染地形或者世界地图( w o r l dg e o m e t r y ) ,渲染活 动物体,渲染特效,渲染表层,最后渲染背景或者天空盒。但是如果采用这种方法, 就如同在程序中焊接了一块电路板,难于改变其中的运行过程。为了解决这个问题, o g r e 采用了场景队列。o g r e 将需要渲染的内容分别放在多个有序队列之中,并且 队列之间也是有自己的顺序,o g r e 分别渲染每个队列。 世再地田( w o r l d & 哪) 优先囊: 灌动对l i to $ _ r a b b j 由优先曩:5 0 国圆围困 图2 - 2o g r e 中的渲染队列 f i g 2 - 2r e n d e rq u e u ei no g r e 图2 2 描述了o g r e 中渲染队列的直观图。每个队列有自己的一个优先级,队列 中的对象也同样有自己的优先级。o g r e 将按照从底到高的顺序渲染图2 2 中的每个 队列。在每个队列渲染过程中,o g r e 也按照顺序来渲染其中成员。例如,在图中的 表层队列中,o g r e 将按序渲染h u d ( h e a du pd i s p l a y ) 、分割线( r e t i c l e ) 、聊天文 本和图形目录。这个设计的灵活之处就在于组织渲染顺序和调整渲染顺序一样简单。 渲染队列可以自由调整优先级,也可以选择打开或关闭。 2 2 5o g r e 的场景管理 场景管理器的直接用途一般是用来创建场景中所使用的对象,比如:灯光、摄影 机、实体、粒子系统、公告栏、天空盒、静态几何体和世界地图。对于场景中存在的 物体,不论是否能被渲染,都会交给场景管理器进行具体的管理工作。这样做的好处 就是场景管理器可以根据自己的需要对物体进行相应的优化处理。o g r e 并没有使用 一个场景图,通过引擎所使用的插件机制,o g r e 通常会使用一些外部插入的场景图 算法来使用。o g r e 将场景图和场景内容完全分离,把场景图的结构和它所使用的数 据节点作为平等的继承体系来使用。这种设计使得多种场景图可以灵活的互相替换, 而不会影响具体的场景内容的实现。 场景管理器用场景节点来定义场景图的结构。这些场景节点以层次的结构组织在 9 北京化工大学硕士学位论文 场景管理器中:一个场景节点可以有一个父节点和任意数量的子节点。你可以对场景 管理器中的节点进行绑定或者摘除操作;这里提供一个简单的办法来关闭场景中的某 个部分:只要把不希望渲染部分的根节点从场景图中摘除下来,这个部分就不会被渲 染了。场景节点必须通过创建它们的场景管理器来销毁( 如图2 1 所示) 。场景中新建 立的节点必须作为子节点挂接在已经存在的节点上面。图2 3 中展示了经过几次挂接 后场景图的层次结构。 场景管理起另外一个很重要的功用就是用来进行空间场景查询( 从场景中得到查 询的反馈信息) ,其中包括:光线查询( r a yq u e r i e s ) 、球体查询( s p h e r eq u e r i e s ) 、 边界盒查询( b o u n d i n g b o xq u e r i e s ) 、边界平面查询( b o u n d i n g - p l a n eq u e r i e s ) 以及 相交查询( i n t e r s e c t i o nq u e r i e s ) 。其中光线查询返回与给定光线( 空间中两点组成的 虚拟线) 相交的物体信息;球体查询返回给定球体( 通过球中点和半径确定的空间区 域) 中所有包含的物体信息;边界盒查询返回给定轴向包围盒( 通过两个三维向量作 为对角点产生的与空间轴平行的长方体空间) 中所包含的物体信息;边界平面查询返 回与给定的无限延伸的平面相交物体的信息;相交查询返回与指定物体相交的所有物 体信息。 2 2 6o g r e 场景中的空间关系 任何3 d 空间的位置、方向以及缩放都能被表现为一个4 * 4 矩阵的形式,空间的 任何关系都可以被定义为“一组给定的坐标集合 。最常使用的坐标系统空间是物体 空间、本地空间、父节点空间和世界空间。 物体空间是当物体被挂接到场景节点上的时候,这个场景节点上的世界空间转换 矩阵就会应用到这个物体上面的所有顶点上,从而把物体转换到世界空间的绝对位 置,这也是确定物体在3 d 空间位置、缩放以及方向的原理。这些转换并不是直接施 加在物体顶点上面,所以这些操作也不会影响物体上面所顶点到所挂接场景节点位置 的距离。 在编辑场景的原点( 0 ,0 ,o ) 建立一个边长为1 的立方体,这样他的顶点都在 类似( o 5 ,0 5 ,0 5 ) 的范围内( 如图2 3 所示) ,它的物体坐标系原点也在编辑场景 坐标系的原点。在物体坐标系中,坐标原点始终指向物体的中点。 1 0 第二章系统关键技术综述 l v 纠呐锚 傅t o , t 4 u t ) _ _ l _ 。 - t t t ,一一。y 一 :7 1 , | y 1- 一 “ 彳 l 冀 毫 魁臻。 l 。一一4 一一1 :堍啦碰 - t , o , t 4 峨e s l 峨焉冉秘 图2 - 3 单位立方体相对于顶点的位置l f i g 2 - 3r e l a t i v ep o s i t i o no f u n i tc u b el 如图2 3 所示,场景节点( 立方体中心的实心黑圈) 在世界坐标的原点( o , 0 ,0 ) 处。 图2 - 4 单位立方体相对于顶点的位置2 f i g 2 - 4r e l a t i v ep o s i t i o no f u n i tc u b e2 把物体坐标系原点移动到点( 1 0 ,1 0 ,1 0 ) ,同时展示了立方体在世界空间新的 顶点位置。图中向量表示位移的方向。物体坐标系和场景坐标系存在差异,从脚本导 入到o g r e 中时,一般采用场景坐标系。例如,一个在3 d 工具中设置在点( 1 ,1 , 1 ) 的顶点,在导出到o g r e 系统中,这个顶点相对于它挂接的场景节点的位置仍然 是( 1 ,l ,1 ) 。 对于物体的旋转和缩放来说,本地空间就是绕着自己的轴旋转,相对于自己的中 心点进行缩放。 北京化工大学硕士学位论文 v 、 : 1 y 叠 z 图2 - 5 物体的旋转 f i g 2 - 5r o t a t i o n 如图2 5 所示,在本地空间中,一个节点沿着自己的轴旋转。图中的箭头表示旋 转的方向。 l y r = 1 0 一 。 。,y 支 z y t = 0 5 一 一 , x , 图2 - 6 物体的缩放 f i g 2 - 6z o o m 如图2 - 6 所示,本地空间中一个节点在自己的中心位置进行缩放。图( b ) 的实心球 缩小为原来的体积的1 8 ,半径变为0 5 。 虽然在转换的过程中,我们要依赖场景节点进行旋转或者缩放,不过实际上,并 没有对场景节点做任何操作,因为节点既不能被看到也不能被渲染出来,所以真正被 操作的是节点所挂接物体上面的每个顶点( 如图2 6 所示) 。对场景节点的影响只是让 其中的变换矩阵转化成新的状态。偏移、倾斜和滚动的操作都可以改变场景节点自身 的旋转矩阵的状态。 1 2 第二章系统关键技术综述 i 黝 i , x r 1 露璺盈瑚 i 一,一 0 一 | | r x c 1, 图2 7 父节点空间 f j g 2 - 7p a r e n ts p a c e - - i ) m ,- 1 ) 如图2 7 所示,( a ) 为变换前的父节点与子节点,( b ) 为变换后子节点变为父节 点空间的( - 1 1 ,1 ) 。如图2 7 ( a ) 所示,在世界空间内存在父节点( 较大实心球) 在 点( 5 ,5 ,0 ) 位置上,其子节点( 较小实心球) 处在其父节点空间( 2 ,1 ,0 ) 位置 上。在父节点没有旋转的情况下,父空间轴向平行于世界坐标系轴向,这时子节点在 世界坐标系的位置,可以简单通过子空间在父空间的位置和父节点在世界坐标系的位 置累加得到。在图2 7 ( a ) 中为世界坐标系点( 7 ,4 ,0 ) 上。在图2 7 ( b ) 中,我 们把子节移动到父节点空间坐标系( 1 ,1 ,1 ) 位置,相应的它所在世界空间的位 置也改变到点( 6 ,3 ,1 ) 上。 世界空间是最简单的空间系统,但从节点层次中提取具体节点位置的时候,世界 空间仍然起着极其重要的作用。为了防止对节点进行过多的计算,o o r e 在进行每次 变换操作的时候将都会将世晃空间坐标放入关节点的缓存,这极大限度的提高了整个 体系的渲染速度。世界空间永远平行于全局坐标轴,并且总是使用这些轴向来表示世 界空间坐标系。 2 2 7o g r e 场景中的平移、缩放和旋转 平移变换是把对象上的点移到一个新的指定的位置( 如图2 8 所示) ,也要考虑随 着坐标系( 空间) 的移动导致的平移变换( 如图2 - 9 所示) 。 1 3 北京化工大学硕士学位论文 j ,。 4 7 a 矗p 一7 z j ;n 召一 z 璎,o e 嘎 r o x 图2 - 8 点集平移 f 蟾2 - 8p o i n ts e tt r a n s l a t i o n 】,: j y 4 b- 。 d 0 , ; - 图2 - 9 空间平移 f i g 2 - 9s p a c et r a n s l a t i o n 一 x 正如图2 8 和图2 - 9 所展示的那样,如果我们移动点集,在这些点之间的距离不 会改变。任何在2 d 空间中的移动都被分割为两个独立的分量:沿着x 轴的移动和沿 着y 轴的移动。平移变换需要的最重要的一点是在虚拟屏幕坐标系上开始移动的原点 对应于物理屏幕的中心,物理屏幕通常有一个参考系,原点位于屏幕左上角。 缩放被定义为在点的距离之间成比例地扩大和缩小或者空间本身的扩大和缩小, 如图2 1 0 所示: z 7 k 、。 l 0 , l !、 、雪7 j d ! 、 、b - i :r 一,7 , ,l :e 户+9 7 z c ,z 7 7 图2 1 0 缩放变换 f i g 2 - 1 0z o o mt r a n s l a t i o n 1 4 第二章系统关键技术综述 这种变换一个显而易见的用处是把一个a x a 维的对象放到b x b 大小的窗口中。 对象上的每个点为了适应窗口要进行适度的缩放。这种缩放是通过乘上一个常量a b 完成的。缩放变换改变了点之间的距离,因此这不是一种刚体变换。 为每条坐标轴导入单独的缩放因子,执行非一致缩放而不是一致缩放,后者在每 个方向上的因子都是一样的。在这两种情况中,如果因子大于0 或小于l ,对象被缩 小。如果因子大于1 ,对象被放大。 如图2 1 l 所示的情形,以顺时针把坐标系旋转了a 角,必须找出点a 以原有坐 标系x y 中的坐标似纠表示的在变换后的新坐标系r y ,中的坐标仁钞,。 】, j 蒸 p , 入s j , t m z ,未 图2 - 1 1 旋转坐标系 f i g 2 - 1 1c o o r d i n a t er o t a t i o n 使用s i n ( x ) ,c o s ( x ) 公式,找出x 和y 在新坐标轴x 和p 上的投影。把x 和y 在刀轴 上的投影相加,同样把x 和y 在y ,轴上的投影也相加,这两个和就是我们要找的点 a 在新坐标系胛,上的坐标,公式如下: x = y :+ x := y s i n ( a ) + x c o s ( a ) y 。= e 。+ j ,。= y c o s ( a ) + ( - x s i n ( a ) ) 在3 d 空间中,可以把上面的公式看作是3 d 变换的特例,即3 d 空间中的z 坐标 不受影响,保持不变。因此,就可以用同样的方式推出3 d 空间中的旋转变换公式。 如果在对象上固定一个点作为坐标系的原点,则对象任何围绕着这个点的方位变化都 可以被看作是围绕着以该点为原点的坐标系的坐标轴的旋转。围绕这某个点的3 d 旋 转可以通过按一定次序围绕这3 个坐标轴旋转来实现。 三维世界也可以用欧几里得三维空间模拟,在空间一个单独的点被三个坐标指定 ( 础力。习惯上把x y 面绕z 轴的角向) 称之为倾斜,z y 绕x 轴的角p 夕称之为俯仰, z x 绕y 轴的角僮) 称之为偏转,如图2 1 2 所示: 1 5 北京化工大学硕士学位论文 j o y 卢厂 z 门。 髟 。夕乏 “ 图2 - 1 2 旋转角的正方向 f i g 2 - 1 2t h ep o s i t i v ed i r e c t i o no fr o t a t i o n 定义旋转变换应用的次序是非常重要的,因为在空间中的点可能被不一定在同一 个位置上丫p a 角度所改变,点被同样的角度以不同的次序改变,产生的效果可能不 一样,所以旋转的连续应用不能互换。其原因在于上面的假定,每个下一次变换在点 已经被进行了面旋转以后进行。在图2 1 3 中,可以看到a p 旋转与争a 旋转对对象 产生的不同位置效果。 图2 1 3 改变旋转顺序的不同结果 f i g 2 1 3d i f f e r e n tc o n s e q u e n c eo fd i f f e r e n tr o t a t i o nc o l l s e q u e n c e 组合旋转的公式的如图2 1 4 、2 1 5 和2 1 6 所示: z 广y 。 _r x 图2 - 1 4 y 轴的旋转 f i g 2 - 1 4y - a x i sr o t a t i o n 1 6 力 力 m z x + y 一 力i 力(, n 一、洲y 啷 z z - 鲁 ,哺,、f 第二章系统关键技术综述 f b 。 。 图2 - 1 5 x 方向连续的旋转 f i g 2 - 1 5x - a x i sr o t a t i o n - r q 八盘。 _ r 孓。 图2 1 6 z 方向连续的旋转 f i g 2 - 1 6z - a x i sr o t a t i o n 在3 d 旋转中描述了9 个公式。我们可以对坐标( x ,y ,z ) 应用公式最后就得到了 ( ,y ”,z ) 。下面是左边( ,y ”,z ”) 的最终表达式的推导过程。 首先,得到以x ,y ,z 表达的x ,y ,z : ,= z s i n ( y ) + x c o s ( y ) y “= xc o s ( f 1 ) - zc o s ( y ) s i n ( p ) - xs i n ( r ) s i n ( p ) 2 “= ys i n ( p ) + zc o s ( z ) c o s ( p ) - xs i n ( r ) c o s ( p ) 然后,使用上面的表达式,可以直接地使用x ,y ,z 来表达x ,y ,z : = x s i n ( y ) s i n ( b ) s i n ( a ) + c o s ( p ) c o s ( a ) + z s i n ( 7 ) c o s ( a ) - c o s ( r ) s i n ( f 1 ) s i n ( a ) 】 y = x s i n ( r ) s i n ( p ) c o s ( a ) 一c o s ( y ) s i n ( a ) + z - c o s ( y ) s i n ( p ) c o s ( a ) - s i n ( y ) s i n ( a ) 】 z ”= x - s i n ( 7 ) c o s ( p ) + m s 咄) 】+ 4 c o s ( 厂) c o s ( ) 】 2 2 8o g r e 的材质 材质定义了物体对光线反射的处理方法。材质的表现与光源的类型相关:聚光、 点光源以及有向光对材质的表现有着完全不同的影响。它们都是对物理世界真实光源 类型的模拟,所以材质对它们的反射也遵守着其在物理世界中的规则。 1 7 z 一, 乏一蝴婀 石 o m ,嘲蛳 司司 ,r ? :|p 矿 + 一 一妒妒= 眦州 ” y y 鼻 譬 w w y 哺 钞 、 北京化工大学硕士学位论文 o g r e 是一个硬件加速的实时3 d 渲染引擎,它尽可能的使用硬件来处理更多的 渲染过程。不论多么复杂的材质,最终渲染到屏幕的结果只有颜色。而o g r e 作为一 个典型的渲染引擎,把物体上的颜色分解成四种不同的光照作用:环境反射 ( a m b i e n t ) 、漫反射( d i f f u s e ) 、放射( e m i s s i v e ) 以及镜面反射( s p e c u l a r ) 。 环境反射:近似的模拟了场景中的全局辐射,用来近似模拟所有光在场景中不断 散射的结果,材质中有相应的属性来代表这种环境反射颜色。 漫反射:这种颜色是接收到直接从光源发射的光之后产生的,描述光被物体反射 到各个方向的效果。 放射:指的是自发光物体所拥有的颜色。因为在局部辐射光照模型中,放射光只 能照亮自己却不能对周围任何物体产生影响。 镜面反射:描述了物体对被光照后的高光效果。 2 3 本章小结 本章主要介绍了系统设计与开发所用到的关键技术。设计模式和开源引擎o g r e 。 首先介绍了设计模式,然后介绍了o g r e ,并描述了o g r e 的插件体系、o g r e 的可 渲染对象、o g r e 灵活的渲染队列、o g r e 的场景管理、o g r e 场景中的空间关系、 o g r e 场景中的空间关系、o g r e 场景中的平移、缩放和旋转以及o g r e 的材质。 第三章基于o g l 逻的三维演示系统的设计 第三章基于o g r e 的三维演示系统的设计 在前一章介绍的三维演示系统关键技术的基础上,本章从系统的角度出发,进行 系统需求分析后,给出系统的概要设计和详细设计,包括系统基础库的设计、动画编 辑器的设计和动画播放器的设计。 3 1 三维演示系统需求分析 需求分析可以从多个不同的层次出发,通常包括业务需求、用户需求和功能需求 等。对于本系统而言,业务需求是实现一个包含可播放动画等功能的基于o g r e 的三 维演示系统。 用户需求包括友好的操作界面、丰富的系统功能等。友好的操作界面主要实现用 户方便的操作,包括方便的系统参数调整和灵活多样的操作等。三维演示系统之所以 优于二维的演示系统,正是由于其良好的视觉效果能够给观众带来更好的感官享受, 这也是本课题的意义所在,因此,一个美观的外在效果是十分必要的。 功能需求是从业务需求出发,定义系统必须完成的基本功能。对本系统而言,主 要的功能需求包括基础库、动画播放器、中间文件以及它们之间良好的接口。 综合以上三个层次的需求分析,该系统需求分析可以表示成如图3 1 所示: ll 些塞蔓重整h 塞堡三丝遣丞垂鬓l lli 强大的表现能力l 圈弋圆 匪墨 l= 二二二二二二= l 圆 邕舞 图3 - l 系统需求分析 f i g 3 - 1r e q u i r e m e n t sa n a l y s i so ft h es y s t e m 3 2 三维演示系统的体系结构 根据具体的应用需求,演示文稿的编辑和播放可以分别处理,虽然动画
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年建筑行业数字化转型组织文化建设
- 2026届达州市高三第二次调研历史试卷含解析
- 2025-2026学年驻马店市高考历史二模试卷含解析
- 基于认知冲突的初中数学课堂问题解决能力培养策略教学研究课题报告
- 循证康复实践中的康复-应用创新
- 2026年智能纤维创新应用报告
- 影像组学特征与肿瘤血管生成的相关性及疗效预测
- 生成式AI在教育内容创作中的知识产权保护与利益平衡教学研究课题报告
- 2026年自动驾驶交通管理创新报告及未来五至十年基础设施报告
- 2026低代码应用搭建平台排名综合测评
- 2026年电焊工初级工(五级)职业技能鉴定考试大纲配套题库
- 贵州红星山海生物科技有限责任公司招聘笔试题库2026
- 高考听力播放应急预案(3篇)
- 区域经济研究报告:西安经济产业现状及发展建议
- 展览设计专业考试试题及答案
- 2026年政务服务知识培训课件
- 六年同窗 不负韶华-小学毕业成长纪念册
- 病理学 课件 第十四章 消化系统疾病
- 2025年管道系统安装及试验测试卷附答案
- 2026年4月自考02324离散数学试题及答案含评分参考
- 2026中考语文文言文九大主题对比整合梳理(附真题)
评论
0/150
提交评论