




已阅读5页,还剩85页未读, 继续免费阅读
(通信与信息系统专业论文)互动数字娱乐平台可重用开发工具关键技术研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
上海大学硕士学位论文 摘要 交互式数码娱乐引擎即3 d 游戏引擎在游戏设计,虚拟现实技术等领域有 着广泛的应用,具有重要的使用价值。引擎为游戏开发者提高一套完整的a p i , 包括底层的数据结构、文件读写、数学库等的支持。上层的场景管理、界面管 理、资源管理,扩展层的显示特效等方方面面。 可重用开发工具是引擎的重要组成部分,开发工具的实现不仅仅依赖于客 户端引擎的底层功能,还依赖于扩展功能模块的支持。如声音引擎、g u i 模块、 虚拟摄像机系统、b i l l b o a r d 、光影模块以及粒子系统等,本文设计了这些 模块,重点在于光影模块、粒子系统以及声音引擎。 光影模块分为两个部分:静态阴影贴图和动态光影效果。静态阴影贴图采 用离线预先计算阴影信息,从而不必实时计算阴影效果,提高了实时渲染速度; 动态阴影则用来弥补静态阴影的不足,针对需要展示实时效果的地方进行动态 光影计算,本文还利用s h a d e r 技术对动态阴影进行了模糊计算。在场景中综合 使用这两者能够在渲染效果和速度上达到一个平衡。 粒子系统是游戏特效的重要组成部分,本文设计了粒子系统中各个模块的 结构,并实现了多种不同类型的发射器和影响器,以模拟不同的粒子系统。 声音引擎用以实现游戏中背景音乐和音效的播放,引擎将d i r c c t m u s i c 进行 封装,留出应用接口,方便用户调用。同时,声音引擎作为一个独立模块,可 以在任何支持有d i r c c t x 库支持的环境下使用。 关键词:静态阴影,动态光照,粒子系统,声音引擎 v 上海大学硕士学位论文 a b s t r a c t t h ee n g i n eo fi n t e r a c t i v ed i 菌gt a le n t e r t a i n m e n t , i e 3 dg a m ee n g i n e , i sa p p l i e d w i d e l yi nd e s i g n i n gg a m e sa n da d o p t i n gt h ev i r t u a lr e a l i z a t i o n t h ee n g i n es u p p l yt o t h ed e v e l o p e r sas e to f a p i s ,i n c l u d i n gd a t as t r u c t u r e s ,f i l ei 0 ,m a t hi nt h eb o t t o m l a y e r , s c e n em a n a g e m e n t ,u im a n a g e m e n t , r e s o u r c em a n a g e m e n ti nt h eh i g hl a y e r a n de f f e c tm o d e l si nt h ee x t e n d e dl a y e r , a n ds oo n t h er e u s a b l ed e v e l o p i n gt o o l s 黜i m p o r t a n tc o m p o n e n t so ft h ee n g i n e , t h e y d e p e n do nn o to n l yt h el o w e rl a y e ro ft h ee n g i n e , b u ta l s os o m ee x p a n d e dm o d u l e s , s u c ha ss o u n de n g i n e , s u c ha sg u im o d u l e , v i r t u a lc a m e r as y s t e m , b i l l b o a r d s h a d o wm o d e la n dp a r t i c l e s y s t e m t h i sp a p e rd e s i g n e d t h e s em o d u l e s ,t h e e m p h a s e sa t es h a d o wm o d e l ,p a r t i c l es y s t e ma n ds o u n de n g i n e t h es h a d o wm o d u l ei n c l u d e st w op a r t s :s t a t i cs h a d o wa n dd y n a m i cs h a d o w s t a t i cs h a d o wi sp r e c o m p u t e da n da d d e dt ot h e3 ds c e n ew h e nr e n d e r i n g , t h er e n d e r e f f i c i e n c yw i l lb ei n c r e a s e ds i g n i f i c a n t l yw h e nu s i n gs t a t i cs h a d o w i ) y n a m i e s h a d o wi sas u p p l yt os t a t i cs h a d o w , i tw i l lb ec o m p u t e di nt h e3 ds c e n l ew h e n n e e d e d , a n dt h ed y n a m i cs h a d o wi sb l u r r e du s i n gt h es h a d e rt e c h n i q u et og e tb e t t e r e f f e c ti nt h i sp a p e r t h ec o m b i n a t i o no f u s i n gs m i l es h a d o wa n dd y n a m i cs h a d o wi n 3 ds c e l l ec a nm a k eab a l a n c eb e t w e e ne f f e c ta n de f f i c i e n c y p a r t i c l es y s t e mi sai m p o r t a n tp a r to fg a l l i ce f f e c t s ,t h eb a s i cs t r u c t u r eo f p a r t i c l es y s t e mi sd e s i g n e di nt h i sp a p e r , a n ds e v e r a ld i f f e r e n tk i n d so fp a r t i c l e e m i t t e r sa n de f f e c t o r sa l ed e s i g n e dt os i m u l a t ed i f f e r e n tp a r t i c l es y s t e m s s o u n de n g i n ei su s e dt op l a yb a c k g r o u n dm u s i ca n ds o u n de f f e c t si ng a m e so r o t h e ra p p l i c a t i o n s s o u n de n g i n es u p p l ys e v e r a li n t e r f a c e st ot h eu s e rb yp a c k i n gt h e d i r e c t m u s i e , a n di t se a s yt ou s e a l s o 嚣a l li n d e p e n d e n tm o d u l e , s o u n de n g i n ec a l l b eu s e di na n ye n v i r o n m e n tw i t hd i r e e t x k e y w o r d s :s t a t i cs h a d o w , d y n a m i cs h a d o w , p a r t i c l es y s t e m ,s o u n de n g i n e v i 上海大学硕士学位论文 原创性声明 本人声明:所呈交的论文是本人在导师指导下进行的研究工作。 除了文中特别加以标注和致谢的地方外,论文中不包含其他人已发 表或撰写过的研究成果。参与同一工作的其他同志对本研究所做的 任何贡献均已在论文中作了明确的说明并表示了谢意。 签名: 本论文使用授权说明 日期: 本人完全了解上海大学有关保留、使用学位论文的规定,即: 学校有权保留论文及送交论文复印件,允许论文被查阅和借阅;学 校可以公布论文的全部或部分内容。 ( 保密的论文在解密后应遵守此规定) 签名:雌导师签名:诬日期: 华侈 上海大学硕士学位论文 1 1 课题来源 第一章绪论 本课题来源于信息产业部电子信息产业发展基金重大招标项目“网络游戏 开发平台建设”,项目编号:2 0 0 5 6 8 8 。 1 2 课题研究的目的和意义 2 0 0 6 年1 月1 7 日发布的中国互联网络信息中心( c n n i c ) “第十七次中国 互联网络发展状况统计报告”显示,我国上网用户总数为1 1 l 亿,比前一年同 期增长1 8 2 ,使用宽带上网的人数达到6 4 3 0 万,比去年同期增长了5 0 0 , 4 以上; 上网计算机达到4 9 5 0 万台,比半年前增长了1 9 。本次c n n i c 调查还特别指 出,3 3 2 的用户选择网络游戏为经常使用的上网娱乐方式。 另据市场调查权威机构“艾瑞市场咨询有限公司”与网络游戏第一门户 1 7 1 7 3 联手发布的“2 0 0 5 中国网络游戏市场研究报告”显示,2 0 0 5 年中国网络 游戏用户为2 9 0 0 万,在网民中所占比重为2 6 ,比2 0 0 4 年增长3 8 。预计到 2 0 0 6 年中国网络游戏用户将达到4 0 0 0 万,2 0 1 0 年将突破8 0 0 0 万。同时,随着 中国网络游戏运营模式的不断创新,有效的促进了中国网络游戏行业高效、快 速的发展。2 0 0 5 年中国网络游戏产业规模达到6 1 亿元,比2 0 0 4 年增长5 1 。 预计到2 0 0 6 年产业规模为7 8 亿元,2 0 1 0 年将达到1 4 3 亿元。 同时,根据中国社科院社会发展研究中心发布的“2 0 0 5 互联网报告”的数 据显示“网络游戏”已经成为现今网民上网的主要行为之一,占到了网民上网 行为总数的6 2 2 。 三份权威机构发布的调查报告同时为我们说明了一个事实:随着中国网络 游戏运营手段不断创新和网络游戏玩家群体的高速膨胀,中国网络游戏行业将 继续保持着高速发展、不断完善的势头。 但是,从2 0 0 0 年开始,国外的游戏开始牢牢的占据中国的市场。与此同时, 绝大多数中国游戏厂商开始以引进国外优秀的网络游戏作为自己的发展战略。 上海大学硕士学位论文 韩日游戏生产商更是控制着八成以上的核心技术。更令人担忧的是,以日韩游 戏为主的网游文化,已深深影响到青少年的文化观和道德观,强烈冲击了中国 优秀传统文化。如果我们不及时开发以中华文化为内涵的具有自主知识产权的 网络游戏,我们丧失的将不止是游戏市场的经济利益,由此带来的对中华文化 的冲击不可避免。因此,经济上、文化上都要求我们能开发出具有自主知识产 权的网络游戏。 开发网络游戏需要有一个良好的开发平台,如何在这样一个竞争激烈且市 场利润有非常巨大的市场中取胜,并同时弘扬中国传统文化,需要我国有一个 开放的、中立的、服务健全的网络游戏开发平台与测试平台。 随着游戏产业朝着专业化的方向发展,游戏的程序开发逐渐分离为两大块 的内容:开发游戏引擎和使用游戏引擎进行游戏开发。游戏引擎将行为、关卡、 模型、音乐、操作等所有游戏元素捆绑在一起在后台指挥它们同时、有序地工 作。同时引擎利用软件重用思想,把游戏中最常见、最核心的功能进行集成, 形成通用的框架平台,可以在很短的周期内开发出高质量的游戏【l 】。本课题就 是基于这样一个目的,利用现有的资源,基于引擎底层进行互动娱乐平台可重 用开发工具中关键技术的研究。 1 3 国内外研究概况 1 3 1 国外研究概况 经过不断的进化,如今游戏引擎已经成为游戏开发过程不可缺少的部分, 尤其是作为引擎重要组成部分的编辑工具在游戏开发过程中发挥着巨大的作 用,从场景编辑、地形编辑、材质贴图编辑、人物动作编辑到音效编辑、物理 属性编辑、a i ( 人工智能) 编辑和游戏逻辑编辑等,几乎涵盖了游戏设计过程 中所有的重要功能和环节。国外著名的商业引擎 2 】包括d o o m 引擎,i ds o i t w a r e 公司的“雷神之锤”( q u a k e ,它是一款真正意义上的三维引擎,也是引擎发展 史上重要的里程碑) ,l i t h t e c h 公司的l i t h t e c h 引擎【3 】以及e p i c 公司的u n r e a l 系列引擎。这些商业游戏引擎在绘制、建模、动画、人工智能和音效处理等方 2 上海大学硕士学位论文 面达到了很高的水平,而且都提供了功能齐全、规模庞大的游戏编辑工具集, 囊括了游戏开发的方方面面,甚至不需要接触代码就可以开发出游戏,这也是 为什么游戏开发商不采用开源引擎而需要花巨额的资金取得商业引擎的l i c e n s e 来开发游戏,不仅仅是因为商业引擎的画面质量比开源的要好,重要的是成熟 的商业引擎所提供的开发工具对面向市场的企业来说有着莫大的吸引力。 另外,得益于相关领域的高水平,游戏爱好者也开发出了高质量的游戏引 擎,旨在技术交流和促进游戏软件业的发展。虽然它们附带的游戏开发工具不 是很全面,但是已经非常专业。如著名的“o g r e ”,“i r r l i c h t ”【4 】,“t o r q u e ” 等。 1 3 2 国内研究概况 可惜国内在这一领域仍是f l f nj j 起步阶段,面对如此众多的网络游戏,基本 都是代理国外游戏,缺乏自己本国的特色和自主知识产权,而且游戏模式也并 不符合本国国情。随着国内产业的腾飞,游戏产业的兴起,国家“8 6 3 ”高 科技计划拨出专项资金来研究引擎的关键技术,信息产业部2 0 0 3 年也设立了网 络游戏引擎的招标项。国家的大力支持使得国内引擎研究在近两年有了长足的 进步,2 0 0 4 年香港理工大学的研发的“l u c i d ”引擎,包括完整的客户端部分 “l u c i d 3 d ”和服务器端部分“l u c i d n e t ”,2 0 0 5 年1 1 月北京涂鸦软件公司正式 向市场投放了第一套完全由国人自主开发的3 d 商业引擎“o r i g oe n g i n e ”。这 些引擎在画面质量和特效上的表现已经达到了国外的先进水平,但是扩展功能 上的缺乏和不完善使它们在竞争中处于下风。 令人欣喜的是国内相关领域的爱好者组成了团体进行相关领域的开发,如 f ss t u d i o ,利用国外的授权引擎进行开二次开发,已经取得了很好的成绩,团 队也不断地壮大。 1 4 论文的主要研究内容 本论文是以作者攻读硕士学位期间承担课题的工作为基础,围绕着数字娱 3 上海大学硕士学位论文 乐开发平台展开,主要内容是基于客户端引擎底层进行可复用开发工具中关键 技术的研究与实现。对项目开发中遇到的问题做出分析、制订解决方案,最终 通过编程实现。论文的安排如下: 第一章中阐述了课题研究的来源、目的、意义以及国内外研究的现状。 第二章主要讨论3 d 客户端引擎,编辑器作为引擎的重要组成部分,需 要更多的扩展功能的支持。本章中阐述了其中几个重要的功能模块, 并着重介绍了本文中将要设计模块的原理和特点; 第三章阐述了地形结构以及地形贴图,在此基础上详细描述了静态阴 影的设计和实现方法; 第四章介绍了动态阴影技术中的s h a d o w m a p 技术,针对s h a d o w m a p 的 缺点进行了改进,并编程实现了模糊阴影效果; 第五章阐述了基于b i l l b o a r d 的粒子系统的实现方法; 第六章基于d i r e :c t a u d i o 设计并实现了声音引擎,支持m i d i 和w a v 文件格式,并支持3 d 音效。 第七章给出了全文总结以及对未来工作的展望。 4 上海大学硕士学位论文 2 1 引言 第二章可重用开发工具 可重用开发工具作为客户端引擎的一个重要组成部分,随着互动娱乐产业 的发展发挥着越来越重要的作用。设计开发工具的目的是减少开发人员工作量, 最理想的状态是不需要编写程序,通过开发工具的可视化操作直接生成游戏。 开发工具的实现不仅依赖于引擎的底层功能,还需要一些扩展功能模块的 支持。本章中首先介绍客户端引擎的基本架构,然后给出开发工具的典型功能 框图,并重点介绍可重用开发工具扩展模块。 2 2 系统开发平台 本次课题作为软件项目的开发与研究,首先介绍一下整个开发系统的软硬 件构成。项目开发环境参见表2 1 和表2 2 。 表2 1 客户端引擎设计硬件开发平台 中央处理器c p u i n t e r p e n t i u m 4 2 4 g h z 硬盘8 0 g5 4 0 0 转 系统内存5 1 2 m ,d d r 3 3 3 显示芯片,显示内存a t i9 5 5 0 ,1 2 8 b i t ,1 2 8 m 声卡板载a c9 7 兼容声卡 显示器,刷新频率v i e w s o n i c1 7 纯屏,8 5 h z 表2 2 客户端引擎设计软件开发平台 操作系统o s w i n d o w s 。x p 。s p 2 图形渲染a p i d i r e c t x 9 0 cd 3 d 声音播放a p i d i r e o x 9 0 cd i r e c t a u d i o 开发语言c + + ,h l s l ,a s m 集成开发环境v s 6 0 ,v s 2 0 0 3 5 上海大学硕士学位论文 图形建模工具3 d m a x 6 o 代码管理工具t d r t o i s v n 2 3 客户端引擎架构 客户端引擎主要由以下基本模块组成,其基本框架如图2 1 所示。 图形引擎 图形引擎主要包含游戏中的场景( 室内或室外) 管理与渲染,角色的动作 管理绘制,特效管理与渲染( 粒子系统,自然模拟( 如水纹,植物等模拟) ) , 光照和材质处理,l o d ( l e v e lo b j e c td e t a i l ) 管理等,另外还有图形数据转换工具 开发,这些工具主要用于将艺术人员通过d c c ( d i g i t a lc o n t e i l tc r e a t i o n ,数字 内容创作) 软件( 如3 d sm a x ,m a y a ,s o f tx s i ,s o f th i l a g e 3 d 等) 制作的模 型和动作数据以及用p h o t o s h o p 或p m n t c r 等工具制作的贴图,转化成游戏程序 中可用的资源文件。 物理引擎 物理引擎用来模拟虚拟世界中物体的受力情况,从而提高虚拟场景真实性。 主要包含游戏世界中的物体之间、物体和场景之间发生碰撞后的力学模拟,以 及发生碰撞后的物体骨骼运动的力学模拟( 比较著名的物理引擎有h a v o k 公司 的g a m ed 舯i c ss d k ,开源的则有o d e - o p e i ld y i l a m i c se n 百n e ) 。 控制模块 控制模块( c o n f f o lm o d u l e ) 负责实现游戏中的人机交互,用户通过操作键盘 鼠标来对虚拟世界提供的信息产生主观反馈。 g u i 模块 g u i 模块主要用以实现游戏中用户界面设计,最重要的是它底层的事件驱 动机制的实现。g u i 界面从表现形式上分为简单的2 dg u i 界面以及复杂的3 d g u i 界面。应用程序中所有涉及到用户和电脑交互的部分均由g u i 模块实现。 a i ( 人工智能) 游戏中的“人工智能”可以简单地定义为所有由计算机在游戏中所做的“思 考”,它使得游戏表现出与人的智能行为、活动相类似,或者与玩家的思维、感 6 上海大学硕士学位论文 知相符合的特性。 图2 1 客户端引擎结构图 从图2 1 中可以看出,引擎的每个模块中都使用了内部再分层的方法来降 低开发难度,如图形模块分割为4 层:d r i v e r 、r e s o u r c e 、s c e n e 和r e n d e r :i n p u t 模块也分为两层:i n p u t m e t h o d ( 代表不同的输入设备) 和d r i v e r 。 在这些模块的下面则是底层的数学库( m a t h ) 、场景管理( s c e n e ) 、资源管理 ( r e s o u r c e ) 、系统( s y s t e m ) 等模块,它们与游戏内容没有直接关系,但是它们的 作用却是至关重要:一方面它们为整个引擎提供基础功能,另一方面又作为软 件和硬件平台通信的桥梁。 7 上海大学硕士学位论文 2 4 可重用开发工具扩展模块 可重用开发工具在现在的游戏开发过程中扮演着越来越重要的角色,囊括 了从美术资源的创建、游戏界面的开发甚至游戏逻辑的设计等方方面面,常见 的开发工具包括关卡编辑器、粒子编辑器、界面编辑器以及逻辑编辑器、角色 编辑器等,有时为了配合项目的开发,还会针对某个项目的特殊性开发相应的 工具,如舞蹈类游戏非常强调人物身体语言的多样性,因此专门的骨骼编辑器 对项目的开展会有很大的促进作用。本文将所有的编辑工具统称为场景编辑器, 它的典型功能模块如图2 2 所示。 图2 2 场景编辑其功能框图 上海大学硕士学位论文 场景组织 编辑器首要的功能就是场景中物体的组织,需要能够对每个模型( 如房屋、 石头、桥等) 的位置、大小、旋转等等基本属性进行编辑。 地形编辑 地形编辑指针对大型室外地貌的编辑,包括地表高度的编辑、地表贴图编 辑等。地形模块在下节将有较详细的阐述。 特效编辑 特效指能够提升场景表现力的一些视觉效果的实现,包括很多种类,这里 只是列出了其中最具代表性的几种。 材质编辑 材质编辑指对原始图片进行模糊、扭曲等各种二维图像操作或对多张图片 进行混合处理等操作从而生成复杂、美观的模型贴图。 角色编辑 也可以称之为人物编辑,通过它可以编辑人的皮肤贴图,骨骼以及不同动 作之间的连接,以实现不同的人物形体状态。 a i 路径编辑 路径指游戏中n p c ( n o np l a y e rc h a r a c t e r ,非玩家控制人物) 在自动寻路时所 走的路径,路径编辑对路径中的关键点进行设置,在此基础上利用寻路算法就 可以实现n p c 的某些人工智能。 声音编辑 这里的声音编辑不是指对声音本省进行编辑,而是将声音信息作为附加属 性提供给场景中的物体。如给一条河流附加上水流声等。 g u i 编辑 g u i ( g - r a p h i cu s e ri n t c r f a c 圮) ,即图形用户界面,指应用程序中与用户操作 相关的界面。通过g u i 编辑器,能够方便地编辑出菜单、对话框等界面,并能 够实现消息响应。 下面将对本文中所牵涉的模块进行较详细的阐述。包括声音引擎的设计, g u i 模块的设计以及光影效果和粒子系统等。g u i 模块虽然属于引擎的底层支 9 上海大学硕士学位论文 撑模块,但是它和所有的编辑工具息息相关,因此将它也归到扩展模块中。由 于在这些模块的实现中还需要牵涉到其他内容,如地形、s h a d e r 、控制等,在这 里也做了相应的说明。 2 4 1 声音引擎 声音引擎( s o u n de n g i n e ) 实现了在虚拟世界中音乐的播放,是声卡等硬件设 备和声音资源文件沟通的桥梁,主要包含音效( s o u n de f f e c t 简称s e ) ,语音 ( v o i c e ) ,背景音乐( b a c k g r o u n dm u s i c 简称b g m ) 的播放。s e 是指那些在游 戏中频繁播放,而且播放时间比较短,但要求能及时无延迟的播放,v o i c e 是 指游戏中的语音或人声,这部分对声音品质要求比较高。b g m 是指游戏中一长 段循环播放( 也有不循环,只播放一次) 的背景音乐,正是由于b g m 的这种 特性,一般游戏的背景音乐是读盘( 光盘或硬盘) 来播放。 声音引擎的设计基于微软d i r e c t x 9 0 s d k 中d i r e c t a u d i o 部件的底层a p i , 将接口函数进行封装,向用户提供一个方便、灵活和强大的音频接口,避免复 杂参数设置和繁杂的操作步骤以及对硬件的设置和操作。 声音引擎将初始化的工作全部交由声音引擎自身完成,用户只需要关心关 于播放时参数的设定。声音引擎为用户提供一个a u d i o 库,用户为每个声音文 件声明一个a u d i o 对象。在声明a u d i o 对象的同时,为即将载入播放的声音文 件做初始化设置,如音量、频率、播放次数,是否为3 d 音效等。用户通过操 作a u d i o 对象的参数来实现对声音播放的控制,同时,根据从游戏中获取的数 据,能够实时调整播放参数,而不需要人为的实时控制。 2 4 2g u i 模块 g u i 模块实现以界面的方式来接收用户的输入控制,g u i 的底层系统负责 处理玩家和游戏的交互信息。界面可以由一个或多个窗口组成,这些窗口又可 以带有一个或多个控件。g u i 依靠“事件驱动”实现与用户的交互,如点击按 钮这个动作会触发一个事件。程序在空闲状态时会等待事件的发生,捕捉到事 1 0 上海大学硕士学位论文 件后根据事件执行相关操作。 g u i 模块支持的控件包括常见的几个控件( 按钮、卷标、文本框等) ,为了 更高级的应用,如编辑器设计,还提供窗口、菜单、列表框、组合框等控件, 控件的继承关系见图2 3 。 图2 3 控件继承关系 用户通过操作控件,可以发出多种“事件”,g u i 底层模块通过这些事件来 调用相应的函数响应。g u l 支持的事件类型见表2 3 。 表2 3 g u i 事件 事幢触发条件 c l i c k 控件被单击 d o u b l e c l i c k控件被双击 m o v e控件被移动 r e s i z e 控件大小被改变 t e x t c h a n g e d 控件上的文本被改变 m o u s e e n t e r 鼠标移动到控件范围内 m o u s e l e a v e 鼠标离开控件范围 m o t k q e m o v e 鼠标在控件范围内移动 m o u s e d o w n 鼠标在控件上按下 上海大学硕士学位论文 m o u s e u p 鼠标在控件上弹起 k e y d o w n某个按键按f k e y u p 某个按键弹起 2 4 3 地形模块 地形指的是由岩石山峦、树林草地以及起伏的丘陵等所组成的壮丽的地面 景观。地形几何是室外场景的一个重要组成部分,在电影、虚拟环境和游戏中 经常使用。特别是对于室外游戏,如飞行模拟、赛车模拟和多人在线游戏。三 维游戏中的一般物体都是从三维建模软件中导出,通过编写相应的载入模块装 载到游戏场景中;而地形不同于一般物体,它通过一张灰度图生成,灰度图中 的每个象素对于与三维世界中的一个点,而此象素的灰度值代表对应点的高度 5 】,通过这种方法从理论上来说可以得到无限大的地形,使得一度困扰游戏开 发者的大规模的室外场景问题得到了解决。地形模块中主要包括地形生成、地 形贴图生成,高级的应用还包括地形l o d ( l e v e ro f d e t a i l s ) 、地形拼接技术等。 2 4 a 光影效果模块 在虚拟世界中,人们之所以可以看见物体,主要是因为光线通过物体表面 的反射( 或由物体发出) 并进入观察者的眼睛,在一个场景中增加一个光源将 会引起许多明暗变换,产生许多有趣的效果。光照是3 d 渲染的基本需求,在 d 3 d 中本身提供了三种光源效果:点光源、聚光灯、平行光和三种着色方程: f l a t ,g o u r a u d 和p h o n g 6 1 。引擎对光源进行了封装,用户只需设置光源位置, 光照范围或光照方向等参数即可,在一个虚拟场景中,最多同时支持8 个光源。 如果结合某些运动方程,还可以构成动态光照效果。 有光的存在就会对物体产生阴影效果,阴影对于增强游戏画面的真实性起 着非常重要的作用,它能暗示场景中物体的遮挡关系、深度提示以及光源的数 目位置等,如图2 4 显示了场景中阴影效果的重要性,右图是没有阴影的场景, 我们很难确认蓝色小球的位置:对比左图,很显然小球在地板上,并没有悬在 上海大学硕士学位论文 空中,场景的真实感大大增强。 图2 4 场景中光影效果的作用 目前计算阴影的方法分为两种:实时动态阴影和静态阴影。无论场景有没 有发生改变,实时动态阴影算法在每一帧都会重新计算阴影信息,当光源和物 体处于运动状态时,这种方法能够得到准确的阴影信息,但是它的最大缺陷就 是需要大量的实时计算,从而会降低渲染的效率。静态阴影则没有计算量的阿 题,所有的阴影信息均预先计算并保存为文件,在渲染的时候再加入到场景中, 提高了渲染效率,更因为它采用了离线的计算方式,所以在计算静态阴影的时 候可以运用更加复杂的计算方法来得到精确的阴影。 为了在视觉效果和渲染效率之间能够达到平衡,因此在场景中我们需要将 这两种阴影技术结合起来使用,对于位置固定不变的物体,如房屋、山峦、森 林植被等使用静态阴影技术,预先生成阴影;而对于经常变换位置的如玩家控 制的人物等等物体使用动态阴影技术,以达到较逼真的效果。 本文分别设计了这两种阴影效果:静态阴影称为光1 虱( l i g h t m a p ) ,在场 景生成时预先添加光照将产生的阴影效果转换为一层纹理贴图,当导入到游戏 场景中时,阴影作为物体的一层贴图同时被渲染出来,这种阴影贴图一旦在建 模时计算好,就确定下来不能实时改变,但是静态阴影对于模拟太阳这种无限 远平行光源照射有很好的效果。实时阴影通过s h a d o w m a p 7 技术实现,它基于 s h a d e r ( 着色器) 技术。s h a d o w m a p 技术可以根据光源位置或物体位置改变实 时计算阴影效果,由于采用了s h a d e r 技术,显卡必须支持s h a d e r 才能够使用这 种技术。 上海大学硕士学位论文 2 4 52 d 纹理渲染技术 2 d 纹理渲染技术即b i l l b o a r d 模块,这是一种使用2 d 贴图模拟3 d 效 果的伪3 d 技术,当用户在漫游虚拟场景时,利用b i l l b o a r d 技术的平面物 体会跟随用户摄像机转动而改变朝向,保持始终面对用户观察方向,因而会让 用户产生一种错觉,感觉这同样是一个3 d 物体 8 】。般在虚拟世界中,太阳 光晕,大规模树林的模拟都是采用这种技术的另外结合a l p h a 混合技术和动画 技术,还可以模拟火焰,爆炸,浮云等自然效果。使用b i l l b o a r d 最大好处就是 减少了每帧需要处理的顶点数据流( 一个2 d 平面最多只有6 个顶点) ,不但增加 了场景真实感还提高了渲染效率。 2 4 6 粒子系统 粒子系统是b i l l b o a r d 技术的一个延伸,同样是用2 d 图片来模拟现实 中的效果,但不同的是在每个粒子特效中,产生的粒子会非常多,因此需要专 门为其构建一个系统来进行管理。粒子系统除了和渲染器通信之外,还需始终 和定时器模块保持联系,通过定时器来控制每个粒子的生命周期。同时还需要 对粒子设计专门的运动方式来表现不同的运动效果。另外在设计的时候还可以 根据实际需要更换粒子贴图或颜色【9 】。用粒子系统可以模拟火焰,爆炸,雨雪 天气等画面特效。 2 4 7s h a d e r 技术 s h a d e r 着色语言是当今流行的图形渲染语言,通过s h a d e r 语言可以高效的 制作出各种特殊画面效果,显著提高游戏的可展现性,也是当今流行的图形渲 染方式。s h a d e r 语言从汇编发展起来,现在已经可以用类似c 语言的方法开发 s h a d e r 效果,如m i c r o s o f t 公司d i r e c t x 9 0 支持的h l s l 语言( h i g hl e v e ls h a d e r l a n g u a g e ) ,s i l i c o ng r a p h i c s 公司o p e n g l 支持的g l s l 语言,n v i d i a 公司的 c g 语言等等,广泛的支持,华丽的画面效果无一不体现s h a d e r 语言在现在计算 机图形学中的重要性 1 0 】。 上海大学硕士学位论文 在游戏设计中,s h a d e r 编程主要分为两个阶段:v e r t e xs h a d e r 和p i x d s h a d e r 。v e r t e xs h a d e r 称为顶点渲染,它取代了标准d 3 d 程序中的固定流水线 变换,紧跟的是像素渲染p i x ds h a d e r ,这一部分功能更为强大,取代了部分光 栅化操作,并且可以进行基于象素级的编程,因此可以做出更多更加绚丽的特 效。 2 4 8 控制模块 控制模块( c o n t r o lm o d u l e ) 负责实现游戏中的人机交互,用户通过操作键盘 鼠标来对虚拟世界提供的信息产生主观反馈。该模块设计原理基于w i n d o w s 消 息机制,在引擎建立的时候,同时建立一个系统回调函数w n d p r o c 0 ,这个回 调函数会处理所有被指定响应的消息类型。 调用方式参见图2 5 ,以键盘消息为例,当键盘某一个键被按下后,系统会 获得一个k e y d o w n 消息,送入消息队列等候处理,随后消息循环从队列中 取得消息送入消息回调函数w n d p r o c 0 ,在这个函数中会根据用户需要分类处 理,处理时根据w p a r a m 参数获得被按下的具体键值,并构造一个消息送入引 擎消息队列,对于该消息具体响应则由用户自己定义。在每个具体应用程序中, 用户可以根据自己需要编写不同的消息处理函数。引擎也以同样方式响应鼠标 操作。可以看出通过消息回调机制的建立和引擎消息处理函数的设计,大大提 高了设计的灵活性。 图2 5 控制模块消息处理机制 上海大学硕士学位论文 2 5 本章小结 本章介绍了客户端引擎底层基本结构,指出了可复用游戏开发工具的典型 模块框图,并对各模块功能进行了概况。重点阐述了其中的声音引擎、g u i 模 块、光影模块、b i l l b o a r d 、粒子系统等的设计。 在随后的几章中我们将重点阐述光影模块、粒子系统以及声音引擎的设计。 光影模块分为静态阴影的设计和动态阴影的设计,在三维场景中结合使用这两 者会得到很好的效果;粒子系统则是三维场景特效的重要组成部分;声音引擎 作为一个比较独立的模块,为应用程序提供背景音乐、音效以及3 d 音效的播 放。这几个模块的设计和实现是论文的重点研究内容。 1 6 上海大学硕上学位论文 3 1 引言 第三章地形静态阴影设计 场景编辑器是现代游戏引擎中开发工具中的一个重要组成部分,它基于客 户端引擎底层支撑模块实现。光影效果作为提升场景表现力的重要组成部分, 是不可或缺的。静态阴影需要在场景渲染之前进行预先计算,因此一般在场景 编辑器编辑完场景时使用。 本章重点阐述地形静态阴影算法的设计和实现。地形不会改变形状和位置, 因此静态阴影更适合地形,特别是对于大规模的地形来说,使用动态阴影将会 消耗大量的资源。顾名思义,地形静态阴影即作用于地形的静态阴影,算法通 过预先对场景进行光影计算将阴影信息记录在一张贴图上,这张贴图中记录了 地形上各点处的明暗程度,因此将这张这张贴图称为阴影贴图( l i g h t m a p ) 。在 本文的设计中,将l i g h t m a p 和地形的纹理贴图合二为一,地形纹理存储的是各 象素点的颜色信息,l i g h t m a p 中存储的是各象素点的明暗信息,因此将这两者 合二为一是可行的,而且节省空间。 地形静态阴影算法利用了地形的特殊结构,本章中首先介绍地形的概念以 及如何通过灰度图来生成地形,在此基础上阐述如何实现多张地貌贴图混和从 而形成复杂地形贴图的方法;然后使用本文提出的方法生成地形静态阴影信息, 结果储存在地形贴图中;最后给出了算法的性能测试。 3 2 地形概述 3 2 1 地形结构 地形技术是在2 0 世纪6 0 年代以后随着地理信息系统的出现而逐渐形成的 一门以研究数字地形模型的显示、仿真等内容的学科。它的应用涉及地理信息 系统( g i s ) 、虚拟现实( v r ) 以及现在发展非常迅速的互动娱乐产业等方面,用 上海大学硕士学位论文 来模拟大规模的室外地貌。图3 1 显示了一个室外地形的例子,场景中除了道 路部分是通过建模所得,其余的高低起伏的山坡都是由地形技术生成。从本质 上来说,地形和一般的三维模型一样也是由顶点或三角形所组成,地形网格和 一般模型网格的区别在于地形网格是由一系列纵横对齐的顶点组成,通过设置 每个项点的高度以得到不同的外形,图3 2 显示了对应于图3 1 的地形网格。正 因为地形顶点结构的规律性,使得很多特殊的算法得以在地形上实现,如本章 中地形静态阴影算法。 图3 1 一个地形的示例 豳3 2 地形网格 3 2 2 地形生成 地形由一张灰度图生成,灰度图的每个象素对应于地形上的一个顶点,象 素的灰度值代表了地形中对应顶点的高度值,因此把这样的灰度图也称为高度 图 5 】。图3 3 为一个1 2 8 x 1 2 8 大小的高度图,即它的总象素为1 2 8 1 2 8 = 1 6 3 8 4 个,每个象素用个b y t e 表示灰度值,取值范围从0 2 5 5 。 图3 31 2 8 1 2 8 高度图 上海大学硕士学位论文 为了载入高度图,我们需要设置高度图的数据结构,因为高度图中仅包含 数据,不含有如j p e g 等文件中的标志位等信息,因此可以非常方便地设置高度 图结构体如下: 在这个结构体中,用一系列u n s i g n e dc h a r 变量来表示高度值,对应于灰度 图中每个象素的灰度值,取值范围为0 2 5 5 ,0 代表地形的最低处,2 5 5 代表 地形的最高处。另一个变量聊i s i z e 代表这张高度图的大小( mi s i z e mi s i z e ) , mi s i z e 的值必须为2 的幂( 大部分显卡只支持长宽都为2 的幂的贴图,否则会 导致贴图变形) 。 下面需要设计的就是地形类,首先需要一个s h e i g h td a t a 结构体的对 象,用来代表当前地形对应的高度图:为了能够动态地设置地形高度,我们需 要一个用来放缩地形高度的变量;最后一个是地形的大小,这个值和高度图的 大小mi s i z e 的值应该是相等的。在类方法中,我们需要一个载入高度图的函数, 在这个函数中使用灰度图来计算地形各顶点的高度;然后,一个渲染函数用来 将计算所得出的地形渲染到屏幕上。类结构如表3 1 所示。 表3 1 类结构图 i数据和函数俸掰 m _ _ h e i g h t d a t a 用来表示高度图,r a w 格式 mh e i g h t s c a l e 高度放缩值 ,挖i s i z e高度图大小 高度图载入模块,用来赋值 v o i d l o a d h e i g h t m a p ( c f i l e f i l e n a m e ) m _ h e i g h t d a t a ,m _ i s i z e 等参数 v o i du n l o a d h e i g h t m a p ( c f i l e f i l e n a m e ) 取消载入高度图 v o i d r e n d e r ( ) 渲染地形 1 9 上海大学硕士学位论文 载入图3 3 中的高度图,并把它作为高度图应用到地形上,最后生成的结 果如图3 4 所示。对比这两张图,灰度图上较暗的地方对应于地形上较低的海 拔,而较亮的地方对应于地形上较高的海拔。 图3 4 生成的地形 高度图最重要的作用就是为地形的各个顶点设置高度值,为了更加方便地 生成地形,可以为地形各项点随机赋高度值而不需要高度图,这就是地形的随 机生成。当然,需要特定的算法来保证所生成地形的平滑性以及合理性,本节 的目的是解释地形和高度图间的对应关系,关于地形随机生成在这里就不赘述 了。 3 3 地形贴图 地形贴图是地形模块中最重要的组成部分,只有为生成的地形赋予多样性 的贴图,才能够使地形体现出它应有的价值。理想的地形贴图能够表现出地表 的多样性,如草地、沙地、泥地、沼泽等等。 实现地形贴图最简单的方法就是美术人员直接为地形设计一张复杂的足够 精致的贴图,然后使用d i r e e t 3 d 中的库函数将它贴到地形网格上,但是这种方 法的缺点就是会花费美工人员大量的时间和精力,而且做出的贴图不能重复使 用,因此本文舍弃这种方法。微软在d i r e e t 3 d 中提供了纹理混和的功能【l l 】, 且多层贴图间能够设置权重,从而实现地表多样性。本文中也使用了类似的方 法,通过使用多张简单的纹理贴图来生成复杂的地貌贴图,美工只需要为不同 的地貌制作不同的贴图,如草地、沼泽、沙地等,大大降低了工作量。实现方 上海大学硕士学位论文 法分为以下几个步骤: 为地形创建一张纹理贴图,用来保存多张地貌贴图混和后的颜色值; 使用适当的方法计算多层贴图间的权重,并将最终混合的结果赋值给 生成的贴图: 设置贴图坐标,将生成的贴图应用在地形上,即进行地表渲染。 3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025鱼塘租赁合同样本
- 2025内蒙古鄂尔多斯生态环境职业学院专业技术人员招聘18人模拟试卷带答案详解
- 2025农业生产资料租赁合同范本
- 2025房屋租赁合同范本代理人
- 2025年马鞍山花山区社区工作者招聘40人模拟试卷及完整答案详解1套
- 纯化水考试题库及答案
- 船厂技师考试题库及答案
- 卫生应急考试题库及答案
- 应急救生员证考试题库及答案
- 2025年锅炉工岗位应知应会题库及答案
- GA 1551.6-2021石油石化系统治安反恐防范要求第6部分:石油天然气管道企业
- 各类机载娱乐系统快速操作指南6.24制
- 徐州的传统民俗
- 苏教版科学四年级上册3-1课件《力与运动》
- 服装企业生产工序分析
- 我的暑假生活PPT模板
- 井冈山井冈山-完整版PPT
- 高考语文一轮复习:语言文字运用之句子的表达效果课件45张
- 苏教版小学美术一年级上册全册课件
- DB11-T 775-2021多孔混凝土铺装技术规程
- Q∕GDW 11612.42-2018 低压电力线高速载波通信互联互通技术规范 第4-2部分:数据链路层通信协议
评论
0/150
提交评论