已阅读5页,还剩81页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 数字游戏是计算机行业中最有价值和发展潜力的领域之一,它同时有着非常 高的技术要求。它集中体现了计算机科学在图形处理、网络通信、实时运算和人 工智能等方面的最新成就,它的需求反过来又推动了这几个领域的发展。由于数 字游戏的广泛普及和巨大利润,从它诞生以来,资金和技术在这里就一直呈现出 高速增长的趋势,这一趋势还在继续。3 d 游戏是数字游戏发展的趋势,它已渐渐 开始成为主流。它在体现逼真现实世界的同时对技术提出了巨大的挑战。3 d 游戏 实现的关键在于游戏引擎技术,而图形引擎是其中最重要的部分之一。 本文在分析3 d 游戏引擎的结构及工作流程的基础上,构建了一个完整的3 d 游戏图形引擎t r i a l 3 d ,它以三角形为建模和处理的基本几何图元,可以接受应用 广泛的q u a k e l i 模型及w o d d c r a f l 关卡编辑器生成的关卡,渲染和管理室内和室外 的动态、静态场景,支持多种类型的光源,支持g o u m u d 着色方式,支持透视修 正纹理映射,支持碰撞检测。t r i a l 3 d 主要采用了以下技术实现较高的渲染速度和 帧频:对室内场景,用b s p 树实现在世界坐标空间中的多边形级剔除和碰撞检测, 并将其与扫描线技术结合实现无重绘;对室外场景采用分区算法,同时用o s p 技 术实现世界坐标空间中的物体剔除和碰撞检测;在世界空间内实现了物体及多边 形的剔除、背面消除;实现了空间裁剪和像素裁剪。此外,t r i a l 3 d 以1 z 缓冲代 替z 缓冲实现正确的深度缓冲和透视纹理映射,并将该技术用到动态场景管理中, 弥补了b s p 树和o s p 树只能针对静态场景管理的缺陷。它还将仿射纹理映射和完 美透视修正纹理映射分段混合使用,实现了表面纹理真实性和效率的兼顾。 t r i a l 3 d 是一个采用软件渲染方式的引擎,所有的空间变换、光照、纹理映射 以及光栅化都用程序代码实现。它使用了d i r e c t x 的2 d 图形a p i 和输入a p i 。 t r i a l 3 d 可以用于w i n d o w s 平台的3 d 游戏。 本文对引擎各部分的多种实现方式进行了比较和讨论,并对实际运行的效果 作出了评测。在文章最后,作者对后续工作的内容,包括m i p m a p p i n g 、阴影、广 告牌技术、粒子系统、多重纹理和凹凸映射分别作出了探讨。 关键词:3 d 引擎,渲染,场景管理,帧频,光栅化 a b s t r a c t a b s t r a c t d i g i t a lg a m ei so n eo f t h ef i e l d sw h i c h i sm o s tv a l u a b l ea n dh a sp o t e n t i a l st o d e v e l o pi nc o m p u t e ri n d u s t r y , i th a sh i g hr e q u i r e m e n ti nt e c h n o l o g yt o o i tr e p r e s e n t s t h en e w e s ta c h i e v e m e n t so fc o m p u t e rs c i e n c ei ng r a p hp r o c e s s i n g 、n e t w o r k c o m m u n i c a t i o n 、r e a l t i m ec o m p u t i n ga n da r t i f i c i a li n t e l l i g e n c e b e c a u s eo f t h e p o p u l a r i t yo fd i g i t a lg a m ea n dt h eg r e a tp r o f i t ,c a p i t a la n dt e c h n i q u eh a v ei n c r e a s e d r a p i d l yi nt h i sf i e l df r o mi t sb i r t h ,a n dt h i st r e n di ss t i l lc o n t i n u i n g 3 dg a m e sa r ec u r r e n t o f d i g i t a lg a m e ,t h e yc h a l l e n g em u c h w h e nt h e yp r e s e n tt h er e a lw o r l d t h ek e yp o i n tt o i m p l e m e n t3 dg a m ei sg a m ee n g i n e ,a n dg r a p h i ce n g i n ei so n eo f t h em o s ti m p o r t a n t m o d u l e s t h i sp a p e re s t a b l i s h e sa ne n t i r e3 dg a m eg r a p h i ce n g i n et r i a l 3 db a s e do n a n a l y z i n g3 dg a m ee n g i n e sa r c h i t e c t u r ea n dp r o c e s s t r i a l 3 dm a k e st r i a n g l e sa st h e b a s i cu n i t st op r o c e s s ,i tc a l lr e c e i v ea n dp r o c e s sp o p u l a rq u a k e l im o d e la n dw o r l d c r a f t l e v e l ,r e n d e ra n dp r o c e s ss t m i c 、m o b i l es c e n e si n s i d ea n do u t s i d e ,s u p p o r tm u l t i t y p e s l i g h t ,g o u r a u ds h a d i n g ,m o d i f i e dp e r s p e c t i v et e x t u r em a p p i n ga n dc o l l i s i o nd e t e c f i o n t r i a l 3 dt a k e st h ef o l l o w i n gt e c h n i q u e st oa c h i e v eh i g h e rr e n d e rv e l o c i t ya n df r d l n e f r e q u e n c y :t oi n s i d es c e n e s ,b s pt r e ei su s e dw i t hs c a nl i n et e c h n i q u et om a k e n o r e p a i n tc o m et r u e ,a n dt h ef o r m e ri sa l s ob e e nu s e dt oc u l lp o l y g o n sa n dd e t e c t c o l l i s i o ni nw o r l ds p a c e ;t oo u t s i d es c e n e ,p a r t i t i o na r i t h m e t i ca n do s pt r e ea r eu s e dt o c u l lo b j e c ti nw o r l ds p a c ea n dd e t e c tc o l l i s i o n ;c u l l i n ga n d h i d i n g s i d ee l i m i n a t i n gi s r e a l i z e di nw o r l ds p a c e ;s p a c ea n dp i x e lc u t t i n ga r eb o t hr e a l i z e d b e s i d e s ,1 zb u f f e ri s u s e dt os u b s t i t u t e dzb u f f e rt or e a l i z ec o r r e c td e p t hb u f f e ra n dp e r s p e c t i v et e x t u r e m a p p i n g ,t h i st e c h n i q u ei sa l s ou s e dt om a n a g em o b i l es c e n e st om a k eu pt h e d i s a d v a n t a g ec o u r s e db yb s p t r e ea n do s pt r e et h a to n l ys t a t i cs c e n ec a nb em a n a g e d a l f m et e x t u r em a p p i n gi su s e dc o m b i n e dw i t hp e r f e c tp e rm o d i f i e dp e r s p e c t i v et e x t u r e m a p p i n g ,t h i sm a k et h et e x t u r er e a la n dg e th i g he f f i c i e n c y t r i a l 3 di sar e n d e r i n ge n g i n et o t a l l yr e a l i z e db ys o f t w a r e ,i nw h i c ha l lt h es p a c e t r a n s l a t i o n 、l i g h t i n g 、t e x t u r em a p p i n ga n dr a s t e r l i z a t i o na r er e a l i z e dt h r o u g hp r o g r a m d i r e c t x s2 dg r a p h i ca p ia n di n p u ta p ia r eu s e di ni t i tc a nb eu s e di n3 dg a m e s r u u n i n go nw i n d o w s a b s t r a c t t h i sp a p e rd i s c u s s e sa tl e a s to n ew a yt or e a l i z ee v e r ym o d u l eo f t h ee n g i n e ,a n d e v a l u a t e sa l lt h e s ew a y s a tl a s t , a u t h o rd i s c u s s e dm i p m a p p i n g 、s h a d o w 、b i l l b o a r d 、 p a r t i c l es y s t e ma n dm u l t i t e x t u r e k e yw o r d s :3 de n g i n e ,r e n d e r , s c e n em a n a g e m e n t ,f r a m ef r e q u e n c y , r a s t e r i z a f i o n i i i 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 签名:型囊耸一 日期:乩“年月日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 豁缸摊名:盟乒 日期:,年,月易日 第一章引言 1 1 研究背景和煮义 第一章引言 数字游戏是计算机产业最有价值和发展潜力的领域之一。在美国、韩国和一 些欧洲国家,游戏业的收入已经超过传统娱乐行业。在美国,平均每个电脑使用 者有7 0 的时间在玩游戏。在我国,2 0 0 4 年游戏行业的总产值达到了2 4 7 亿,而 仅在4 年以前,这个行业的市场规模还只有o 3 8 亿元。事实上,游戏本身伴随了 人类的整个生存和发展史,而随着计算机这一交互式计算工具的出现和多媒体技 术的日益强大,以及互联网的日益普及和性能的大幅度提高,加之体验经济已渐 成气候并开始被普遍接受,数字游戏行业的崛起已成为不可阻挡的历史趋势。 3 d 图形程序相对平面图形程序而言,是在x o y 平面上增加了一根表现纵深 的z 轴,由此而带来的真实感体验与平面环境不可同日而语。但它同时也带来了 技术上的巨大挑战。坐标、光照、纹理的数据处理量大大增加,相比二维图形程 序,更增加了空间坐标到空间坐标、空间坐标到平面坐标、平面坐标到屏幕坐标 的变换过程。3 d 游戏与其它3 d 图形程序相比,还多了对实时交互能力的要求。 在标准的3 0 帧秒的帧速下,每3 3 3 毫秒内除了要完成整个场景动辄数十万计的 表面的坐标、光照、纹理的计算和光栅化,还要完成所有的输入检测、物理运算、 逻辑判断、a i 运算。事实上,极少有3 d 游戏( 尤其是3 d 网络游戏) 在尽可能考 虑画面真实性、丰富性的前提下还能保持足够的渲染速度和帧频。因此,如何既 保证画面的真实度,又保持流畅的显示和即时反应,是3 d 游戏图形引擎要解决的 关键课题之一。解决这个问题不仅可以大大提高3 d 游戏的质量,对于整个图形学 和实时处理领域也有重要的意义,事实上,3 d 游戏引擎不仅可以用在3 d 游戏上, 还可用在建筑设计、军事模拟、医疗、实时仿真、电影特效、教育等若干方面。 本课题研究的主要难度之一在于相关资料的极其匮乏。目前在国内,关于3 d 游戏引擎的研究资料还非常少,几乎是一片空白。仅有的几本书籍也是从国外翻 译而来,至少是两年以前的作品了。而由于这类技术属于应用领域,一直由企业 直接开发和应用,在i n s p e c 、s c i 、e 1 上也很难找到相关的研究资料:由于国外 的知识产权保护措施,即使在互联网上,深入探讨的相关资料也不是很多,因此, 研究3 d 游戏引擎这一崭新的领域,为国内相关行业积累宝贵的初期资料,具有重 要的现实意义。 电子科技大学硕士学位论文 本文构建了一个3 d 游戏图形引擎t f i f l 3 d 的主要模块,不仅对整个引擎的架 构和实现流程作出了比较仔细的描述,而且试图从多方面提高画面的真实度以及 渲染的速度和帧频。 1 - 2 研究方向和现状 3 d 游戏引擎是3 d 游戏的核心,而图形引擎部分又是3 d 游戏引擎最关键和最 重要的部分。游戏引擎实际上可以简单地看成标准图形a p i 上的另一层a p i ,由 若干可重用代码库组成,为应用程序留出接口,目的是将游戏中一些通用的功能 集中在几个模块内,可供不同游戏程序重复使用,从而大大节省了编码的时间和 人力成本。 真正意义上的3 d 游戏引擎起源于f p s ( 第一人称射击类) 游戏。从 w o l f e n s t e i n 3 d 到d o o m ,到现在广泛流行的q u a k e l l l 、q u a k e l l ia r e n a ,无不属于 这一类型。这类引擎一般采用b s p 树和p o r t a l 组织室内场景,直接用z 缓冲比较 深度并渲染。这类游戏引擎最初只支持连线对战,采用对等网模式,最多同时支 持3 2 人对战。后来随着游戏场景发展到室外,参与游戏的人数扩展到每台服务器 上千人,3 d 引擎又发展出o s p 场景管理模式和网络部分。 i ds o f t w a r e 是世界公认3 d 游戏引擎技术最先进的公司。q u a k e 系列引擎就是 他们的作品。由于当时硬件技术的限制,他们在引擎中不得不对游戏规则和环境 作了一些限制,如视角只能作有限变换,限制像素面积等等。随着硬件技术的发 展和游戏要求的提高,这些引擎也在不断的修改与更新之中。 e r ,i c 公司的u n r e a l 系列引擎是另一类非常成功的3 d 引擎。它采用了光线跟 踪技术,渲染速度比q u a k e 更快,而且没有太多的限制,场景也显得非常真实, 不过这是一种以空间换时间的作法,它所需要的建模工作量及存储量是十分惊人 的。 不管是哪一类引擎,都随着软、硬件平台和游戏规则的变化在不断地修改和 进化。最早的3 d 游戏引擎全部采用软件渲染,没有图形加速卡,更没有与图形硬 件接口的专用a p i ,所有的引擎代码都由程序员手工编制,所有代码都由c p u 运 算执行,速度和质量可想而知。随着图形加速卡和g p u 的出现,对多边形坐标变 换流程、光照、纹理的处理和渲染过程完全由图形芯片和相关线路实现,极大地 提高了3 d 游戏运行的速度。加上d i r e c t x 、o p e n g l 、s d l 等图形a p i 的出现, 第一章引言 避免了程序员直接和下层硬件打交道,不但大大简化了编码过程,而且避免了程 序员对每一种不同的硬件需要编写不同驱动程序的繁琐过程。目前,3 d 图形硬件 不但可以直接完成多边形流程和渲染,还可阻通过a p i 接口让程序员对以上过程 进行控制。 目前3 d 游戏引擎发展主要有几个方向:1 、网络化。其主要技术难点在于服 务器的负载均衡、网络同步及分布式计算。2 、高真实感实时建模。微软亚洲研究 院已经在这一领域展开研究并达到了国际一流水平,于2 0 0 3 年在s i g g r a p h 会议上 发表了四篇论文:任意曲面上的双向论理函数映射,运动论理,光场变形 和羽毛的绘制。3 、n p c ( n o np l i e rc o n t r o l 非玩家控制人物) 的智能化。 这方面近年也有很大发展,现在引擎中的n p c 已经可以根据声音的远近、类型来 决定下一步的行动了。 就3 d 图形引擎而言,目前的主要难点仍集中在如何在保持较高帧速的前提下 提供丰富真实的3 d 画面上。总的来说,耳前3 d 游戏对计算机配置的要求还是比 较高的,提高渲染速度主要是通过有效地组织场景、剔除对象、背面消除、裁剪、 减少重绘和提高光栅化算法效率来实现,但算法本身的效率和不同算法之间结合 的方式都还有改进的余地。另外,所有的剔除、裁剪算法都是进行得越早越能节 约运行时间,但算法本身也就越复杂。商用3 d 引擎的核心代码往往会用汇编语言 编制,以提高程序运行效率。 随着游戏市场的日渐扩大,游戏引擎的种类也日益增多,开发一个通用的游 戏引擎平台成为一个较为经济的选择。韩国在政府的支持下已经傲到了这一点, 目前他们的通用3 d 网络游戏引擎为游戏企业免费开放,使韩国开发一款网游的时 间周期缩短到了3 、4 个月。我国也已开始了这方面的工作,2 0 0 3 年七月,国家科 技部将3 d 网络游戏通用引擎的开发纳入国家高科技计划,目前正处于紧张的研究 阶段。 目前国内对3 d 引擎的研究还处于探索阶段,很多游戏公司还在购买国外的游 戏引擎使用。虽然有一些公司和团体声称己开发出3 d 网络游戏引擎,但质量和水 平与世界先进水准都还有一定差距。 t f i a l 3 d 引擎实现了3 d 游戏图形引擎的以下基本功能:读入网格和动画模型; 场景的组织和管理;多边形坐标转换流程;着色与光照;纹理:剔除;背面消除: 裁剪;遮挡排序;透视修正;光栅化;碰撞检测。另外,为了便于制作d e m o 和 测试,还需要设计一个输入接口。在构建的过程中,作者将b s p 技术结合扫描线 算法和改进后的z 缓冲实现了零重绘和室内静态、动态场景的管理;将o s p 树和 电子科技大学硕上学位论文 场景分区算法结合起来,并用1 ,z 缓冲代替z 缓冲,实现了室外静态、动态场景的 有效管理。所有改进后的系统策略和算法提高了帧速和渲染的速度,经过测试后 得到了较好的结果。 1 3 作者的主要工作 作为课题组的l e a d e r 和主要开发人员,作者完成了如下工作: 1 、3 d 引擎组织结构的分析和研究; 2 、t r i a l 3 d 的架构设计; 3 、数据结构和控制流程的设计; 4 、以下算法的设计:多边形剔除、图像裁剪、背面消除、g o u r a u d 着色和光 照、纹理、b s p 树的生成和零重绘、1 ,z 缓冲、多边形光栅化、o s p 树的生成和分 区算法。 5 、以下模块的实现:多边形坐标转换流程;b s p 树的生成和多边形在世界坐 标内的剔除;像素裁剪:g o u r a u d 着色:混合修正纹理映射;采用1 z 缓冲的实心 三角形光栅化。 1 4 论文的章节安排 本文简单叙述了3 d 游戏引擎的架构;详细阐述了3 d 游戏图形引擎伍a 1 3 d 的体系结构、数据组织及处理流程、渲染器和场景管理的设计和实现,提出了未 来的工作方向并作出了初步的探讨。 第二章:主要讲述了游戏引擎的基本概念;3 d 游戏引擎的总体架构、各模块 的功能以及相互之间的联系。 第三章:主要讲述了t r i a l 3 d 的体系结构;主要数据结构;数学支持及数学引 擎;3 d 数据控制流程的设计;数据读取工具的设计,是本文的重点。 第四章:讲述了t r i a l 3 d 中渲染器的设计与实现,主要包括:对象剔除和多边 形剔除;背面消除:空间裁剪:像素裁剪:深度排序和深度缓冲:光照和着色; 纹理映射;光栅化。是本文的重点。 第五章:讲述了t r i a l 3 d 中的场景管理。主要包括:b s p 树和o s p 树的生成; b s p 树结合扫描线算法实现零重绘;世界坐标内的多边形剔除:碰撞检测:结合 4 电子科技大学硕士学位论文 场景分区算法结合起来,并用l z 缓冲代替z 缓冲,实现了室外静态、动态场景的 有效管理。所有改进后的系统策略和算法提高了帧速和渲染的速度,经过测试后 得到了较好的结果。 1 。3 作者的主要工作 作为课题组的l e a d e r 和主要开发人员,作者完成r 如下工作: l 、3 d 引擎组织结构的分析和研究; 2 、t r i a l 3 d 的架构设计: 3 、数据结构和控制流程的设计; 4 、咀下算法的设计:多边形剔除、图像裁剪、背面消除、g o u r a u d 着色和光 照、纹理、b s p 树的生成和零重绘、1 z 缓冲、多边形光栅化、o s p 树的生成和分 区算法。 5 、以下模块的实现:多边形坐标转换流程;b s p 树的生成和多边形在世界坐 标内的剔除:像素裁剪:g o u r a u d 着色;混合修正纹理映射;采用1 z 缓冲的实心 三角形光栅化。 1 4 论文的章节安排 本文简单叙述了3 d 游戏引擎的架构:详细阐述了3 d 游戏图形引擎碰a 1 3 d 的体系结构、数据组织及处理流程、渲染器和场景管理的设计和实现,提出了未 来的工作方向并作出了初步的探讨。 第二章:主要讲述了游戏引擎的基本概念;3 d 游戏引擎的总体架构、各模块 的功能以及相互之间的联系。 第三章;主要讲述了t r i a l 3 d 的体系结构;主要数据结构;数学支持及数学引 擎;3 d 数据控制流程的设计;数据读取工具的设计。是本文的重点。 第四章:讲述了t r i a l 3 d 中渲染器的设计与实现,主要包括:对象剔除和多边 形剔除;背面消除:空问裁剪:像素裁剪;深度排序和深度缓冲:光照和着色; 纹理映射:光栅化。是本文的重点。 第五章:讲述了t r i a l 3 d 中的场景管理。主要包括:b s p 树和o s p 树的生成; b s p 树结合扫描线算法实现零重绘;世界坐标内的多边形剔除;碰撞检测;结合 b s p 树结合扫描线算法实现零重绘;世界坐标内的多边形剔除;碰撞检测;结合 第一章引言 1 z 缓冲实现静态、动态对象的管理。是本文的重点。 第六章:对本文内容作出总结,并讨论引擎未完成的部分,提出了未来的工 作方向。主要包括:m i p m a p i n g 和三线性滤波;阴影;多重纹理和凹凸映射;粒 子系统:广告牌技术。 电子科技大学硕士学位论文 第二章3 d 游戏引擎的体系结构 2 1 游戏引擎概述 随着游戏的画面复杂度和实时响应要求的日益提高,游戏代码的编写周期也 越来越长。编写一款f p s 游戏的时间一般在一年以上。为了缩短项目周期,减少 开发成本,人们将游戏代码中一些通用的部分抽出来做成模块,并设计好与应用 程序的接口,这就是所谓游戏引擎。专业的游戏开发公司都会有自己的游戏引擎, 它大大提高了代码复用率,缩短了开发周期。 一般来说,游戏引擎包括一个或多个可重用代码库,用于处理游戏中具有共 性的一些功能。每个库中可能包括若于功能模块,各模块为应用程序留出接口, 接受模型、关卡、动画、光照、材质、纹理、地形、图像、声音等数据,并和特 定游戏控制游戏逻辑的其它代码一起构成可执行的游戏程序。从本质上说,一个 游戏引擎实际上就是一个高层的a p i 。 一个游戏引擎适用于某一类游戏,引擎的架构和通用性越好,适用的操作平 台和游戏类型就越多。根据授权等级的不同,可以对引擎作出适当的修改以适应 不同的游戏。 引擎可以大致分为两类。一类是所有的代码都在引擎中编写,包括和硬件打 交道的部分。这种引擎编写过程十分复杂,代码的优化要求很高,尤其是需要为 不同的硬件编写不同的驱动代码。这类引擎基本出现在通用图形a p i 出现以前。 随着d i r e c t x 、o p e n g l 和s d l 等通用图形a p i 的出现,大多数引擎利用了这些代 码库,从而减少了许多编码的工作量。 2 23 d 游戏引擎的体系结构及相关流程 一个完整的3 d 引擎应该包括以下几个模块: 系统( 包括图形、输入、声音、定时器和配置等几个子系统) 、渲染器、控制 台主程序、接口、工具、支持。引擎加上游戏逻辑代码和游戏数据就构成了整个 游戏程序,在接受用户的输入后经过运算得到最后的声音和图形输出。引擎的架 构和工作流程如图2 1 所示: 第二章3 d 游戏引擎的体系结构 出 图2 13 d 游戏引擎架构及数据、控制流程 系统是负责在用户和硬件之间架起桥梁的模块。这个用户可以是游戏操作者 7 电子科技大学硕士学位论文 也可以是游戏的逻辑代码或引擎的其他模块。它和渲染器是整个游戏引擎的核心 部分。系统又分为几个子系统: 图形。图形子系统和渲染器、数学支持、图形工具一起组成了游戏引擎的图 形部分。它是渲染器的上层,接受工具模块处理后得到的各种图形数据,并负责 场景管理和碰撞检测。 输入。它负责将所有输入设备( 键盘、鼠标、游戏杆等) 封装起来,在每一 帧开始检测所有输入,并将输入的结果交给游戏代码的逻辑判断部分处理。 声音。接受音频数据和m i d i 代码,并将它们还原成声音信号输出。 定时器。如果3 d 游戏的帧频设计为3 0 ( 即每秒3 0 帧) ,则定时器负责将每一 帧的时间固定在3 3 毫秒。定时器需要控制输入子系统、声音子系统、图形子系统 和逻辑代码部分,它们都是每帧都需要执行的模块。对于图形处理量较大的系统, 一般不限制图形处理的时间,但对逻辑代码的执行都需要进行同步。 配置。它负责为煎几个子系统配置参数,如色深、分辨率、声音选项、键位 设置等。 渲染器模块需要完成整个多边形处理流程,包括坐标转换、物体剔除、隐藏 面消除、光照和着色、纹理映射等,直到最后将每个像素的r g b 信息送入显示缓 存。 控制台主程序模块是引擎为游戏提供的主程序框架,一般来说,它包括了在 不同操作平台下可执行程序所调用的主程序,和游戏的主循环。引擎的使用者可 以在其中填入自己的代码,也可以使用引擎提供的接口调用它的函数、改交参数。 接口模块是引擎和游戏主程序之间的一个薄层,它并不是所有引擎函数的简 单说明,而是为了引擎更整洁,便于使用和移植而增加的,它将相关的函数组合 和封装起来,并给出含义明确的参数。 支持模块。引擎的图形模块和渲染器部分会用到大量的数学元素,如向量、 矩阵、四元数、直线、平面等,它们都需要专门的数据结构和功能函数,相互之 间还要进行一些关系判断及转换。由于这部分内容比较丰富,因此将它们单独组 成一个数学支持模块。支持模块还包括内存空问管理、文件加载和容器。 工具模块。在3 d 游戏程序的运行需要输入大量的数据,如3 d 模型、动画、 关卡、2 d 纹理、高程图、音频数据、m i d i 代码等,需要有专门的工具对它们进行 编辑。3 d 模型、动画、关卡可以用通用3 d 建模工具设计,如3 d sm a x 、m i i k s h a p e 3 d 等。也可以用专门设计的关卡设计工具设计,如著名的w o r l d c r a f t 编辑器。不 同的编辑工具会生成不同格式的数据文件,因此引擎中往往需要编写一个工具实 第二章3 d 游戏引擎的体系结构 现不同格式数据文件的转化。另外,3 d 游戏程序包中会包含大量的各类数据文件 和配置文件,为节约磁盘空间、便于查找以及安全性,往往需要将这些文件打成 压缩包,这也需要一个专门的工具来完成。最后,由于b s p 树、0 s p 树、p v s 等都 是运行程序前预先生成的,关卡编辑工具必须有生成这些数据的功能。 9 电子科技大学硕士学位论文 第三章3 d 游戏图形引擎t r - a 1 3 d 的总体设计与支持 3 1 模块结构 t r i a l 3 d 是一个3 d 游戏的图形引擎,因此,可以去掉3 d 引擎中的声音处理子 系统和相关工具。由于时间有限,也不可能包括所有功能,所以,我们去掉了配 置模块,约定采用1 6 位色、8 0 0 6 0 0 的分辨率。为了使整个3 d 渲染流程的设计 更清晰,我们不打算使用硬件的3 d 加速功能,所以,也无需选择采用软件还是硬 件作3 d 运算3 d 变换、光照、着色、纹理和光栅化的数据处理全部编码完成。 接口部分也暂时去掉,以后还可以再添加进去。由于做好的引擎需要有d e m o 测 试,所以控制台主程序和输入部分都是必要的。 图3 1 表示了t r i a l 3 d 的架构及数据、控制流程: 1 0 第三章3 d 游戏图形引擎t r i a l 3 d 的总体设计与支持 图3 - 1t r i a l 3 d 架构及数据、控制流程 电子科技大学硕士学位论文 3 23 d 数学 3 2 - 1 坐标系和矩阵变换 3 d 图形在屏幕上的显示,实际上是一个将离散的模型和关卡放置到适当的空 间位置、再从人眼所观察到的角度将它们投影到正确的平面位置、最后填充像素 点的过程。因此,3 d 元素要经过一系列的坐标变换过程: 模型坐标一世界坐标一观察坐标一投影坐标一屏幕坐标 模型坐标是对象和关卡建模时的坐标,我们约定,所有模型放置在第一卦限, 起始点为原点,面向+ z 轴。如图3 2 所示。 世界坐标是将对象和关卡放入游戏世界中适当位置后的坐标,是绝对坐标, 有固定的大小。不随操作者观察方向的变化而变化。如图3 3 所示。我们又将采 用世界坐标系的空问称为世界空间。 观察坐标是以操作者的观察点和观察方向为参考的坐标,是相对坐标。操作 者操作键盘或鼠标,使得观察点和观察方向发生变化,游戏世界内各点的观察坐 标也就发生变化。如图3 - 4 所示。我们将采用观察坐标的空问称为观察空间。由 世界空间到观察空间的变换称为相机变换。 和观察坐标相关的概念是:视点、视平面、视距、视野、近裁剪面、远裁剪 对象一 图3 - 2 对象与模型坐标 z 图3 - 3 对象与世界坐标 】 图3 4 对象与观察坐标 1 2 图3 5 视棱台与相关参数 t 1 , 第三章3 d 游戏图形引擎t 血1 3 d 的总体设计与支持 面、视棱台,如图3 5 所示。 按照眼球的成像原理,光线会通过凸起的视网膜聚焦到一点,我们把这一点 作为观察坐标的原点即视点,把视网膜用平面表示,称为视平面,这个平面就对 应了屏幕所在的平面。视点和视平面之间的距离,称为视距。我们将视线范围用 角度表示,称为视野,x o z 和y o z 平面上的视线范围分别称为水平视野和垂直视野。 为了避免离视平面过近的对象在屏幕上产生变形,需要规定一个近裁剪面:为了 减轻渲染器的负担,需要规定一个远裁剪面,只有远、近裁剪面之问的对象是可 见的,其余对象被裁剪掉。又由于有观察方向和视野的限制,游戏场景中只有一 个棱台内的对象可以被投影到视平面上,这个棱台就称为视棱台。 投影坐标是将视棱台内的对象投影到视平面上后各点的坐标,它是平面坐标, 原点在视平面中心。见图3 - 6 。由观察坐标到投影坐标的变换称为投影变换。 屏幕坐标也是平面坐标,它由投影坐标转换而来,但原点在屏幕左上角,且 坐标都是整数单位,最大值为屏幕的分辨率。见图3 - 7 。 、。 玉 o 一 0 图3 - 6 投影坐标图3 - 7 屏幕坐标 在t r i a l 3 d 中,3 d 坐标均采用笛卡儿坐标,而且使用左手坐标系。 3 d 坐标的变换主要包括平移、旋转、缩放三种,一般有两类实现方式:直接 变换和矩阵变换。矩阵变换的好处是,可以将三种变换组合到一个变换矩阵中, 同时,统一的矩阵形式也便于硬件的实现。目前的硬件渲染流程都采用了矩阵变 换的形式。但有些坐标转换涉及的类型比较少,比如从投影坐标到屏幕坐标,就 只需作平移,这种情况下用矩阵变换反而复杂,如果是软件渲染,就无需使用矩 阵交换。由于t r i a l 3 d 采用软件渲染,所以在程序实现中除3 d 空间变换外,一律 采用直接变换的方式,这样可以节省运算时间;但所有坐标变换的矩阵方程以及 电子科技大学硕士学位论文 矩阵变换公式仍将在这里列出。 这里首先列出矩阵变换公式: 若将点p ( x ,y ,z ) 平移到点p ( x + d x ,y + d y ,z + d z ) ,则平移矩阵m t 和它 的逆矩阵m t l 分别为: m 仁 10o0 o100 o o1o d x d v d z1 m t i = l0 0l oo d x d y 0o oo 10 d z1 若对原点缩放点p ( x ,y ,z ) ,x 、y 、z 轴的缩放因子分别是s x 、s y 、s z ,则缩 放矩阵m s 和它的逆矩阵m s 。分别为: m s = s x0 0 s y 0 0 00 o o 0o s z0 0 1 m s 1 1 s x000 0 1 s y 00 o 0 1 s z0 0oo1 若将点p ( x ,y ,z ) 分别绕x ,y ,z 轴旋转,旋转角各为ex 、0y 、0z ,则绕x 、 y 、z 轴旋转的旋转矩阵m r x 、m r y 、m r z 和他们的逆矩阵分别为: m i x = m r v = 1o 0c o s0 x 0 s i n0x o 0 c o s0y0 01 s i ney0 00 o0 s i n0x0 c o s0x0 01 s i n0y 0 0o c o s 0y 0 m r x - 1 = m r y l = 1 4 l0 0c o s0 x 0s i n0x oo c o s0y0 o1 一s i n0y0 0o 00i - s i n0 xj c 。sexol olj i s j i ley 0 00 l c o s0yd o i 第三章3 d 游戏图形引擎t f i a l 3 d 的总体设计与支持 m r z = c o s0z s i n0z o 0 3 2 2 坐标转换 s i n0z c o s0z o o o0 oo lo ol m i z l = c o s8z s i n0z0 s i n0zc o s0z0 00l 000 将模型放入游戏世界时,会有两种可能的操作:平移和缩放。如果是动态模 型( 如角色、怪物等) ,按它们的动画帧数装入。因此,只需将模型坐标( 用向量 表示) 依次乘以平移、缩放矩阵就可以了,即m m w = m t x m s 。 将对象的世界坐标转换为观察坐标时,需要用到一个很重要的数据结构: c a m e r a 。这个数据结构我们将会在后面下一节描述,这里只是指出:视点坐标、 视野、视距等几个观察空间的重要参数都包括在这个结构中。从世界坐标到观察 坐标需要经过平移和旋转转换,如果旋转顺序是依次绕x 轴、y 轴、z 轴,则有: m w v = m t 一1 x m r x 一1 m r y 一1 x m r z 一1 其中,d x ,d y ,d z 是视点坐标,0x 、0y 、0z 分别是相机x 、y 、z 轴与世 界坐标x 、y 、z 轴的夹角( 即观察角) 。 m w v 称为相机变换矩阵,在t r i a l 3 d 中有时需要将坐标从观察空间转换到世 界空间,因此需要m w v _ 1 即相机逆变换矩阵。 从观察坐标到投影坐标需要经过投影变换,将深度z 反映在平面图形的大小 上( 远小近大) 。变换矩阵是: 其中d 是视距,a r 是屏幕的宽高比。 m 、r p 2 d oo 0 0d * a r0 0 o01l o ooo 令a = o 5 屏宽一o 5 ,b = o 5 屏高一o 5 ,则投影坐标到屏幕坐标的变换 矩阵如下: 电子科技大学硕士学位论文 m p s = 3 2 3 数学引擎模块 1o0o o。10 0 0010 1 3 0 1 3 2 3 1 数据类型与数据结构 点。t r i a l 3 d 支持2 d 点和3 d 点。由于采用软件渲染,所以无需定义四元数。 它们和向量的表示方法相同,数据结构分别表示如下: t y p e d e f s t r u e tv e c t o r 2 d t y p u n i o n f l o a tm e 2 1 ; s t r u c t f l o a tx ,y ; ) v e c t o r 2 d ,p o i n t 2 d ,+ v e c t o r 2 d p t r , + p o i n t 2 d p t r ; t y p e d e f s t r u c t v e c t o r 3 d t y p u n i o n f l o a tm 3 i ; s t r u c t f l o a tx ,y ,z ; 1 6 第三章3 d 游戏图形引擎t r i a i 3 d 的总体设计与支持 ) v e c t o r 3 d ,v e c t o r 3 d p t r , p o i n t 3 d ,p o i n t 3 d p t r ; 用数组和独立变量两种方式定义点是为了能够编写更清晰的算法。 在t 6 a 1 3 d 中,由于采用增量算法比独立计算每个值更为迅速,所以直线都采 用参数化直线方程,以下分别是2 d 和3 d 直线的参数化方程: t y p e d e f s t r u c tp a r a m l i n e 2 d t y p p o i n t 2 d p 0 ; | 起点 p o i n t 2 dp l ;,终点 v e c t o r 2 dv :线段的方向向量 p a r a m l i n e 2 d ,p a r a m l i n e 2 d p t r ; t y p e d e fs t r u c tp a r a m l i n e 3 d t y p p o i n t 3 dp 0 ; | 起点 p o i n t 3 d p 1 ;终点 v e c t o r 3 dv ;,线段的方向向量 p a r a m l l n e 3 d ,p a r a m l i n e 3 d p t r ; 3 d 平面是采用点法式方程: t y p e d e f s t r u c t p l a n e 3 d t y p ( p o i n t 3 d p 0 ;平面上任意一点 v e c t o r 3 dn 平面的法线 ) 平面的数据结构: t y p e d e fs t r u c tp l a n e 3 d t y p ( p o i n t 3 dp 0 ; v e c t o r 3 dn ; p l a n e 3 d ,+ p l a n e 3 d p t r 最后需要考虑一个问题:采用定点数还是浮点数? 本来,在大多数情况下, 浮点数的乘除运算比定点数快。但由于光栅化的单位都是整数,需要进行从浮点 数到定点数的转化,在最坏的情况下,需要7 0 个时钟周期,一般情况下需要1 2 - 2 0 电子科技大学硕士学位论文 个时钟周期。若按2 0 个时钟周期计算,假设时钟频率为5 0 0 m h z ,则一个时钟周 期为2 + 1 0 4 s 。如果z 缓存大小为8 0 0 * 6 0 0 ,对每一个像素点的x 、y 值都作一次定 点转换,则需要的时间为: 2 0 * 8 0 0 * 6 0 0 * ( 2 1 0 9 ) = 1 9 2 m s 若要保持3 0 f p s 的帧速,则每帧只能持续3 3 m s ,考虑到还有上万个多边形需 要计算坐标、颜色和光照、纹理以及碰撞检测,浮点数向定点数转换的时间耗费 是完全不可接受的。因此,决定在光栅化运算中采用定点数。它的类型定义如下: t y p e d e f i n t f i x p l 6 ; t y p e d e fi n t + f i x p l 6 p t r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024商业销售代理合同
- 慢阻肺病人的护理要点
- 苏州科技大学天平学院《环境工程原理》2021-2022学年第一学期期末试卷
- 2024民间借款抵押合同范本2
- 苏州科技大学天平学院《风景园林建筑设计》2022-2023学年第一学期期末试卷
- 农药生产中的新型工艺与技术考核试卷
- 摩托车的减震器类型与材料考核试卷
- 危险源评估在城市社区医院建设中的应用考核试卷
- 木材加工中的产品研发与创新设计考核试卷
- 农药制造中的工人安全与健康保护考核试卷
- 车用动力电池回收利用 管理规范 第2部分:回收服务网点征求意见稿编制说明
- 新剑桥少儿英语第六册全册配套文本
- 科学预测方案
- 职业生涯规划网络与新媒体专业
- T-WAPIA 052.2-2023 无线局域网设备技术规范 第2部分:终端
- 市政管道开槽施工-市政排水管道的施工
- 初中八年级英语课件Reading Giant pandas-“江南联赛”一等奖2
- 人工智能在教育行业中的应用与管理
- 心衰合并胸腔积液的护理Ppt
- 廉洁风险防控手册(医院)
- 酒精戒断综合征护理查房课件
评论
0/150
提交评论