1、随着计算机软、硬件突飞猛进的发展,计算机图形学在各个行业的应用也得到迅速普及和深入。目前,计算机图形学己进入三维时代,三维图形在人们周围无所不在。科学计算可视化、计算机动画和虚拟现实已经成为近年来计算机图形学的三大热门话题,而这三大热门话题的技术核心均为三维图形。 由于三维图形涉及到许多算法和专业知识,要快速的开发三维应用程序是有一定困难的。当前在微机上编写三维图形应用一般使用 OpenGL 或DirectX,虽然 OpenGL 或 DirectX 在三维真实感图形制作中具有许多优秀的性能,但是在系统开发中直接使用它们仍存在一些缺点:1、都是非面向对象的,设计场景和操作场景中的对象比较困难。2
2、、主要使用基层图元,在显示比较复杂的场景时编写程序相对困难。3、没有与建模工具很好的结合。4、缺乏对一些十分重要的关键技术如 LOD(Level of Detail)、动态裁剪等的支持。基于以上情况,应用程序开发人员非常需要一个封装了硬件操作和图形算法、简单易用、功能丰富的三维图形开发环境,这个环境可以称作三维图形引擎。 引擎,是借用机器工业的同名术语,表明在整个系统中的核心地位。也可以称之为“支持应用的底层函数库”或者说是对特定应用的一种抽象。三维引擎需要解决场景构造、对象处理、场景渲染、事件处理、碰撞检测等问题。1. 3D 游戏引擎、仿真软件和图形引擎概述目前 3D 图形技术大量应用于游戏
3、和仿真领域,从技术实现上可分为基础层、中间层和应用层三个层次,如图 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),背景音乐(Background music 简称 BGM)的播放。SE 是指那些在游
6、戏中频繁播放,而且播放时间比较短,但要求能及时无延迟的播放,VOICE 是指游戏中的语音或人声,这部分对声音品质要求比较高,基本上用比较高的采样率录制和回放声音,但和 SE 一样要求能及时无延迟的播放, SE 在有的时候因为内存容量的问题,在不影响效果的前提下,可能会降低采样率,但 VOICE 由于降低采样率对效果影响比较大,所以一般 VOICE 不采用降低采样率的做法。 BGM 是指游戏中一长段循环播放(也有不循环,只播放一次)的背景音乐,正是由于 BGM 的这种特性,一般游戏的背景音乐是读盘(光盘或硬盘)来播放。另外一些高级声音特效,如 EAX,数字影院系统(DTS5.1),数字杜比环绕等
7、。物理引擎主要包含游戏世界中的物体之间、物体和场景之间发生碰撞后的力学模拟, 以及发生碰撞后的物体骨骼运动的力学模拟(比较著名的物理引擎有 havok 公司的 game dynamics sdk,还有 open source 的 ODEOpen Dynamics Engine)。控制引擎主要是把图形引擎、声音引擎、物理引擎整合起来,主要针对某个游戏制作一个游戏系统,其包含游戏关卡编辑器,主要用途是可以可视化的对场景进行调整,光照效果和雾化等效果调整,事件设置,道具摆放,NPC 设置,另外还有角色编辑器,主要用于编辑角色的属性和检查动作数据的正确性。一般日本游戏公司的做法,他们会把关卡编辑器和角
8、色编辑器直接做到游戏中,所有的参数调整都在游戏中通过调试菜单来进行编辑,所以一般他们把这部分调试菜单的功能做的很强大,同时在屏幕上实时的显示一些重要的信息,这样做的好处是关卡编辑器调整的效果直接就是游戏的效果,但是对于程序的重用性来说可能不是很好,比如说要用到另外一个游戏项目中就比较难,除非两个游戏类型相同,只要把场景和角色数据换一下,还有做下一代产品也没有问题,只要根据式样增加调试菜单的功能就可以了。人工智能和游戏逻辑开发,这部分日本和欧美的游戏开发模式也有很大不同,在欧美游戏公司中运用脚本语言开发很普遍,所以这部分程序开发主要是用脚本语言编写,而且脚本程序和游戏程序的耦合性很低,有单独的编
9、辑、编译和调试环境,这样比较利于游戏程序和关卡设计开发分开,同时并行开发,所以一般他们都会有专门做关卡设计的程序员岗位。而日本游戏公司脚本语言一般和游戏的耦合性比较高,一般通过一些语言的宏功能和一些编译器的特定功能来完成一个简单的脚本系统,所以一般这些脚本程序只能在游戏程序中进行调试,而不能在一个单独的脚本编辑,编译环境中进行开发。游戏 GUI 界面(菜单),主要是指那些游戏中用户界面设计,有做的复杂,有简单的,做的简单就是 2D GUI 界面,做的复杂有 3D GUI 界面。游戏开发工具主要包含关卡编辑器,角色编辑器,资源打包管理,DCC 软件的插件工具等开发。支持局域网对战的网络引擎开发,
10、主要解决局域网网络发包和延迟处理,通讯同步的问题,有同步通讯和异步通讯两种做法,异步通讯用于那些对运行帧速要求比较高的游戏,同步通讯相对异步通讯来说效率相对低,但是同步通讯的编程模型相对异步通讯来得简单一些。支持互联网对战的网络引擎开发,目前大部分网游都是 C/S 结构的,服务器端软件配置管理,服务器程序的最优化,还有游戏大厅、组队、游戏逻辑处理、道具管理、收费系统等。另外还有一些网络系统是 C/S 和 P2P 两种结构混合的,如 XBOX Live 等。2.2 主要 3D 游戏引擎产品(1)id Software 公司的 Quake、Quake II 和 Quake III 引擎。id So
11、ftware 堪称是全球游戏产业第一技术供应商,有大量的游戏基于该公司的Quake 系列引擎进行开发,著名的半条命采用的就是 Quake 和 Quake II 引擎的混合体。Quake II 的授权模式大致如下:基本许可费从 40 万美元到 100 万美元不等,版税金视基本许可费的多少而定,40 万美元的许可费大约需提取 10%以上的版税金,100 万美元的许可费则提取很少一部分版税金。另外,目前 Quake III 引擎价格大约为 70 万美元。?/P图 2 游戏半条命 2效果图(2)Epic Megagames 公司(即现在的 Epic 游戏公司)的 Unreal Tournament 引
12、擎。从画面方面看 Unreal Tournament 引擎和 Quake 差不多,但在联网模式上,Unreal 不仅提供有死亡竞赛模式,还提供有团队合作等多种激烈火爆的对战模式,另外 Unreal Tournament 引擎不仅可以应用在动作射击游戏中,还可以为大型多人游戏、即时策略游戏和角色扮演游戏提供强有力的 3D 支持。Unreal 2 的买断价是 75 万美元,或者 35 万美元买下开发许可权,而后从售出的每一份游戏中提取版税金。?/P图 3 Unreal Tournament 2007 效果图(3)Monolith 公司的 LithTech 引擎。LithTech 引擎的开发共花了整
13、整五年时间,耗资 700 万美元,LithTech 引擎除了本身的强大性能外,最大的卖点在于详尽的服务,除了 LithTech 引擎的源代码和编辑器外,购买者还可以获得免费的升级、迅捷的电子邮件和电话技术支持,LithTech引擎的平均价格大约在 25 万美元左右。(4)3D GameStudio。德国开发的 3D 游戏著名工具软件,已经有上百种使用该引擎的游戏公开发行。3D GameStudio 引擎结合了高端的 3D引擎,2D 引擎,物理引擎,地图和建模编辑器,脚本编译器和大量的 3D 物体库,工艺品和半成品的游戏,使得更容易的制作第一人称游戏、第三人称游戏、角色扮演游戏、滚屏游戏、飞行模
14、拟器、棋类游戏、运动类游戏、及时战略游戏以及虚拟展示应用程序。该产品官方价格大约为人民币 9000 元。http:/ 主要 3D 图形引擎3D 图形引擎作为一种底层工具支持着高层的图形软件开发,可以把它看成是对 3D API 的封装,对一些图形通用算法的封装,对一些底层工具的封装。前面第 2、3 节所提到的各种游戏引擎和仿真软件或是自己开发 3D 图形引擎,或是购买成熟的 3D 图形引擎进行开发,或是合作开发,或是利用现有的开源图形引擎进行开发。总之,3D 图形引擎是游戏引擎和仿真软件的开发基础。目前除了一些游戏厂商自己开发的 3D 图形引擎外,常见的 3D 图形引擎有 OpenGVS、VTr
15、ee、OSG。4.1 OpenGVSOpenGVS 是 Quantum3D 公司的产品,用于场景图形的视景仿真的实时开发,易用性和重用性好,有良好的模块性、巨大的编程灵活性和可移植特性。OpenGVS 提供了各种软件资源,利用资源自身提供的 API,可以很好地以接近自然和面向对象的方式组织视景诸元和进行编程,来模拟视景仿真的各个要素。OpenGVS 现已成为世界上最强大的 3D 应用开发工具之一。目前,OpenGVS 的最新版本为 4.5,支持 Windows 和 Linux 等操作系统。OpenGVS 包含了一组高层次的、面向对象的 C+应用程序接口(API),它们直接架构于 OpenGL、
16、Glide 和 Direct3D 上。也就是说,OpenGVS 既封装了繁杂的底层图形驱动函数,又保持了良好的性能,它的一个功能函数调用,等同于普通的上百或上千行图形编程代码。开发者只需用少量代码就可以快速生成高质量的 3D 应用软件。图 6 OpenGVS 效果图OpenGVS 的 API 分为相机、通道、烟雾、帧缓冲、几何、光源、对象、场景、工具、特效等各组资源,开发者可以按照应用的需要调用这些资源来驱动硬件实时产生所需的图形和效果。OpenGVS 针对 Intel P、P4 处理器进行了高度优化,能让应用达到最佳运行性能。OpenGVS 市场报价大约为 8 万人民币。4.2 Quantu
17、m3D VTREEQuantum3D VTREE SDK(原来的 CG2 VTREE,后被 Quantum3D 收购)是一个面向对象,基于便携平台的图象开发软件包(SDK)。VTREE SDK 包括大量的 C+类和压缩抽象 OpenGL 图形库、数组类型及操作的方法。VTREE SDK 功能强大,能够节省开发时间,获得高性能的仿真效果。利用此工具包开发者可充分展开想象力,置身于鲜活的虚拟世界中.比如战场战术的实现、探索火星表面的过程等。对于希望得到跨平台、高性能低成本、可实时响应虚拟仿真应用 VTREE 无疑是最佳选择。VTREE 包含一系列的配套 C+类库适用于开发高品质,高效的 VTREE
18、 应用。VTREE 提供的扩展功能成功地兼容并融合了复杂的 OpenGL-API 接口。VTREE 应用可运行于支持 OpenGL 的 Windows 和 Unix 类型的平台。VTREE 显示效率非常高,实际使用过程中给人感觉是非常快的。其原因一方面在于 VTREE 全新设计和优化了程序代码,另一方面在于 VTREE 显示控制的策略。VTREE 生成和连接不同节点到一个附属于景物实体的可视化树状结构,这个可视化树状结构定义了如何对实体进行渲染和处理。一个实体由一个所有图形原始状态组成的渲染树和定义如何使实体显示的接合部分所组成。实体的渲染树包含所有这些实体的几何特性、运动特性和纹理节点。这些
19、树状结构对于实体的细节描述能变得非常精细,并且通过不同的路径能够显示用于优化的不同的细节等级划分(LOD)。VTREE 针对仿真视景显示中可能用到的技术和效果,如仪表、平显、雷达显示、红外显示、雨雪天气、多视口、大地形数据库管理、3D 声音、游戏杆、数据手套等等,均有相应的支持模块。4.3 OSG(Open Scene Graph)OSG 是一个可移植的、高层图形工具箱,它为战斗机仿真、游戏、虚拟现实、或科学可视化等高性能图形应用而设计。它提供了基于 OpenGL 的面向对象的框架,使开发者不需要实现、优化低层次图形功能调用,并提供了很多附加的功能模块来加速图形应用开发。图 7 OSG 效果图
20、另外,OSG 是自由软件,公开源码,完全免费。用户可自由修改,来进一步完善功能。目前已经有很多成功的基于 OSG 的 3D 应用,效果不亚于商业视景渲染软件。如果要自主开发视景渲染软件,OSG 是最佳的基础架构选择。4.4 OGRE(Object-oriented Graphics Rendering Engine)OGRE 是一款开放原代码的面向对象的图形渲染引擎,它是由一个小而强的团体编写并维护,由许多团体共同开发的。在互联网上被公认为是至今为止最好的免费并开放的引擎。引擎中的类库对更底层的系统库(如:Direct3D 和 OpenGL)的全部使用细节进行了抽象,并提供了基于现实世界对象的
21、接口和其它类。图 8 OGRE 效果图 5. 相关名词OpenGL:是近几年发展起来的一个性能卓越的三维图形标准,它是在 SGI 等多家世界闻名的计算机公司的倡导下,以 SGI 的 GL 三维图形库为基础制定的一个通用共享的开放式三维图形标准。目前,包括 Microsoft、SGI、IBM、DEC、SUN、HP 等大公司都采用了 OpenGL 作为三维图形标准,许多软件厂商也纷纷以 OpenGL 为基础开发出自己的产品,其中比较著名的产品包括动画制作软件 Soft Image 和 3D Studio MAX、仿真软件 Open Inventor、VR 软件 World Tool Kit、CAM 软件 ProEngineer、GIS 软 ARC/INFO 等等。Direct3D (D3D):是微软为提高 3D 游戏在 Win 95/98 中的显示性能而开发的显示程序,目前已经升级到 9.0 版本,而且支持 XP 等微软最新的操作系统,它提供了丰富的 3D 功能库,是游戏广泛采用的标准。