《仿真图形引擎技术.》由会员分享,可在线阅读,更多相关《仿真图形引擎技术.(6页珍藏版)》请在金锄头文库上搜索。
1、随着计算机软、硬件突飞猛进的发展,计算机图形学在各个行业的应用也得到迅速普及和深入。目前,计算机图形学己进入三维时代,三维图形在人们周围无所不在。科学计算可视化、计算机动画和虚拟现实已经成为近年来计算机图形学的三大热门话题,而这三大热门话题的技术核心均为三维图形。 由于三维图形涉及到许多算法和专业知识,要快速的开发三维应用程序是有一定困难的。当前在微机上编写三维图形应用一般使用 OpenGL 或DirectX,虽然 OpenGL 或 DirectX 在三维真实感图形制作中具有许多优秀的性能,但是在系统开发中直接使用它们仍存在一些缺点:1、都是非面向对象的,设计场景和操作场景中的对象比较困难。2
2、、主要使用基层图元,在显示比较复杂的场景时编写程序相对困难。3、没有与建模工具很好的结合。4、缺乏对一些十分重要的关键技术如 LOD(Level of Detail)、动态裁剪等的支持。基于以上情况,应用程序开发人员非常需要一个封装了硬件操作和图形算法、简单易用、功能丰富的三维图形开发环境,这个环境可以称作三维图形引擎。 引擎,是借用机器工业的同名术语,表明在整个系统中的核心地位。也可以称之为“支持应用的底层函数库”或者说是对特定应用的一种抽象。三维引擎需要解决场景构造、对象处理、场景渲染、事件处理、碰撞检测等问题。1. 3D 游戏引擎、仿真软件和图形引擎概述游戏引擎、仿真软件和图形引擎概述目
3、前 3D 图形技术大量应用于游戏和仿真领域,从技术实现上可分为基础层、中间层和应用层三个层次,如图 1 所示。基础层主要是 3D 加速硬件和厂商提供的基本的 API 函数接口;中间层则是根据游戏和仿真各自不同的需求编写的公共引擎或软件(在游戏领域多称之为 XX 游戏引擎,仿真方面一般称为 XX 仿真软件或 XX 仿真环境);应用层则是具体的游戏产品或仿真应用。可以看出,一个良好的游戏引擎(仿真软件)是一款游戏产品(仿真应用)的基础,在一个相对成熟的游戏引擎基础上,游戏开发商能很快地根据需要开发出相应的游戏产品,仿真软件商也能很快地为客户建立各种仿真应用。因此,在目前市场上,3D 开发的主要竞争
4、集中在中间层次,谁占领了这个层次,谁在竞争中就有更大的胜算,这也就是市场上有这么多各式各样种类繁多的引擎和开发包的原因。3D 游戏引擎和仿真软件同处于中间层,但他们各自有着不同的侧重,但有一点是共同的:他们都拥有强大的 3D 图形引擎作为表现输出的基础。图 1 3D 图形技术在游戏开发和仿真软件开发中的层次关系2. 3D 游戏引擎及相关产品游戏引擎及相关产品2.1 3D 游戏引擎游戏引擎3D 游戏引擎主要由如下几个方面组成: 3D 图形引擎 声音引擎 物理引擎 控制引擎 人工智能或游戏逻辑 游戏 GUI 界面(菜单) 游戏开发工具 支持局域网对战的网络引擎开发 支持互联网对战的网络引擎开发下面
5、逐一介绍每个部分:图形引擎图形引擎主要包含游戏中的场景(室内或室外)管理与渲染,角色的动作管理绘制,特效管理与渲染(粒子系统,自然模拟(如水纹,植物等模拟),光照和材质处理,LOD(Level Object Detail)管理等,另外还有图形数据转换工具开发,这些工具主要用于把美工用 DCC 软件(如3DS Max,Maya,Soft XSI,Soft Image3D 等)软件制作的模型和动作数据以及用 Photo shop 或 painter 等工具制作的贴图,转化成游戏程序中用的资源文件。声音引擎声音引擎主要包含音效(Sound Effect 简称 SE),语音(VOICE),背景音乐(B
6、ackground music 简称 BGM)的播放。SE 是指那些在游戏中频繁播放,而且播放时间比较短,但要求能及时无延迟的播放,VOICE 是指游戏中的语音或人声,这部分对声音品质要求比较高,基本上用比较高的采样率录制和回放声音,但和 SE 一样要求能及时无延迟的播放,SE 在有的时候因为内存容量的问题,在不影响效果的前提下,可能会降低采样率,但 VOICE 由于降低采样率对效果影响比较大,所以一般 VOICE 不采用降低采样率的做法。BGM 是指游戏中一长段循环播放(也有不循环,只播放一次)的背景音乐,正是由于 BGM 的这种特性,一般游戏的背景音乐是读盘(光盘或硬盘)来播放。另外一些高
7、级声音特效,如 EAX,数字影院系统(DTS5.1),数字杜比环绕等。物理引擎物理引擎主要包含游戏世界中的物体之间、物体和场景之间发生碰撞后的力学模拟, 以及发生碰撞后的物体骨骼运动的力学模拟(比较著名的物理引擎有 havok 公司的 game dynamics sdk,还有 open source 的 ODEOpen Dynamics Engine)。控制引擎控制引擎主要是把图形引擎、声音引擎、物理引擎整合起来,主要针对某个游戏制作一个游戏系统,其包含游戏关卡编辑器,主要用途是可以可视化的对场景进行调整,光照效果和雾化等效果调整,事件设置,道具摆放,NPC 设置,另外还有角色编辑器,主要用于
8、编辑角色的属性和检查动作数据的正确性。一般日本游戏公司的做法,他们会把关卡编辑器和角色编辑器直接做到游戏中,所有的参数调整都在游戏中通过调试菜单来进行编辑,所以一般他们把这部分调试菜单的功能做的很强大,同时在屏幕上实时的显示一些重要的信息,这样做的好处是关卡编辑器调整的效果直接就是游戏的效果,但是对于程序的重用性来说可能不是很好,比如说要用到另外一个游戏项目中就比较难,除非两个游戏类型相同,只要把场景和角色数据换一下,还有做下一代产品也没有问题,只要根据式样增加调试菜单的功能就可以了。人工智能和游戏逻辑开发人工智能和游戏逻辑开发,这部分日本和欧美的游戏开发模式也有很大不同,在欧美游戏公司中运用
9、脚本语言开发很普遍,所以这部分程序开发主要是用脚本语言编写,而且脚本程序和游戏程序的耦合性很低,有单独的编辑、编译和调试环境,这样比较利于游戏程序和关卡设计开发分开,同时并行开发,所以一般他们都会有专门做关卡设计的程序员岗位。而日本游戏公司脚本语言一般和游戏的耦合性比较高,一般通过一些语言的宏功能和一些编译器的特定功能来完成一个简单的脚本系统,所以一般这些脚本程序只能在游戏程序中进行调试,而不能在一个单独的脚本编辑,编译环境中进行开发。游戏游戏 GUI 界面(菜单)界面(菜单),主要是指那些游戏中用户界面设计,有做的复杂,有简单的,做的简单就是 2D GUI 界面,做的复杂有 3D GUI 界
10、面。游戏开发工具游戏开发工具主要包含关卡编辑器,角色编辑器,资源打包管理,DCC 软件的插件工具等开发。支持局域网对战的网络引擎开发支持局域网对战的网络引擎开发,主要解决局域网网络发包和延迟处理,通讯同步的问题,有同步通讯和异步通讯两种做法,异步通讯用于那些对运行帧速要求比较高的游戏,同步通讯相对异步通讯来说效率相对低,但是同步通讯的编程模型相对异步通讯来得简单一些。支持互联网对战的网络引擎开发支持互联网对战的网络引擎开发,目前大部分网游都是 C/S 结构的,服务器端软件配置管理,服务器程序的最优化,还有游戏大厅、组队、游戏逻辑处理、道具管理、收费系统等。另外还有一些网络系统是 C/S 和 P
11、2P 两种结构混合的,如 XBOX Live 等。2.2 主要主要 3D 游戏引擎产品游戏引擎产品(1)id Software 公司的公司的 Quake、Quake II 和和 Quake III 引擎。引擎。id Software 堪称是全球游戏产业第一技术供应商,有大量的游戏基于该公司的Quake 系列引擎进行开发,著名的半条命采用的就是 Quake 和 Quake II 引擎的混合体。Quake II 的授权模式大致如下:基本许可费从 40 万美元到 100 万美元不等,版税金视基本许可费的多少而定,40 万美元的许可费大约需提取 10%以上的版税金,100 万美元的许可费则提取很少一部
12、分版税金。另外,目前 Quake III 引擎价格大约为 70 万美元。?/P图 2 游戏半条命 2效果图(2)Epic Megagames 公司(即现在的公司(即现在的 Epic 游戏公司)的游戏公司)的 Unreal Tournament 引擎。引擎。从画面方面看 Unreal Tournament 引擎和 Quake 差不多,但在联网模式上,Unreal 不仅提供有死亡竞赛模式,还提供有团队合作等多种激烈火爆的对战模式,另外 Unreal Tournament 引擎不仅可以应用在动作射击游戏中,还可以为大型多人游戏、即时策略游戏和角色扮演游戏提供强有力的 3D 支持。Unreal 2 的
13、买断价是 75 万美元,或者 35 万美元买下开发许可权,而后从售出的每一份游戏中提取版税金。?/P图 3 Unreal Tournament 2007 效果图(3)Monolith 公司的公司的 LithTech 引擎。引擎。LithTech 引擎的开发共花了整整五年时间,耗资 700 万美元,LithTech 引擎除了本身的强大性能外,最大的卖点在于详尽的服务,除了 LithTech 引擎的源代码和编辑器外,购买者还可以获得免费的升级、迅捷的电子邮件和电话技术支持,LithTech引擎的平均价格大约在 25 万美元左右。(4)3D GameStudio。德国开发的 3D 游戏著名工具软件,
14、已经有上百种使用该引擎的游戏公开发行。3D GameStudio 引擎结合了高端的 3D引擎,2D 引擎,物理引擎,地图和建模编辑器,脚本编译器和大量的 3D 物体库,工艺品和半成品的游戏,使得更容易的制作第一人称游戏、第三人称游戏、角色扮演游戏、滚屏游戏、飞行模拟器、棋类游戏、运动类游戏、及时战略游戏以及虚拟展示应用程序。该产品官方价格大约为人民币 9000 元。http:/ 主要主要 3D3D 图形引擎图形引擎3D 图形引擎作为一种底层工具支持着高层的图形软件开发,可以把它看成是对 3D API 的封装,对一些图形通用算法的封装,对一些底层工具的封装。前面第 2、3 节所提到的各种游戏引擎
15、和仿真软件或是自己开发 3D 图形引擎,或是购买成熟的 3D 图形引擎进行开发,或是合作开发,或是利用现有的开源图形引擎进行开发。总之,3D 图形引擎是游戏引擎和仿真软件的开发基础。目前除了一些游戏厂商自己开发的 3D 图形引擎外,常见的 3D 图形引擎有 OpenGVS、VTree、OSG。4.14.1 OpenGVSOpenGVSOpenGVS 是 Quantum3D 公司的产品,用于场景图形的视景仿真的实时开发,易用性和重用性好,有良好的模块性、巨大的编程灵活性和可移植特性。OpenGVS 提供了各种软件资源,利用资源自身提供的 API,可以很好地以接近自然和面向对象的方式组织视景诸元和
16、进行编程,来模拟视景仿真的各个要素。OpenGVS 现已成为世界上最强大的 3D 应用开发工具之一。目前,OpenGVS 的最新版本为 4.5,支持 Windows 和 Linux 等操作系统。OpenGVS 包含了一组高层次的、面向对象的 C+应用程序接口(API),它们直接架构于 OpenGL、Glide 和 Direct3D 上。也就是说,OpenGVS 既封装了繁杂的底层图形驱动函数,又保持了良好的性能,它的一个功能函数调用,等同于普通的上百或上千行图形编程代码。开发者只需用少量代码就可以快速生成高质量的 3D 应用软件。图 6 OpenGVS 效果图OpenGVS 的 API 分为相机、通道、烟雾、帧缓冲、几何、光源、对象、场景、工具、特效等各组资源,开发者可以按照应用的需要调用这些资源来驱动硬件实时产生所需的图形和效果。OpenGVS 针对 Intel P、P4 处理器进行了高度优化,能让应用达到最佳运行性能。OpenGVS 市场报