(计算机应用技术专业论文)基于三维渲染引擎编辑系统的研究与实现.pdf_第1页
(计算机应用技术专业论文)基于三维渲染引擎编辑系统的研究与实现.pdf_第2页
(计算机应用技术专业论文)基于三维渲染引擎编辑系统的研究与实现.pdf_第3页
(计算机应用技术专业论文)基于三维渲染引擎编辑系统的研究与实现.pdf_第4页
(计算机应用技术专业论文)基于三维渲染引擎编辑系统的研究与实现.pdf_第5页
已阅读5页,还剩53页未读 继续免费阅读

(计算机应用技术专业论文)基于三维渲染引擎编辑系统的研究与实现.pdf.pdf 免费下载

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

文档简介

基于三维渲染引擎编辑系统的研究与设计 摘要 三维渲染引擎编辑系统是3 d 游戏、虚拟现实、计算机动画、计 算机图形学中的一个重要研究内容,也是该领域内的研究热点和难 点。它在3 d 游戏、电影特效制作和多媒体创作等领域中有着广阔的 应用前景。 三维渲染引擎编辑系统主要包括三维场景的构建和三维场景的 编辑以及场景文件的载入和保存。 本文是在深入研究开源渲染引擎o g r e 及其第三方插件库的基 础上,研究设计并实现了基于o g r e 的渲染引擎编辑系统,能够快 速的构建三维场景供三维应用程序使用,前提是该三维应用程序也是 基于o g r e 引擎开发的。 第一章主要介绍了国内外游戏引擎、渲染引擎以及渲染引擎编辑 系统的发展现状。 第二章介绍游戏引擎、渲染引擎的构成,较详细的介绍了o g r e 引擎的特性、框架结构以及场景管理方式等内容。 第三章介绍了设计和开发本编辑系统时采用的相关技术,包括插 件技术、动态链接库、x m l 、s t l 以及设计模式。 第四章讲述渲染引擎编辑系统的总体设计和设计过程。 第五章详细讲述了渲染引擎编辑系统的实现过程。 最后对编辑系统的设计和实现进行了总结,并提出了对未来工作 的展望。 关键词:o g r e ,渲染引擎,场景管理,场景编辑 a b s t r a c t r e s e a r c ha n di m p l e m e n to fe d i t o rs y s t e mb a s e do n t h r e e d i m e n s i o n a lr e n d e r i n g e n g i n e a b s t r a c t e d i t i n gs y s t e mo ft h r e e d i m e n s i o n a lr e n d e n n ge n g i n ei sa ni m p o r t a n t r e s e a r c hc o n t e n ti n3 dg a m e s ,v i r t u a lr e a l i t y , c o m p u t e ra n i m a t i o n ,a n d c o m p u t e rg r a p h i c s a n di t i sa l s os e e m e da st h er e s e a r c hf o c u sa n d d i f f i c u l t yi nt h i sf i e l d i th a sb r o a da p p l i c a t i o np r o s p e c t si na r e a ss u c ha s 3 dg a m e s ,f i l ms p e c i a le f f e c t sp r o d u c t i o na n dm u l t i m e d i ac r e a t i o n t h e r ea r et h r e em a i np a r t s c o m p r i s e d i nt h i st h r e e d i m e n s i o n a l r e n d e r i n ge n g i n es y s t e m :c o n s t r u c t i o no ft h r e e d i m e n s i o n a ls c e n e ,e d i t o r o ft h r e e d i m e n s i o n a ls c e n ea n d l o a d i n g a n d p r e s e r v a t i o n o fs c e n e d o c u m e n t b a s e do nf u r t h e rs t u d yo nr e n d e r i n ge n g i n eo g r ea n di t st h i r d - p a r t y i n t e r p o l a t i o nl i b r a r y ,t h i st h e s i sc o n s t r u c t sa n di m p l e m e n t st h ee d i t i n g s y s t e m o f r e n d e r i n ge n g i n e b a s e do no g r e i tc a l lc o n s t r u c t t h r e e d i m e n s i o n a ls c e n e sf o rt h r e e - d i m e n s i o n a la p p l i c a t i o n sr a p i d l yo n t h ea s s u m p t i o nt h a tt h et h r e e - d i m e n s i o n a la p p l i c a t i o ni sa l s od e v e l o p e d o nt h eb a s i so fo g r e e n g i n e d e v e l o p m e n t s t a t u so fg a m ee n g i n e ,r e n d e r i n ge n g i n ea n de d i t i n g s y s t e mo fr e n d e r i n ge n g i n ea th o m ea n da b r o a da r em a i n l yi n t r o d u c e di n i i i 北京化t 人学顾l :学位论文 c h a p t e ro n e i nc h a p t e rt w o ,t h ep a p e ri n t r o d u c ec o m p o n e n t so fg a m ee n g i n ea n d r e n d e r i n ge n g i n e a n dt h e n ,t h ec h a r a c t e r i s t i c s ,f r a m e w o r ks t r u c t u r ea n d s c e n em a n a g e m e n to fo g r e e n g i n e a r ed e t a i l e di n t r o d u c e d i nc h a p t e rt h r e e ,r e l a t e dt e c h n o l o g i e s ,p l u g - i nt e c h n o l o g y , d y n a m i c l i n kl i b r a r y , x m l ,s t la n dd e s i g np a t t e r n ,w h i c ha r eu s e di nd e s i g n i n g a n dd e v e l o p i n gt h ee d i t i n gs y s t e ma r ei n t r o d u c e d i nc h a p t e rf o u r , t h eo v e r a l ld e s i g na n dd e s i g np r o c e s so nt h ee d i t i n g s y s t e mo fr e n d e r i n ge n g i n e a r ee l a b o r a t e d t h ei m p l e m e n t a t i o no fe d i t i n g s y s t e mo fr e n d e r i n ge n g i n e i s d e s c r i b e di nd e t a i li nc h a p t e rf i v e f i n a l l y , t h ea r t i c l es u m m a r i z et h ed e s i g na n di m p l e m e n t a t i o no ft h e e d i t i n gs y s t e m ,a n dt h e nr a i s et h ep r o s p e c to f f u t u r ew o r k k e yw o r d s :o g r e ,r e n d e r i n ge n g i n e ,s c e n e m a n a g e m e n t , s c e n e e d i t i n g i v 北京化工大学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下, 独立进行研究工作所取得的成果。除文中已经注明引用的内容外, 本论文不含任何其他个人或集体已经发表或撰写过的作品成果。对 本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标 明。本人完全意识到本声明的法律结果由本人承担。 作者签名:丝星匕 日期: 丝:金;f 关于论文使用授权的说明 学位论文作者完全了解北京化工大学有关保留和使用学位论文 的规定,即:研究生在校攻读学位期间论文工作的知识产权单位属 北京化工大学。学校有权保留并向国家有关部门或机构送交论文的 复印件和磁盘,允许学位论文被查阅和借阅;学校可以公布学位论 文的全部或部分内容,可以允许采用影印、缩印或其它复制手段保 存、汇编学位论文。 保密论文注释:本学位论文属于保密范围,在上年解密后适用 本授权书。非保密论文注释:本学位论文不属于保密范围,适用本 授权书。 作者签名:塑么三:b 导师签名:塾里生 日期:幽:! f 日期:一狴:苎:1 2 第章绪论 1 1 研究背景 第一章绪论 本论文是对三维渲染引擎编辑系统的研究,所谓渲染,就是将计算机中的三 维数据展现在二维的画面上,比如显示器。渲染引擎的作用就是要优化遍历和展 示三维模型,三维渲染引擎编辑系统是渲染引擎的辅助工具,它能够实现对三维 模型、三维场景等三维数据的编辑,并能够将编辑后的数据保存以便供基于该款 渲染引擎的三维应用程序所使用。如果没有渲染引擎编辑系统,那么所有的三维 数据都要通过代码实现,这不仅对开发人员水平有很高的要求,而且效率也很低 下。而有了编辑系统作为辅助开发工具,不仅可以降低开发成本,也可以提高工 作效率,而且由于编辑系统提供的是可视化编辑,制作出来的场景将更漂亮而且 效果更真实。 提到三维应用程序,很容易让人联想到现在如日中天的三维网络游戏。2 0 0 6 年中国网络游戏收入达5 9 6 亿元,比2 0 0 5 年增长了6 1 9 6 。2 0 0 6 年,网络游 戏用户规模达到4 ,3 2 8 万,其中付费用户达到2 ,4 5 8 万,占整体用户数的5 6 8 。 如何开发庞大的用户规模的商业价值,成为游戏运营商的关注焦点。同时中国的 网络游戏玩家结构也发生了明显变化,从单一的1 8 - 2 2 岁年轻玩家向1 8 - 3 0 青少 年和成人玩家逐渐发展。2 0 0 7 年中国网络游戏市场规模达到9 3 6 亿元人民币, 较2 0 0 6 年增长5 7 。2 0 0 7 年中国网络游戏用户达到4 8 0 0 万,环比增长1 7 1 。 值得注意的是近几年来,网络游戏产业不断蓬勃发展,整个中国大陆网络游 戏市场的发展速度极其惊人,传统的二维游戏也开始集体向三维方向转变。但不 难看到国产网络游戏仍然难以摆脱技术落后的现状,不论从数量上还是从质量上 都落后于国外先进产品。核心技术如渲染引擎,特别是渲染引擎还依赖于从国外 引进,本来就很微薄的利润还要支付昂贵的专利费用。因此开发自主知识产权的 渲染引擎已迫在眉睫,刻不容缓n 1 。 1 2 研究意义 3 d 游戏是当前游戏的主流,其核心技术是3 d 图形的渲染。一般说来,从 事3 d 游戏开发不外乎两种方法,一种是利用已有的具有世界项级水平的3 d 引 擎进行开发;另一种是自行开发3 d 引擎。前者因为容易上手,成为大多数游戏 北京化1 1 人学顾 j 学位论文 公司的选择;后者则对图形渲染算法有很高的要求。由于国内研究3 d 图形渲染 起步较晚,以至于到现在还没有一款高质量的渲染引擎供国内的游戏行业使用。 国内的绝大部分有影响力的游戏公司都是购买国外的高价引擎后再进行游戏_ 歼 发,这样有三个弊端:第一:成本昂贵,价格是大多数中小型游戏丌发商无法承 受之重;第二:国外厂商对国内市场重视程度不够,很难保证良好的售后服务; 第三:人员的沟通不便,出现技术问题不能得到及时的解决【2 l 。 o g r e 渲染引擎是国外的开源渲染引擎,它在三维渲染方面表现出了良好 的性能和渲染效果,还有庞大的社团长期支持着渲染引擎的升级更新。由于该渲 染引擎是开源的并且又具备良好的性能,所以越来越多的国人也开始研究这款渲 染引擎。在不久的将来,就会有国内的游戏公司利用o g r e 开发出高质量的游 戏。 本课题是在研究国外开源渲染引擎o g r e 的基础上开发渲染引擎编辑系 统,本编辑系统充分利用了国外开源的o g r e 第三方插件库,目的是最大限度 的增强三维场景编辑效果和渲染效果。 1 3 国内外研究动态和水平 1 3 1 渲染引擎发展现状 渲染引擎分开源和不开源两种,暂时先不介绍开源引擎,开源的渲染引擎代 表作o g r e 下章将讲述。这里将主要讲述两款重量级商业渲染引擎m e n t a l r a y 和r e n d e r m a n 3 1 。 m e n t a l r a y 引擎是早期出现的两个重量级的渲染器之一,是德国 m e n t a l l m a g e s 公司的产品。在刚推出的时候,集成在著名的3 d 动画软件 s o f t i m a g e 3 d 中,作为其内置的渲染引擎。正是凭借着m e n t a l r a y 高效的速度和 质量,s o f t i m a g e 3 d 一直作为好莱钨电影制作中首选的软件。相对于另外一个高 质量的r e n d e r m a n 引擎来说,m e n t a l r a y 的渲染效果没有多大差别,但其操作比 r e n d e r m a n 简单地多。因为r e n d e r m a n 引擎需要使用编程的技术来渲染场景,而 m e n t a l r a y 一般来说只需要在程序中设定好参数,然后“智能”地对需要渲染的场 景自动计算,所以m e n t a l r a y 有了一个别名“智能”渲染器。m e n t a l r a y 不只是能 生成接近真实世界的图片,也能用于抽象艺术和手绘外观的创作。1 9 9 4 年完成 2 第一章绪论 的a s t e r i x i n a m e r i c a 就是一部用m e n t a l r a y 完成的2 d 手绘风格的动画片。某种意 义上说,m e n t a l r a y 所能渲染的风格,更多的取决于用户对图形算法的掌握和不 羁的想象力。到了最新的3 3 版本,m e n t a l r a y 甚至可以用n v i d i a 、a t i 、3 d l a b s 、 m a t r o x 、s g i 、s u n 等品牌的显示卡,使用o p e n g l 或d i r e c t x 加速方式,进行高 速的硬件渲染。( 其中也包括利用n v i d i a 的可编程语言c g 。) r e n d e r m a n 是在电影业渲染市场也有很不错的表现,r e n d e r m a n 主要是控制 台操作,基本不支持图形界面 4 1 。最新的版本里已经有了图形界面,但是好莱坞 的电影制作人员似乎都还是继续使用控制台操作,纯字符操作,这样的控制性更 强。r e n d e r m a n 是美国p i x a r 公司在九十年代推出的产品,在国外经过几年的 应用,已越来越受到他们的青睐,许多大的动画公司都采用它,如迪斯尼动画公 司、华纳影业公司。 1 3 2 三维图形编辑发展现状 在国外,开始研究三维图形渲染的时间比较早,而三维图形编辑的历史也比 较悠久,三维图形编辑软件中最成功的莫过于3 d sm a x 了。 3 d sm a x 是美国a u t o d e s k 公司的电脑三维模型制作和渲染软件,该软 件早期名为3 d s ,因为在d o s 年代,需要记忆大量的命令,由于使用不便, 后改为m a x ,图形化的操作界面,使用更为方便。m a x 历经v 1 0 ,1 2 ,2 5 , 3 0 ,4 0 ,5 0 现在发展到9 0 以上版本,逐步完善了灯光、材质渲染,模型 和动画制作。广泛应用于建筑设计、三维动画、音视制作等各种静态、动 态场景的模拟制作1 5 】。 3 dm a x 是制作建筑效果图和动画制作的专业工具,现在主要的工具有 m a x 5 l r n a x 6 l m a x 7 l r n a x 7 5 m a x 8 l m a x 9 等分中文版与英文版。无论是室内建筑 装饰效果图,还是室外建筑设计效果图,3 d sm a x 强大的功能和灵活性都是 实现创造力的最佳选择。拥有许多理想的命令供制作者使用。 用于室内外效果图制作方面的基本建模、材质赋予、贴图使用和灯光 创建的图形文件。针对3 d sm a x 在室内外效果图中的应用作了系统的章节划 分为指导性、实用性和可操作性,每一个实例都给出了详尽的参数、步骤 和注意的问题。能掌握室内外建筑装饰效果图的制作方法。 3 d sm a x 是当前世界上销售量最大的三维建模,动画及渲染解决方 案,3 d sm a x 9 0 是其具有显著提高的最新版本。将广泛应用于视觉效果,角 3 北京化 r :人学硕l j 学位论文 色动画及下一代的游戏开发领域。至今3 d s m a x 获得过6 5 个以上的业界奖 项,而3 d sm a x 9 将继承以往的成绩并加入新的角色动画i k 体系,为下一代 游戏设计提供交互图形界面【6 】。3 d sm a x 9 0 是业界应用最广的建模平台并集 成了新的子层面细分( s u b d i v i s i o n ) 表面和多边形几何建模,还包括新的集成 动态着色( a c t i v e s h a d e ) 及元素渲染( r e n d e re l e m e n t s ) 功能的渲染工具。同时 3 d sm a x 9 提供了与高级渲染器的连接,比如m e n t a l r a y 和r e n d e r m a n ,来产 生更好渲染效果如全景照亮,聚焦及分布式渲染。 3 d sm a x 特点【7 】: 1 、功能强大,扩展性好。 建模功能强大、在角色动画方面具备很强的优势,另外丰富的插件也 是其一大亮点。 2 、操作简单,容易上手。 与强大的功能相比,3 d sm a x 可以说是最容易上手的3 d 软件。 3 、和其它相关软件配合流畅 应用领域: 1 、电影作品 著名的作品有加菲猫、特洛伊、蜘蛛侠2 、范海辛、后天等等 2 、游戏动画 主要客户有e a 、e p i c 、s e g a 等,大量应用于游戏的场景、角色建模 和游戏动画制作。 3 、建筑动画 4 第一二章游戏,j l 擎和渲染f ;i 擎 第二章游戏引擎和渲染引擎 2 1 游戏引擎简介 在上世纪9 0 年代初,游戏种类还不是很多,游戏玩家对游戏各方面的要求 并不是很高,每一款新出的游戏都会吸引不少的游戏玩家。正因为如此,游戏开 发者最关心的就是在更短的时间内开发出更多的游戏,然而那时游戏的开发周期 依然很长,每款游戏的平均开发时间都在六个月以上。开发周期之长两方面的原 因,一是技术上的原因,那时候的硬件软件条件确实有限。但另一个更重要的原 因是几乎每款游戏都要从头编写代码,造成了大量的重复劳动。 在这种背景下,游戏引擎便开始诞生了。一些有经验的游戏开发者借用上 一款类似题材的游戏中的部分代码作为新游戏的基本框架,以节省开发时 间和开发费用。在常规的游戏开发过程中,针对每一个游戏都要编写许多与该 游戏的细节无关的代码,这些代码是每一个w i n d o w s 应用程序所必需的,相对 于通过剪切和粘贴这些常规代码来适应每一个游戏,倒不如把这些通用代码封装 起来,从而减少在剪切和粘贴过程中由于人为操作所带来的失误,以及修改代码 所带来的麻烦。与此同时,封装还带来很多好处,如提高代码的复用,编写游戏 的效率,提高了代码的可靠性。通过对这些常规的应用程序代码的封装,再加上 对游戏的控制功能,就构成了游戏引擎【8 】。 游戏引擎的主要构成部分有图形引擎,音效引擎,物理引擎,输入模块, 网络模块,引擎脚本这几部分,每一个组件都独立的与其他组件而工作,所有的 独立组件都与同一个核心引擎进行交互从而达到协同工作的效果。 图形引擎生成游戏里的角色以及周边场景的图像,它能够把读取到所有数据 都实时地转化成屏幕上显示出来的图像,也就是可视化。 音效引擎,就是控制游戏中各种音乐效果输出的部分。物理引擎,在游戏中 准确地实现物理模拟,让游戏更加的逼真,物体的碰撞,翻滚,反弹等效果都是 由其负责的。 输入模块,在游戏里与玩家交互的部分就是由其来负责,如果只能看却不能 控制角色去移动攻击那么这跟看电影就没有区别了。让游戏玩家能够控制角色去 做动作执行任务这部分就交给了输入模块去完成,它从鼠标、键盘或游戏手柄等 输入设备读取数据然后把信息传送给其他模块。 网络模块,能够让游戏玩家通过互联网进行对战。 5 北京化t 人学顾f :学位论文 引擎脚本,利用它可以对游戏引擎的代码进行修改和优化。 2 2 渲染引擎简介 一个典型的三维渲染程序包括渲染系统和外部应用模块。其中渲染系统又包 括渲染引擎,设备管理模块和虚拟设备( d i r e c t x 、o p e n g l ) 9 i ,结构如图2 1 所示。 图2 - 1 三维渲染程序结构图 f i g 2 - ls 缸1 l c m r ed i a g r a mo ft h r e e - d i m e n s i o n a lr e n d e r i n gp r o g r a m m e 外部应用模块根据渲染引擎的要求,将三维数据组织成其识别的数据结构, 然后传递给渲染引擎。渲染引擎根据需要调用设备管理模块,最后由对d i r e c t x 、 o p e n g l 等硬件a p i 进行了封装的虚拟设备将三维图形绘制在屏幕上。 其中渲染引擎的作用就是提供高效的显示大型场景的能力,其目的在是最小 化处理过程,让g p u 花费的时间和内存最小,同时还要在有限的时间范围内满足 对图形质量的要求。为了达到这些目的,渲染引擎常常使用如下的一些技术n 们: 曲平截体剪切,将屏幕之外的物体去掉 b 1 遮挡拣切,将被其他物体遮挡的物体去掉 曲l o d 选择,将远处的物体使用较少的三角面片来显示 d )由前至后渲染,这样就可以将需要着色的像素的数目减小到最小 对于某一个渲染引擎来说,这些技术并不一定都需要。渲染引擎的目的是加 速遍历和显示三维物体,但是对于一些包含物体并不多的小场景来说,逐个遍历 和显示所有物体也是可以接受的。比如说,一个地形渲染系统就不同于二维图形 系统,同时它们跟c a d 建模系统也不同。所以,我们需要根据所处理的场景来选 择使用哪些渲染引擎技术。 设备管理模块维护着渲染引擎传过来的三维数据,比如网格、纹理。它是能 够调用虚拟设备的唯一方式。虚拟设备是对d i r e c t x 、o p e n g l 等图形a p i 的封 装,一般都要求短小高效。而设备管理模块对向虚拟设备传递什么样的渲染数据 6 第_ 二章游戏f j l 擎和渲染引擎 是有策略的,比如说,如果两个要渲染的对象有相同的材质,那么设备管理模块 就不会在渲染这两个对象之间重新设置材质数据,因为状态切换是非常消耗g p u 资源的;另外,设备管理模块还能将很多小的对象合并成一个对象,从而提高g p u 的效率。设备管理模块还有管理g p u 资源,释放内存等功能。 2 3o g r e 引擎 2 3 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 ,面向对象的图形渲染引 擎) ,是近几年来发展起来的一个性能卓越的开源图形渲染引擎。o g r e 是以c + + 语言开发的面向场景的、功能灵活的三维图形引擎,让开发者能简单直观地开发 基于三维硬件设备的应用程序或游戏【l l 】。o g r e 中的类库将底层的d i r e c t 3 d 和 o p e n g l 系统库的全部使用细节抽象出来,并提供了基于现实世界对象的接1 3 和 其它类。由于它是一款开源引擎,所以它也像l i n u x 一样,被各种不同的团体和 组织改造和扩充,并使它能够适应不同的应用领域和拥有更强大的功能。 o g r e 图形渲染引擎具备了下列显著特点【1 2 】: ( 1 ) 效率特性 具有简单、易用的面向对象接口设计而能快速地渲染3 d 场景,并使三维系 统独立于渲染a p i ( 如d i r e c t 3 d o p e n g l g l i d e 等等) ;它的可扩展程序框架 ( f r a m e w o r k ) 能快速地编写程序。 会自动处理常见的需求,如渲染状态管理,半透物体排序等。 ( 2 ) 平台和3 da p l 支持 支持d i r e c t 3 d 和o p e n g l 。 支持w i n d o w s 平台,用v i s u a lc 抖6 0 和s t l p o r t 来编译。 支持l i n u x 平台,用g c c3 + ( 或g e e2 9 x ) 和s t l p o r t 来编译。 ( 3 ) 材质s h a d e r 支持 支持从p n g 、j p e g 和t g a 这几种文件中加载纹理,自动生成m i p m a p ,同 时自动调整纹理大小以满足硬件的需求。 o g r e 的材质可拥有足够多的纹理层,每层纹理均支持各种渲染特效。 支持可程序控制的纹理坐标生成( 如环境贴图) 和转换( 平移、扭曲、旋转等) , 可以实现纹理动画。 7 北京化丁人学坝l j 学位论文 支持透明物体和其他场景级别的渲染特效。 ( 4 ) 网格m e s h 对场景中的物体采用了高效的网格数据格式。 提供插件支持从3 d s m a x 导出o g r e 本身的m e s h 和s k e l e t o n 的文件格式。 支持骨骼动画( 可渲染多个动画的组合) 。 支持贝赛尔样条实现的曲面。 ( 5 ) 场景特性 优秀的场景组织体系;场景结点支持物体的附属( a t t a c h ) ,并带动附属物体一 起运动,实现了类似关节的运动继承体系。 通过绑定体( 如绑定盒) 来实现场景体系视锥拣选。 提供了快速的室内渲染器b s p s c e n e m a n a g e r 插件,支持加载q u a k e 3 关卡和 s h a d e r 脚本分析。 ( 6 ) 特效 粒子系统,包括可通过编写插件来扩展的粒子发射器( e m i t t e r ) 和粒子特效影 响器( a f f e c t e r ) ,通过脚本语言可以不用重新编译就可设置和更改粒子属性。 支持天空盒、天空面和天空圆顶。 具有公告板模块以实现透明特效。 自动管理透明物体,可设置渲染顺序和深度缓冲。 其它特性 资源管理和文档加载( z i p ,p k 3 ) 。 支持高效的插件体系结构,不需要重新编译就能扩展引擎的功能。 8 蚺章游戏引萆和渲染,肇 2 3 2o g r e 框架结构 图2 2 0 g r e 框架结壮j f i g 2 2f r a m es t r u c t u r eo f o g r e o g r e 系统主要包括:r e n d e r 系统和r e n d e r 插件、m a t e r i a l 系统和m a t e r i a l 脚本、e n t i t y ( 主要是物件系统) 、g u i 系统和o v e d a y 脚本、t e x t u r e 和图片解码 器、a r c h i v e 系统和文件解码器、s c e n e 插件( 主要是地形系统) 、粒子系统、日志、 d l l 动态导八和插件系统等等。而最后所有的系统全部归o g r e = r o o t 管理。如图 2 2 所示,r 0 0 t 是整个o g r e 的核心部分,它关联着其他所有的组件,并把这些 组件封装其中。r o o t 是整个o g r e 系统的入口点和管理器,必须第一个被创建, 最后一个被销毁。通过r o o t 对象可以配置系统并获得系统内的其它对象。 r e n d e r s y s t e r n 为3 da p i 的抽象层,负责设置所有的渲染属性,并调用3 da p i 执行渲染操作。s c e n e m a n a g e r 为场景管理器,负责组织场景包括场景中m a t e r i a l 、 l i g h t 、m o v a b l eo b j e c t ( e n t i t y ) 和场景本身。m a t e r i a l 用于定义场景中几何体的表 面属性。e n t i t y 代表场景中的可运动物体。s c c n e n o d e 代表位置和方向,a t t a c h 到s c e n e n o d e 上的e n f i t y 可以继承其位置和方向,e n t i t y 不能直接加到场景中, 必须先绑定到一个s c e n e n o d e 上,由s c e n e n o d e 管理位置和方向。场景中的 s c e n e n o d e 以树的形式来组织,一步可分为很多具体方法,如b s p ( b h i a r ys p a c e p a r t i t i o n i n g ) ,d o t s c e n e ,o c t r e o 等。c a m e r a 为场景中的视点,可以为视点设置视 图( v i e w p o r t ) ,即可以将视点所看到的场景渲染到指定视图。 北京化t 人学硕f :学位论文 2 3 3o g r e 的渲染流程 在说明o g r e 的渲染流程之前需要先介绍o g r e 内部重要的几个对象。 r e n d e r s y s t e m - 此抽象类定义出3 d 渲染系统的基本功能,同时实现了一些 通用的方法。各个不同的渲染平台实现此类,o g r e 内部交互由此抽象类负责, 从而实现了渲染平台无关性。应用一般不会与此对象直接进行交互,在o g r e 内部的其他重要对象,s c e n e m a n a g e r 与它进行交互,整个过程是透明的。 s c e n e m a n a g e r :组织场景中的对象并将对象送入渲染系统中渲染。这个类定 义了场景管理器的基本功能,应用客户端根据自己需要重新实现场景的组织功 能。这个对象掌控了所有的可渲染对象。 r e n d e r t a r g e t :接受渲染操作结果的画布。此抽象类定义了基本的渲染目标 属性和操作的功能。渲染目标可以是窗口、屏幕、或者离屏表面,如:渲染到一 张纹理图等等。每个具体的渲染引擎需要实现自己的r e n d e r t a r g e t ,如: d 3 d 9 r e n d e r w i n d o w ,d 3 d 9 r e n d e r t e x t u r e 等。这个抽象类包含了一个到多个的 v i e w p o r t 对象,在渲染时会迭代更新每个v i e w p o r t 。 v i e w p o r t :渲染目标区域。视口是相机和渲染表面的交集,并把这个结果放 在整个渲染表面或者表面的一部分。每个视口都有一个相机作为源,一个目标作 为目标。一个相机只有一个视口,但一个渲染目标可以有多个视口。视口有z 序属性,如果渲染目标有多个视口,要对视口进行z 排序 c a m e r a :摄像机。需要注意的是它与v i e w p o r t 和s c e n e m a n a g e r 之间的关系。 s c e n e n o d e :场景节点。这个类从节点类继承过来,除了自身是一个树形结 构之外,它还可以附加多个可移动对象( m o v e a b l e o b j e c t ) ,这样它可以与世界中 的所有可移动对象( 比如实体对象) 关联起来。 e n t i t y :定义了一个离散的、基于网格的可移动对象的实例。 o g r e 通常将可渲染对象分为两组,一是在世界中移动的离散的极其相关的 小对象。一种是大规模的杂乱的通常组成静态场景的对象。 m e s h 和s u b m e s h 是处理那些在离散的可移动对象中使用的图元的定义【1 4 1 。 实体在世界中是真正的基于这种图元的对象的实例,因此对于一个汽车来说它就 是一个独立的网格集合,但是在世界中可以有多个基于相同网格集合的实体,这 些实体可以改变网格的外在表现,例如通过改变材质属性( 这样就可以在相同的 图元数据上用不同的纹理来拥有不用的小汽车) ,为了这个目标,因为网格被分 成多个子网格,所以实体类是一个分组的类( 与网格类很相似) 并且相关的独立的 l o 第二章游戏引擎和渲染0 f 擎 个体改变的细节信息被保存在子实体类中。这是1 :l 的关系,实体与子实体及 其关联的网格和子网格。实体和子实体都不会被直接的创建出来,用场景的 c r e a t e e m i t y ( 传递一个模型的名字) 方法来创建它们。实体是被关联他们的场景节 点对象包含在场景中的,使用a t t a c h e n t i t y 方法关联。 r e n d e r q u e u e - 渲染队列,此队列中包含了按照材质排序的可渲染对象,这 样会使渲染状态的切换最少,它包含了一组r e n d e r q u e u e g r o u p 对象 r e n d e r q u e u e g r o u p :渲染队列组,按照渲染的优先级别排列的渲染对象列表。 r e n d e r p r i o r i t y g r o u p :渲染优先级分组,包含的所有的渲染对象都具有相同的 优先级。分出透明对象和非透明对象及其它渲染方式对象,使渲染状态切换最小。 o g r e 引擎在启动时会根据配置创建一个合适的场景管理器r ( s c e n e m a n a g e r ) , 场景管理器( s c e n e m a n a g e r ) 会自动创建一个根节点对象( s c e n e n o d e ) ,有了这个根 节点才可以在这个根节点下创建场景节点并将3 d 渲染实体附加到节点上。应用 程序可以在任意节点下创建子节点,创建之后将3 d 渲染实体附加到此节点上。 在场景节点内部,保存着一个可移动对象( m o v e a b l e o b j e c t ) 列表,由于实体类 ( e n t i t y ) 是从可移动对象类继承过来,所以可以把实体附着在场景节点上,同时, 实体内部包含一个子实体对象( s u b e n t i t y ) 的列表,而子实体类是从可渲染对象继 承过来,这样在场景更新时,首先调用场景节点类的a d d t o r e n d e r q u e u e 方法, 这个方法内部遍历可移动对象列表的每一项,调用可移动对象类的 u p d a t e r e n d e r q u e u e 抽象方法,每个从可移动对象类继承而来的类都要实现此方 法,比如在实体类的的u p d a t e r e n d e r q u e u e 方法内部,遍历子实体对象列表的每 一项( 子实体类从可渲染类继承) ,将每个子实体送入渲染队列中去,这样就完成 了渲染队列的更新工作。以上说明只是很粗略的描述,具体还有许多细节没有说 明,比如进行可视判断,是否透明物体,是否为骨骼节点等等,但主要的流程大 致如此。下一部份将会说明加入渲染队列之后的内部流程,再说明渲染队列内部 之前,先看r e n d e r q u e u e 的类和数据类型关系图。 图2 3 渲染队列幸甘关类图 f i g 2 - 3i n t e r r e l a t e dc l a s sd i a g r a mo fr e n d e rq u e u e o g r e 在渲染每一帧图像之前更新渲染队列,首先清除场景管理器中的渲染 队列,然后在具体的场景管理器( b s p o c t r e e ) 中剔除不可见物体,将可见物体 按照最粗粒度的划分加入到渲染队列中,渲染队列将对象传递到渲染队列组中按 照预先指定的优先级加入到渲染优先级组中的s o l i d r e n d e r a b l e p a s s m a p ( t 透明) 或者t r a n s p a r e n t r e n d e r a b l e p a s s l i s t ( 透明) 中,在s o l i d r e n d e r a b l e p a s s m a p 中还要 按照渲染状态排序,也就是通道排序,将相同通道的对象保存在一个列表中 1 5 】。 这样,更新渲染队列的工作就完成了,在渲染时按照已经排好的顺序进行绘制就 可以了。 2 3 4o g r e 的场景管理 在o g r e 中,场景大致由c a m e r a s ( 摄影机) 、l i g h t s ( 灯光) 、m a t e r i a l s ( 材质) , e n t i t y ( 场景元素) 、w o r l dg e o m e t r y ( 静态的场景) 、p a r t i c l es y s t e m ( 粒子系统) 等几部 分组成。为了便于管理提高优化系统,场景需要有序的组织,这是任何一个3 d 引擎都必须解决的问题。 1 2 第一二章游戏引擎和渲染引擎 o g r e 的场景管理器是o g r e :s c e n e m a n a g e r ,负责组织场景中的物体,并负 责把物体发送到渲染系统进行渲染。s c e n e m a n a g e r 的数据成员较多,基本上都 用一个l i s t 来管理。c a m e r a 、l i g h t 、s c e n e n o d e 、e n t i t y 、b i l l b o a r d s e t 、a n i m a t i o n 、 a n i m a t i o n s t a t e 、s t a t i c g e o m e t r y 等创建都是通过场景管理器实现的,并且创建后 直接放入相应的队列。物体创建后,并不意味着就需要渲染在屏幕上。o g r e 把 需要渲染的对象放入一个渲染队列中- - - - o g r e :r e n d e r q u e u e 。渲染队列的目的就是 可渲染对象进行分类,它是按可渲染对象的材质和混合方式来进行分类的。一方 面渲染队列决定了渲染次序,另一方面提高了渲染速度。o g r e 引擎针对不同的 场景采用不同渲染策略,如针对室内场景可采用b s p 场景管理方式,针对室外 场景可采用o c t r e e 场景管理方式等。对于复杂室内和室外场景,o g r e 将场景 分为两大部分,部分是基本上固定不变的“世界”,对于这部分采用b s p 或 o c t r e e 等特殊的技术和算法来提高渲染效率。另一部分是场景中的可移动物体, 这部分物体的创建和控制需要开发人员自己来完成。 o g r e 场景组织的思想是:将现实世界中的场景划分成抽象的不同空间,这 些空间中还可以划分成不同的小空间,每个空间由一个场景节点( s c e n e n o d e ) 对 管理,场景节点将处理移动、旋转和缩放等与空间相关的行为。在每个场景节点 上可以挂接各种场景元素( 如:e n t i t y 、l i g h t ,c a m e r a 等) ,场景元素本身并不负责 与空间位置相关的行为,全部交给场景节点来做( l i g h t 和c a m e r a 类也保存自己 的位置,但很多时候也都挂接到场景节点上来处理) 。o g r e 将大量场景节点按 照空间的划分层次组织成树状结构,从而完成对整个场景的有序组织。根节点的 位置往往在场景的中心。每个节点对象都用数据成员保存相对于父节点的相对位 移和相对旋转量。节点类提供节点的移动和旋转函数。这样当父节 点发生移动和旋转的时候,其全部子节点及它们挂接的场景元素也将被动地移动 和旋转【1 6 】。 第三章编辑系统基奉技术介绍 3 1 插件技术 第三章编辑系统基本技术介绍 将扩展功能以插件的形式通过平台统一地管理起来,在平台内部提供平台和 插件之间以及不同插件之问完备的消息机制( 包括系统消息转发、框架内部自定 义消息) ,对不同扩展功能进行分类并定义标准接口从而把不同的功能插件有机 地集成到一起有效地协同工作。 插件的本质是在不修改程序主体的情况下对软件功能进行加强,当插件的接 口被公开时,任何人都可以自己制作插件来解决一些操作上的不便或增加一些功 能【1 7 1 。 一个插件框架包括2 个部分:主程序和插件。主程序即是包含插件的程序, 插件必须实现若干标准接口由主程序在与插件通信时调用插件与主程序之间调 用关系如图3 1 所示。 图3 - 1 插件与主程序调用关系 f i g 3 - 1t r a n s f e rr e l a t i o no f p l u g - i n sa n dm a i np r o g r a m m e 目前应用比较普遍的插件有以下3 种: ( 1 ) 类似于批命令的简单插件,它一般是文本文件,这种插件的缺点是功能比 较单一、可扩展性极小和自由度很低; ( 2 ) 通过一种特殊的脚本语言来实现的插件,也就是人们常说的脚本插件,它 的缺点是比较难写,需要软件开发者自己制作一个程序解释内核; ( 3 ) 利用已有的程序开发环境来制作

温馨提示

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

评论

0/150

提交评论