基于D3D的三维游戏引擎的设计与实现.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《基于D3D的三维游戏引擎的设计与实现.pdf》由会员分享,可在线阅读,更多相关《基于D3D的三维游戏引擎的设计与实现.pdf(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第6卷 第10期 2006年5月167121815(2006)1021431206科 学 技 术 与 工 程Science Technology and EngineeringVol.6No.10May 2006 2006Sci.Tech.Engng.基于D3D的三维游戏引擎的设计与实现樊 翠 王丽芳3(西北工业大学软件与微电子学院,西安710065)摘要 设计了一种基于Direct3D的三维游戏引擎的框架结构及各个模块的相互关系。并给出了纹理映射、加密解密、GU I的设计、和系统接口的实现方法。关键词 游戏引擎 三维游戏 纹理映射中图法分类号 TP317.4;文献标识码 B2006年1月19
2、日收到第一作者简介:樊翠,(1981),男,江西南昌人,西北工业大学硕士研究生,研究方向:网络游戏引擎,网络游戏设计。3 通信作者简介:王丽芳,女,西北工业大学计算机学院,副教授。2003年,我国科技部首次将网络游戏技术纳入国家863科技发展计划,这标志着国家对年增长率近3倍、带动上下游经济增长超过10倍的网络游戏产业态度明朗化。在网络游戏发展、运营、管理等诸方面,与日、韩、欧、美等国和地区相比,我国还存在较大差距。三维游戏中的关键就是游戏引擎的研发。研究三维游戏引擎中的关键技术成为当前的重点。游戏引擎就是在对部分通用技术细节进行整理和封装的基础上,形成一个面向游戏应用的应用程序接口(API)
3、函数(我们称之为“引擎”),使得游戏开发人员不必再关心底层技术的实现细节,大大减少开发人员的工作难度和工作量,缩短开发周期。所谓引擎,是借用了机器工业的同名术语,表明其在整个系统中的核心地位。在这里,也可以把它称之为“支持应用的底层函数集”,或者说是对特定应用的一种抽象。引擎最大的特点就是具有“驱动性”,即引擎仅仅在功能上支持某个方面的应用,但具体的实现细节则依赖于应用本身。其次,引擎具有“完整性”的特点,即引擎是能完整实现某个方面功能的函数集。第三,引擎还具有“独立性”的特点,即引擎可以不依赖于具体的应用而独立存在。游戏引擎一般包含渲染、编辑工具、物理学、人工智能、网络等内容。1D irec
4、t3D硬件访问方式 1通常的应用程序对硬件设备的访问是通过调用图形设备接口(graphics device interface,GD I)来实现的。由于GD I的技术局限,使得应用程序不能高效地访问或操作硬件资源,难以用来开发复杂的三维应用程序如三维游戏、OpenGL和Direct3D,以提供了更专业的图形硬件访问接口,见图1。Open2GL的三维重建功能主要通过直接访问DD I来实现。由于DD I的通用性降低了对图形硬件的访问效率。Direct3D则提供了访问图形设备的立即模式,该模式通过硬件抽象层(hardware abstraction lay2er,HAL)获得更高效率。HAL还允许图
5、形硬件在渲染、光栅化等方面保留自己独特的性能,从而获得更优化的显示效果。图1W indow环境下不同三维应用程序访问图形厉件的方式2 三维游戏引擎的框架结构游戏引擎是游戏中与具体的游戏无关的核心技术部分,而游戏的部分就是场景和角色模型、动画、声音和代码等其他控制部分。经过游戏业的不断的发展,如今的游戏引擎己经发展为一套由多个子系统共同构成的复杂系统。一般这些引擎都是3D游戏引擎,从建模、动画到光影、粒子特效,从物理系统、碰撞检测到文件管理、网络特性,还有专业的编辑工具和插件,几乎涵盖了开发过程中的所有重要环节。2.13D游戏引擎的一般功能组成 221111 光影特效场景中的光源对处于其中的人和
6、物的影响方式。游戏的光影效果完全是由引擎控制的,折射、反射等基本的光学原理以及动态光源、彩色光源等高级效果都是通过引擎的不同编程技术实现的。21112 渲染引擎它是引擎最重要的功能之一,负责游戏画面的实时渲染(real2time rendering)。当3D模型制作完毕之后,美工会按照不同的面把材质贴图赋予模型,这相当于为骨骼蒙上皮肤,最后再通过渲染引擎把模型、动画、光影、特效等所有效果实时计算出来并展示在屏幕上。渲染引擎在引擎的所有部件当中是最复杂的,它的强大与否直接决定着最终的输出画面质量。21113 动画系统目前游戏所采用的动画系统可以分为两种:一是骨骼动画系统,一是模型动画系统。前者用
7、内置的骨骼带动物体产生运动,比较常见;后者则是在模型的基础上直接进行变形。引擎把这两种动画系统预先植入游戏,方便动画师为角色设计丰富的动作造型。其中物理系统控制物体的运动遵循固定的规律;例如,当角色跳起的时候,系统内定的重力值将决定他能跳多高,以及他下落的速度有多快;子弹的飞行轨迹、车辆的颠簸方式也都是由物理系统决定的。碰撞检测汇(collision detection)是物理系统的核心部分,它可以探测游戏中各物体的物理边缘。当两个3D物体撞在一起的时候,这种技术可以防止它们相互穿过。21114 输入控制模块引擎还有一个重要的职责就是负责玩家与电脑之间的沟通,处理来自键盘、鼠标、摇杆和其它外设
8、的信号。如果游戏支持联网特性的话,网络通信代码也会被集成在引擎中,用于管理客户端与服务器之间的通信。21115 音效模块处理游戏世界所有音效,包括背景音乐和各种事件声音的管理和播放,一些高性能的游戏引擎还能实现3D音效和环境环绕音等复杂的功能。21116 人工智能模块为游戏中的非玩家控制角色的行为和决策提高智能支持,游戏中人工智能在现代游戏引擎中越来越重要,它直接影响到游戏的可玩性和游戏设计的复杂性。2.2 三维游戏引擎各功能模块之间的关系游戏引擎中的每个模块并不是独立存在的,模块与模块之间有调用与被调用、包含与被包含的关系。图2描述的是一个基于Direct3D的3D游戏引擎模块图。3 游戏引
9、擎的部分关键技术研究3.1 纹理映射技术 3纹理映射技术是近几年来发展最快的技术之一,广泛应用于三维真实感图形的生成与显示中。运用纹理映射可以方便地制作真实感图形而不花更多的时间去考虑物体的表面细节,纹理映射的本质是对三维物体进行二维参数化,即先求得三维物体表面上任一点的二维(u,v)参数值,进而得到该点的纹理值,最终生成三维图形表面上的纹理图案。在光滑曲面上添加纹理图案的核心问题是映射,因此纹理问题可以简化为从一个坐标系到另一个坐标系的变换。其中至少涉及两个映射,一个是从纹理空间到景物空间,有时也称为曲面参数化;2341科 学 技 术 与 工 程6卷图2基于Direct3D的3D游戏引擎模块
10、图注:虚箭头表示调用关系。第二个映射是从景物空间到图像(屏幕)空间,即取景变换。通常,这两个变换被合成为一个变换。如果纹理图案定义在纹理空间中一个正交坐标系(u,v)中,曲面定义在景物空间的正交坐标系(x,y,z)中,它在参数空间(,)的表示为x(,),y(,),z(,),那么在曲面上添加纹理将涉及在两曲面之间确定或指定一个映射函数。例如,从纹理空间到参数空间的映射为:=f(u,v),=g(u,v)(1)从参数空间到纹理空间的逆映射为:u=r(,),v=s(,)(2)OpenGL提供两类纹理,其中一类纹理图像的大小必须是几何级数的,另一类MipMap纹理可为任意大小。3.2基于XML的GUI(
11、图形用户界面)的设计方案 为了提高游戏开发的效率,特别是图形用户界面的开发,用XML来描述游戏中的图形界面显得非常重要。所有的界面如对话框、按纽、编辑框、列表框等都是通过读取相应的XML文本来实现的。下面举一个游戏登陆界面为例:dialog id=”1”text=”游戏登入框”xpos=”0”ypos=”0”height=”200”width=”300”static id=”2”text=”用户名”xpos=”100”ypos=”40”height=”20”width=”100”/staticedit id=”3”text=”xpos=”180”ypos=”40”height=”20”widt
12、h=”200”type=”0”/editstatic id=”4”text=”密码”xpos=”100”ypos=”80”height=”20”width=”100”/staticedit id=”5”text=”xpos=”180”ypos=”80”height=”20”334110期樊 翠:基于D3D的三维游戏引擎的设计与实现width=”200”type=”1”/editbuttom id=”6”text=”确定”xpos=”100”ypos=”130”height=”20”width=”100”/buttombuttom id=”7”text=”取消”xpos=”180”ypos=”1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 D3D 三维 游戏 引擎 设计 实现
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内