system: [SYSTEM]

user: 2. 三维图形引擎研究现状 2.1. 国外研究现状 2.1.1. 虚拟现实的发展 SRI研究中心建立了“视觉感知计划”，研究现有VR技术的进一步发展。1991年后，SRI进行了利用VR技术对军用飞机或车辆驾驶的训练研究。另外，SRI中心还利用遥控技术进行外科手术仿真的研究[ 4 ] 。 美国北卡罗来纳大学(UNC)的计算机系是VR研究最早最著名的大学。他们主要研究分析建模、航空驾驶、外壳手术仿真、建筑仿真等技术。由Brooks教授领导的小组成功研制了第一个用于建筑设计的Walk-through虚拟建筑漫游系统，用户可以在虚拟的UNC计算机系大楼里面漫游[ 5 ] 。 伊利诺斯州立大学研制出在车辆设计中，支持远程协作的分布式VR系统。不同国家、不同地区的工程师们可以通过计算机网络实时协作进行设计。研究人员在系统中采用了虚拟原型，从而减少了设计图像和新产品进入市场的时间，而且可以在新产品生产之前就能对其进行估算和测试，这样就大大地提高了产品质量[ 6 ] 。 美国宇航局(NASA)的Ames实验室完善了HMD，并将VPL的数据手套工程化，使其称为可用性较高的产品。NASA研究的重点放在空间站操纵的实时仿真上，大多数研究是在NASA的约翰逊空间中心完成的。他们大量运用了面向座舱的飞行模拟技术。NASA完成的一项著名的工作是对哈勃太空望远镜的仿真[ 6 ] 。 美国UC Berkeley漫游工作室在建筑漫游方面的工作颇具代表性。他们对Berkeley大学计算机系大楼Soda Hall进行了模拟漫游，用于及时发现并修正了建筑设计中存在的缺陷。Soda Hall模型由1418807个多边形构成，占据21.5M硬盘空间，使用了406中材质及58种不同纹理。由于研究小组开发了高效的漫游引擎，实现了Soda Hall在SGI Power Series 320平台上的实时漫游[ 6 ] 。 麻省理工大学(MIT)是一个一直走在最新技术前沿的科学研究机构。MIT原先就是研究人工智能、机器人和计算机图形学以及动画的先锋。这些技术都是虚拟现实技术的基础。MIT在1985年成立了媒体实验室，进行虚拟环境的正规研究。媒体实验室建立了一个名叫BOLIO的测试环境，用于进行不同图形仿真技术的实验。利用这一环境，MIT建立了一个虚拟环境下的对象运动跟踪动态系统[ 6 ] 。 2.1.2. 三维图形引擎的发展 最早的一款图形引擎Space Rogue诞生于1990年，由Origin System公司开发，这个引擎的出现给以后的引擎带来了一个惯例，就是用游戏名来命名引擎名，一直沿用至今。可惜受限于当时的物理运算能力，引擎的运算速度也被完全限制了，以至于这款引擎运行在386配置上的引擎，在486的机器上运行显得非常吃力。虽然这款引擎并未取得太大的成功，但是它却为游戏开发带来了春天，此后图形引擎如雨后春笋般一发不可收拾[ 7 ] 。 1992年，由NovaLogic公司开发的Voxel引擎问世，在此引擎基础上开发的作品有很多闻名于世的，包括命令与征服、红色警戒2、三角洲等等。它在3D领域的尝试上迈出了重要的一步，结合体积和像素的概念，让2D的块拥有了高度，使图形更加平滑翔实。 1993年，ID Software公司开发了ID tech引擎，与此同时出现的就是大名鼎鼎的世界第一款三维第一人称射击游戏——DOOM，尽管它知识一款伪3D的引擎，但在当时主流VGA显卡的环境纹理映射渲染技术的支持下，让玩家在一台386机器上就可以领略到DOOM的风采[ 7 ] 。同年，一款更加出名的游戏《毁灭公爵》让其开发引擎Build名声大噪。 1995年，世界第一款真正的三维引擎Xngine终于横空出世，带来了著名的上古卷轴系列，创造出真实的游戏世界。一年以后由ID Software公司开发的Quake引擎，采用了大量技术包括Z-buffer，三维光源以及抗锯齿等，使雷神之锤占据了游戏的主流，也预示着三维图形引擎开始走向成熟。 在此之后，越来越多的商业三维图形引擎涌现出来，如RenderWare，Quake II/ID Tech2，Cyan Plasma，GoldSRC，Unreal，Lithtech，Outcast，Quake III/ID Tech 3，GeoMod，Torque，Serious，Max-FX。几乎每一个引擎的名字都代表了新技术的发展，都代表着一个著名游戏系列的出现，都意味着一次图形学技术的进步，都使得图形引擎产业更加繁荣。 到现在为止，一个又一个的优秀引擎将游戏图形技术推向了更高峰，以CryEngine 2和Unreal 3为代表的优秀引擎更是在当前硬件条件支持下，将各种游戏图形发展到一个登峰造极的高度[ 7 ] 。游戏开发者完全可以利用引擎所给出的API快读的开发出极高质量的游戏，而不需要再编写大量冗余的代码，真正达到了所见即所玩的程度。 2.2. 国内研究现状 北京航空航天大学计算机系是国内最早研究VR技术，最有权威的单位之一。他们进行了一些基础知识的研究，并开发了自己的虚拟现实运用系统平台，设计了虚拟环境漫游引擎，实现了诸如虚拟校园、飞行员模拟训练、房地产项目虚拟花园、虚拟珠峰漫游等项目[ 6 ] 。 清华大学计算机系对虚拟现实和临场感方面进行了研究，在球面屏幕现实和图像随动、克服立体图闪烁的措施和深度感实验等方面都具有不少独特的方法。 浙江大学CAD&CG国家重点实验室开发出了一套桌面型虚拟建筑环境实时漫游系统。该系统采用了层面叠加的绘制技术和预消隐技术，实现了立体视觉，同时还提供了方便的交互工具，使整个系统的实时性和画面真实感都达到了较高的水平。另外，他们还改进了快速漫游算法和递进网格的快速生成算法，开发了虚拟紫禁城等虚拟环境漫游项目[ 4 ] 。 四川大学计算机学院开发了一条基于OpenGL的三维图形引擎Object-3D，该系统在微机上使用Visual C++5.0语言实现，其主要特征是：采用面向对象机制；与建模工具如3D Max，MutiGen相结合；对用户屏蔽一些底层图形操作；支持常用三维图形显示技术；支持动态裁剪技术等[ 5 ] 。 中国地质大学分析了基于微机的三维应用程序的结构特点，提出了一个基于OpenGL和Direct 3D两种3D API的三维图形引擎结构框架。该框架已经成功应用到他们自己开发的系统“三维城市景观浏览器Map3DViewer”中，并收到了较好的效果[ 5 ] 。 2003年，国家863计划正式将游戏引擎的研发纳入国家高科技发展计划，并将研发的任务交给了金山公司。金山公司的负责人也表示，他们已经开发出一个比较完善的引擎并应用与游戏开发中，最具代表性的游戏就是《剑网3》。该引擎应用“植被渲染、地形渲染、Nomal Map、Speed Tree、柔体程序算法”等先进技术，从而保证游戏的画面的真实感。 2007年涂鸦软件发布的Origo Engine (起点引擎)是国内第一款商用三维图形引擎，作为国内商用三维图形引擎的起点，其绘制质量和效率都有不错表现，初步具备与国外引擎竞争的实例。 2012年，畅游自主研发的Darkfire Engine (黑火引擎)发布，该引擎是专为次世代游戏开发而生的三维游戏引擎，其集成了主流的光影特效算法，在表现力上更上了一个台阶。 此后，由于各三维引擎的发展，出现了一大批游戏和影视特效公司，如网易、搜狐、巨人集团以及水晶石数字科技有限公司等等。并且很多大学也相继建立了图形学国家重点实验室，开始研究虚拟现实和三维图形引擎的理论知识，开发了自主的图形引擎并实现了一批又一批的应用系统。 中山大学信息技术教育部重点实验室自主研发了一款基于XNA/Sliverlight的三维图形引擎，该引擎能够很好地仿真出自然场景中的物体，包括天空、水、雨、树木等，并具有良好的柔和阴影贴图功能。目前基于该引擎，该实验室与各相关部门合作开发了大量的虚拟展示平台，效果良好。 2.3. 主流三维引擎介绍 一些极具影响力的公司开发了一批应用于游戏方面的三维图形引擎，下面将分别介绍主要的几个引擎[ 8 ] ： 2.3.1. Quake(雷神)系列引擎 Castel Wolfenstein 3D (1992)是第一款被游戏玩家广泛接受的3D第一人称射击类游戏(FPS)。这款游戏是由总部位于Texas的Id Software公司为PC平台开发的，它为游戏产业的发展指明了一个激动人心的新方向。Id Software公司随后又接连开发了Doom、Quake、Quake II和Quake III四款游戏，这四款游戏所使用的三维图形引擎架构类似，我们统称为Quake系列引擎。 Quake在三维图形引擎发展过程中具有里程碑的意义，它具备了现在三维图形引擎的雏形，并激励了后来者们的研发热情。许多基于Quake技术构建的游戏，并非是直接使用Quake引擎构建的，而是通过一些其他的游戏或平台间接地使用到Quake技术。事实上，Valve公司的Source引擎最初也根植于Quake技术[ 9 ] 。 2.3.2. Unreal (虚幻)系列引擎 Epic Games Inc.公司在1998年突然出现在第一人称射击类游戏领域，并带来了一个传奇性的游戏Unreal。从那之后，Unreal引擎就一直是Quake引擎在FPS领域最大的竞争对手。Unreal Engine 2(UE2)引擎是Unreal Tournament 2004的基础。大量的玩家和程序员据此开发出了数之不尽的“MOD”、大学项目和商业游戏。而Unreal Engine 3 (UE3)引擎则宣传说它带来了业界最好的公爵和最丰富的游戏特性集，其中包括一个方便且强大的着色器构建图形用户界面以及一个被称为Kismet的方便且强大的游戏逻辑编程图形用户界面[ 10 ] 。 Unreal引擎因其丰富的扩展性和易于使用的内置工具而广为人知。Unreal引擎并不是完美的，所以大多数开发者都会对其进行某些修改以使他们的游戏在特定的平台上能以最佳的方式运行。但Unreal引擎的确是一个异常强大的原型工具和商业游戏开发平台，几乎可以用它来构建任何第一人称和第三人称的游戏。 除了游戏，Unreal引擎还涵盖了教育、建筑等其他领域。Digital Design公司曾与联合国教科文组织的世界文化遗产分部合作采用Unreal引擎制作过巴黎圣母院的内部虚拟演示。Zen Tao公司采用Unreal引擎为空手道选手制作过武术训练软件。另一家软件开发商Vito Miliano公司也采用Unreal引擎开发了一套名为“Unrealty”的建筑设计软件，用于房地产的演示。 目前，Unreal引擎已经发布了第四代引擎Unreal 4，它可以在不榨干硬件机能的情况下同时渲染数以百万的粒子，并且包含了新的Kismet 2工具，它让开发者在简单地操作界面下就能渲染出复杂的场景。这些特性使得虚幻4的SDK将更加简单易用，从而允许更少的开发者完成更多的工作。 2.3.3. Source引擎 Source引擎是获得巨大成功的Half-Life 2及其续集HL2：Episode One、HL2：Episode Two、Team Fortress 2和Portal的三维引擎。Source引擎是由Valve软件公司开发的一款高质量的引擎，在图形性能和工具集方面可以与Unreal Engine 3引擎相匹敌，且它对其他的游戏开发者开放授权。该引擎提供关于渲染、声效、动画、消锯齿、界面、网络、美工创意和物理模拟方面的支持。 2.3.4. XNA Game Studio 微软公司的XNA Game Studio是一款易于使用、非常易学的游戏开发平台。它鼓励玩家制作自己的游戏，并在网上的社区中分享自己的作品，就像Youtube鼓励用户制作并共享自拍视频一样。 XNA基于微软的C#语言和公共语言运行时(CLR)技术。主要的开发环境是Visual Studio，或其免费版Visual Studio Express。所有资源，包括源代码和游戏资源等，都由Visual Studio进行管理。开发者可以使用XNA为PC平台和微软的Xbox 360游戏机制作游戏。在付了一定费用后，玩家可以把自己的作品上传到Xbox Live网络中与其他人共享。通过无偿地提供一些优秀的工具，微软为普通用户打开了一扇制作新游戏的大门。 2.3.5. Unity引擎 Unity是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具，是一个全面整合的专业游戏引擎。Unity对Direct X和OpenGL拥有高度优化的图形渲染管道，并支持所有文件格式，能和大部分相关应用程序协同工作。Unity的着色器系统整合了易用性、灵活性和高性能。Unity也提供了具有柔和引擎和烘焙lightmaps的高度完善的光影渲染系统。 2.3.6. Gamebryo引擎 Gamebryo是一款便捷且易上手的开放式跨平台游戏开发引擎。Gamebryo为当今主要的DCC工具(3D Max， Maya， XSI)都提供了游戏所需资源的导出插件。Gamebryo拥有较完善的场景图结构、渲染系统、材质系统、多线程管理系统、几何模型系统、动画系统和物理系统等等。目前Gamebryo引擎正应用于国内的大型3D游戏，如《御龙在天》、《轩辕传奇》等等。总结Gamebryo的优点就是，灵活性、多平台、画面效果、负载能力。 2.3.7. Bigworld引擎 Bigworld是为大型多人在线游戏(MMOG)开发商提供的成熟的中间件平台。Bigworld和其他游戏引擎不同，它不是针对地图为单元，将地图为单元分担到独立进程中去管理的。它是以人群数量去进行划分，从理论上讲，Bigworld支持无限大的游戏世界，而且它完全支持无缝，因为它完全没有从物理地图区域进行分割。Bigworld引擎最具代表的作品就是《魔兽世界》。 2.3.8. CryEngine引擎 CryEngine由Crytek开发的一款著名的三维引擎。自微软退出了Direct 10之后，CryEngine 2成为了当时渲染质量最好的引擎，如今，CryEngine对平台硬件条件要求变得十分高，导致了其使用并不如Unreal引擎广。目前，Crytek发布了CryEngine 3引擎。 2.3.9. 其他商业引擎 2001年之后，除了以上几款商业引擎外，还存在大量的商业三维引擎(如V12引擎、MAX-FX引擎、Geo-Mod引擎、Serious引擎、夜光引擎、寒霜3引擎、Red Engine3等等)。尽管独立开发者可以没有足够的预算购买一款商业引擎，但是这些商业引擎却提供了大量的在线文档和wiki，这些文档和wiki中提供了大量有用的三维引擎信息和一般游戏编程知识[ 11 ] 。 2.3.10. 专有内部引擎 许多公司都会构建和维护一些专有内部三维图形引擎。Eletronic Arts公司制作的许多即时战略游戏(RTS)都是基于Westwood Studios公司开发的一款称为SAGE的专有内部引擎开发的。Naughty Dog公司制作的Crash Bandicoot、Jak and Daxter系列和最近的Uncharted：Drake’s Fortune都在分别为PlayStation、PlayStation 2和PlayStation 3定制的三款内部引擎进行了构建[ 12 ] 。当然，大多数的商业许可的三维图形引擎，例如Quake、Source和Unreal Engine最初都是专有内部引擎。 2.3.11. 开源引擎 开源三维图形引擎是由业余爱好者和专业游戏开发者构建的可以从网上免费获取的引擎。术语“开源”通常意味着可以免费获取引擎的源代码，同时还意味着引擎开发过程中使用了某种开源开发模式，而采用这种开发模式则意味着每个人都可以为引擎贡献代码。开源引擎通常会采用GNU公共许可(GPL)或宽松GNU公共许可(LGPL)。网上有大量的开源引擎，其中有些引擎非常不错，有些则比较一般，还有一些非常糟糕。 OGRE 3D是一款架构良好、易于学习、易于使用的三维渲染引擎。它自称拥有一个功能完备的渲染器，包括高级光照和阴影功能、一个优秀的骨骼角色动画系统、一个用于平视现实(HUP)和图形用户接口的二维叠加系统和一个用于制作全屏效果(例如光晕效果)的后期处理系统。ORGE并不是一个完整的三维引擎，但是它确实提供了大部分三维引擎都需要用到的一些基本组件。 下面列出了一些知名的开源三维引擎： 1) Irrlicht是一个完全跨平台的3D游戏引擎。具有高效，实时等特点，使用D3D、OpenGL和它的自己的渲染程序。支持动态的阴影，粒子系统，角色动画，室内和室外技术以及碰撞检测等。提供Anti-aliasing支持，可运行于Linux，Windows，MacOS。 2) Panda3D，由迪斯尼VR工作室开发和维护的3D游戏引擎(BSD授权)。是一款基于脚本的引擎。这一款引擎的主要接口是一种自定义Python脚本语言。它主要用于3D游戏原型和虚拟世界的快速制作。 3) Crystal Space是3D构架，用C++语言编写。开发者包括Jorrit Tyberghein。首个公开版本发布于1997年8月26日，通常用于电子游戏目的。是使用GNU Lesser General Public License协议的自由软件，作为SourceForge.net 2003年2月的月度项目。可用OpenGL(全平台)，SDL(全SDL平台)，X11(Unix和GNU/Linux)或SVGALib (GNU/Linux)。 4) Genesis-3D是国内游戏公司搜狐畅游研发并发布的一个可以让玩家及开发者轻松创建三维视频游戏等的首款国内外开源3D游戏引擎平台。它包括跨平台渲染引擎、2D引擎、物理引擎、音效系统、粒子系统、动画系统、服务器引擎、游戏设计工具等，可适用于各种类型游戏研发的综合型游戏开发平台。 5) Yake是一款在OGRE基础上构建的功能完备的三维图形引擎。它是一款组件化、面向对象化的引擎。 2.4. 主流三维引擎对比 由于大部分三维图形引擎工具没有公开体系结构、关键技术等技术细节，不能对它们进行完整的对比分析，下面就部分图形绘制功能进行对比，如表2~表6。资料有限，部分内容可能不够全面。以下选择目前行业内主流的5款三维引擎进行对比： 5款引擎分别是ORGE引擎、Unreal引擎、Unity引擎、Gamebryo引擎以及Bigworld引擎。其中ORGE引擎属于免费的开源引擎，其余4款引擎属于收费的商业引擎。 Table 2 The comparison of market dat 引擎名称 开发成功的作品 OGRE 搜狐畅游：《天龙八部》、《鹿鼎记》； 麒麟网：《成吉思汗》 Unreal 《细胞分裂》、《明日潘多拉》、《天堂II》、《杀手13（XIII）》、《虚幻竞技场》 Unity 《捉迷藏OL》、《蒸汽之城》 Gamebryo 腾讯：《御龙在天》、《轩辕传奇》、《QQ飞车》；盛大：《星辰变》； 上海烛龙：《古剑奇谭》；久游：《宠物森林》；金酷游戏：《魔界2》；成都梦工厂：《侠义道III》 Bigworld 《魔兽世界》、《天下贰》、《创世西游》、《鬼吹灯OL》、《三国群英传OL2》、《侠客列传》 表2. 各引擎市场资料对比 Table 3 The comparison of basic functio 引擎名称 渲染系统 光源系统 场景管理 纹理系统 物理系统 OGRE 固定渲染通道、渲染纹理、字体、图形用户界面 着顶点、着像素、光照映射 普通方式、BSP、 遮挡剔除、LOD、Octree 基本纹理、多重纹理、凹凸纹理、投影纹理、体纹理 碰撞检测和刚体 Unreal 固定渲染通道、可编程渲染、字体、图形用户界面 着顶点、着像素、光照映射 普通方式、BSP、基于入口的可见性判别、遮挡剔除、PVS、LOD 基本纹理、多重纹理、投影纹理 碰撞检测、刚体和车辆物理学 Unity 固定渲染通道、可编程渲染、字体、图形用户界面 高度完善的光影渲染系统 普通方式、BSP、LOD、遮挡剔除、PVS 基本纹理、多重纹理 内置PhysX物理引擎 Gamebryo 固定渲染通道、可编程渲染、字体、图形用户界面 着顶点、着像素 多线程管理系统 (Floodgate)、PVS 基本纹理、动态纹理 整合PhysX系统到Gamebryo中 Bigworld 固定渲染通道、可编程渲染、字体、图形用户界面 着顶点、着像素 四叉树、支持室内 室外环境的无缝链接 基本纹理、多重纹理 简单的物理系统 表3. 各引擎基本功能对比 Table 4 The comparison of animation interactive functio 引擎名称 动画系统 人工智能系统 OGRE 逆向运动学、骨骼动画、Skeletal-Ani、动画混合、Blending 不支持 Unreal 关键帧动画、骨骼动画、动画混合 寻径、决策、有限状态机、脚本 Unity 支持DCC等工具导出生成的动画、脚本控制动画播放 不支持，需要编写脚本AI Gamebryo 骨骼动画、面部动画、层级动画、动画序列、 动画与物理模拟结果的混合、动画序列之间的混合 支持，利用xaitmentAI中间件提供人工智能 Bigworld 支持四骨以上的复杂骨骼动画 支持 表4. 各引擎动画交互功能对比 Table 5 The comparison of effective functio 引擎名称 特效功能 音效 网络 OGRE 环境映射、镜头光斑、布告板、粒子系统、运动模糊、天空盒、水、雾 不支持 不支持 Unreal 镜头光斑、布告板、粒子系统、天空盒、水、爆炸效果、贴花、雾、镜头特效 2D、3D音效 支持CS模式 Unity 粒子系统、曲面fessellation技术、凹凸纹理贴图、多边形曲面光照效果、环境光效果、水 实时三维图形混合音频流、视频流 从单人游戏到全实时多人游戏 Gamebryo 粒子系统、HDR、DOF、常见特效 使用Audiokinetic开发的Wwise音频中间件 模块化、可扩展的网络库 Bigworld 支持大量景深局部对比、增益、爆炸、烟雾 基于多普勒效应的音频处理 支持CS模式、服务器使用RedHat版的Linux 表5. 各引擎特效功能对比 Table 6 The comparison of basic informatio 引擎名称 公司/作者 图形API 开发语言 是否开源 文档情况 特征情况 OGRE Steve streeting OpenGL、DirectX C/C++ 公开 充分 面向对象、插件式结构、 可存取系统 Unreal Epic Games OpenGL、DirectX、 Software C/C++ 不公开 充分 面向对象、插件式结构、 可存取系统 Unity Unity technology OpenGL、DirectX C/C++ 不公开 提供逐步的指导、 文档和实例方案 面向对象设计 Gamebryo Emegent game technology OpenGL、DirectX C/C++ 不公开 充分 面向对象、开放式跨平台游戏引擎、插件式结构、 可存取系统 Bigworld Big World OpenGL、DirectX C/C++ 部分源代码公开 充分 面向对象、插件式结构、 可存取系统 表6. 各引擎基本信息对比