用户
 找回密码
 立即注册
发表于 2010-8-11 17:57:20
81512
什么是3D引擎?3D引擎是什么意思?

3D引擎作为一个名词已经存在了很多年,但即使是一些专业的引擎设计师,也很难就它的定义达成一个共识。通常来说,3D引擎作为一种底层工具支持着高层的图形软件开发。你可以把它看成是对3D API的封装,对一些图形通用算法的封装,对一些底层工具的封装。我无法准确的定义3D引擎的含义和作用,因为针对不同的用户和开发项目,3D引擎完成的功能可能都有不同。因此,我将从功能的角度来定义3D引擎,这种定义法也许能更确切的表达出一个3D引擎的真实含义。
3D引擎最基本的功能应该包括:

1、对3维场景的数据管理

这里的数据管理是一个比较广泛的定义,不同的3D引擎也许会拥有其中一个或多个功能。这些功能包括:场景管理,对象系统,序列化,数据与外部工具的交互,底层3维数据的组织和表示。

场景管理:这个名称相信对3D引擎有一定认识的朋友都很熟悉了。通常它和SceneGraph同时存在于一些架构方面的资料中。由于3D引擎可能会用来管理一些庞大的3D世界,在这个世界中物体与物体之间通常存在一些 相关/从属/影响与被影响关系,如何组织这些关系,并确切的将这些关系与3D引擎的其他功能联系起来,就是场景管理需要完成的工作。常有朋友问我场景管理是用的哪种算法。从我的理解来讲,场景管理是一种设计模式,而不是一个具体的算法,也许你会最终选择BSP/QuadTree/Portal/...作为场景管理树的结构,但是这些已经是实现层面的东西了,而且它们也远远不是场景管理的全部。因此我认为Scene Manager 和Scene Graph manager 这两个概念还是分开理解比较好。

场景管理首先需要考虑如果表达场景中物体的关联关系,这部分通常是由场景图来实现的。通过一个一对多的树形结构已经可以满足要求,当然考虑到数据层的共享和维护,允许子树进行Clone也是前期设计时需要考虑的一个方面。再此之后,就需要考虑物体之间材质的继承关系,动态环境如何嵌入到你选择的场景图中。在一个考虑到交互和触发机制的引擎中,还需要考虑物体之间如何发送消息。(比如一个结合了物理引擎的场景)。实际上在整个引擎中你所涉及到的各种算法和设计,都或多或少的会和场景管理发生联系。比如在一个实现动态光影的引擎中,物体之间如何实现相互遮挡,光源的影响范围如何在场景图上继承,都是在设计时需要考虑的问题。

2、功能合理的渲染器

之所以要说是合理的渲染器,是因为一个引擎的渲染能力是由多方面决定的。比如一款以实时游戏作为目标的游戏,会选择基于光栅化的渲染算法。在这种设计前提下,几何体一级的数据不会过于详细,例如物体表面的BRDF,折射率,纹理坐标空间的变化率,切线空间的变化率(当然随着硬件能力的提升和Shader能力的发展,这些数据也会出现在一些比较高级的游戏引擎中),这时候即使你在设计初期就考虑到这些数据需求,并将它们表现在了Render中,最后也不会由任何意义。

3、与外部软件的交互能力

简单的说,就是开发工具。任何一款3D引擎如果没有开发工具都不能称为是完整的。这些开发工具可能是一些文件转换器,场景编辑器,脚本编辑器,粒子编辑器....

有了上面3种功能,就可以称为3D引擎了。

3D引擎有三个层次:

底层:光照、纹理贴图、光栅化等无数据结构的引擎,还可以包括一些基本的数学算法,常用的有OpenGL,D3D等,提供硬件无关的3D访问。

场景层:是将一些基本对象组合成数据,比如:摄象机,物体,纹理等。对象,用户可以使用这些对象创建一些场景,然后调用底层的渲染机制。如Open Inventer等

应用层:针对具体的应用,实现一些组特有的对象,来实现动态场景、主体。漫游、特技等高级3D特性,比如Doom、Unreal等游戏的第一人称视角的引擎。
使用道具 举报 回复
发表于 2010-8-14 11:58:14

ubject

学习了
使用道具 举报 回复 支持 反对
发表于 2010-8-17 01:27:05
游戏引擎大全 [打印本页]
作者: suxia1982    时间: 2010-3-5 16:28     标题: 游戏引擎大全

Agar – 一个高级图形应用程序框架,用于2D和3D游戏。
Allegro – 基于 C/C++ 的游戏引擎,支持图形,声音,输入,游戏时钟,浮点,压缩文件以及GUI。
Axiom 引擎 – OGRE的衍生引擎。
Baja 引擎 – 专业品质的图像引擎,用于The Lost Mansion。
Boom – Doom代码的一部分。由TeamTNT开发
Build 引擎 – 一个第一人称射击游戏引擎,用于Duke Nukem 3D。
Bullet – 开源物理引擎,广泛应用在各大游戏主机。
BYOND – “Build Your Own Net Dream”的縮写,支持各种类型的游戏,包括MMORPG。
Ca3D-引擎 – 一个比较成熟的引擎,有自己的SDK,世界编辑器等。
Cadabra 3D 引擎 – 用于快速开发3D游戏。
Catmother – 一个基于BSD授权的引擎,只限个人使用,不能做商业用途。是一家游戏公司的开源引擎。
CheapHack – 一个已经过时的TomazQuake衍生引擎。
Crystal Entity Layer – Crystal Space 3D 引擎的扩充
Crystal Space – 3D应用程序的常规框架。
Cube – Cube2 ──> Sauerbraten
DarkPlaces – 高级开源3D引擎之一。
Delta3d – 整合和其他知名免费引擎,最初由美国军方开发。
DGD – 一个面向对象的MUD引擎。
Doom 引擎 – 现在已经免费的引擎,曾用于Doom和Doom II
DXFramework – 一个简单,带有教学性质的2D/3D引擎,基于DirectX和Visual Studio
DX Studio – 一个专业3D引擎,附带编辑器套件,由Worldweaver公司开发。
Eclipse – 一个2D MMORPG编辑器。
Elysium Source – 2D网络游戏引擎,VB6开发。
Engine 001 – 2D 动作类RPG游戏编辑器。
Epee 引擎 -一个2D/3D开放源代码图像引擎,多平台。
Eternity 引擎 – Doom引擎的改进。
Exult – Ultima VII使用的引擎的开源版。
FIFE – 辐射1和2使用引擎的克隆。
Game Blender – Blender的子项目游戏引擎,用于开发游戏。
Game Maker – 面向对象的软游戏开发平台,支持拖放编辑以及其自己的脚本语言。
GQ – 一个Quake引擎,增添了来自TomazQuake和DarkPlaces的许多新特性。
GZDoom – 基于ZDoom的引擎。
Genesis3D – 用于Windows的3D实时渲染引擎
GemRB – Infinity Engine的一个免费的软件实现。
G3DRuby – 用于高级3D图形。
Haaf’s Game Engine – 一个使用硬件加速的2D游戏引擎。
Irrlicht 引擎 – 一个多平台高质量的3D图形引擎。
ioquake3 – 一个基于id Tech 3的引擎
Gosu 2D游戏开发库,用于C++。
Jogre – 一个基于Java的网络游戏引擎。
MRPGe – Visual Basic开发的2D RPG游戏引擎,附带内置的脚本支持,可定制化强,正在开发阶段。
M.U.G.E.N – 2D格斗游戏引擎。
Multiverse Network – 网络游戏开发平台,包含服务端、客户端,以及一些开发工具(对个人免费)
Nebula Device – 由德国的游戏开发工作室开发的实时渲染3D引擎。
NeL 引擎 – 用于开发网络游戏的引擎。
OctLight – Java游戏引擎,基于OpenGL。
Open Dynamics Engine – 物理引擎
Open Game Engine – 一个开源引擎,包含开发游戏所需的各种组件。
OGRE Engine – 一个非常流行的面向对象图形渲染引擎,亦称OGRE3D。
Online RPG Maker – 一个2D网络游戏引擎,以脚本方式编辑。
Panda3D 引擎 – 基于Python的快速开发游戏引擎。
PlayerWorlds – 一个简洁且广泛使用的2D网络游戏引擎。
PLIB – 包含3D、音效、GUI、窗口管理。支持Linux/Windows/MacOSX。
ProQuake – 更动过的Quake引擎。
Pygame – python游戏引擎,作品见PyWeek
毁灭公爵II引擎 – Quake II的引擎。
毁灭公爵III引擎 – Quake III的引擎。
Reality Factory – 一个开源引擎,面向非程序员开发,基于Genesis3d图形引擎。
Raydium – Maniadrive 使用
RealmForge – 用于微软 .NET Framework的引擎,Visual3D.NET的原始版本。
Sauerbraten – 一个基于Cube引擎的优化版。
Sonic Robo Blast 2 – 深度修改的Doom Legacy引擎
Soya 3D – 基于Python的开源3D引擎
Stratagus – 一个多平台即时战略游戏引擎。
Telejano – Quake引擎的修改版。
Tenebrae – Quake引擎的修改版。
Toi – 一个正在开发的3D游戏引擎,可用于单机和网络游戏开发。
Tomb4 – The engine used to play custom Tomb Raider games built using TRLE (Tomb Raider Level Editor)
vbGORE – 用Visual Basic 6开发的网络游戏引擎(通过3D函数表达2D图形)
Well of Souls – 基于脚本化编辑的2D引擎,附带可视化世界编辑器。
Yake – 组件化,面向对象化的的引擎。
Zak 引擎 – 为业余和专业游戏开发者开发的2D引擎,基于DirectX 8.1和9。 支持脚本、贴图地图、音效、粒子系统等
商业引擎

Arcane 引擎 – Wolfpack Studios为《Shadowbane》开发的引擎
Aurora 引擎 – 为RPG研发的引擎。
Beyond Virtual – 一个面向对象化的实时渲染3D引擎,表现优秀。
Blade3D – 基于Microsoft XNA的新一代引擎。
BRender – 一个即时渲染3D引擎,用于电脑游戏,模拟器,绘图工具开发。
C4 Engine – Eric Lengyel开发的下一代电脑游戏引擎
Chrome Engine – 支持DirectX 10的下一代游戏框架,主要用于FPS游戏(Windows, Xbox 360),由Techland开发。

手机游戏引擎

GledPlay – 一套完整的SDK用于开发手机游戏。
game-editor – 为GP2X开发游戏的开发套件。
PSP

WGAF – Guild Software用于开发Vendetta Online的引擎。
XnGine – 最早的实时3D引擎之一。
游戏及其使用的引擎

引擎 游戏 公司
Nebula Device 3 黑暗之眼 Radon Labs
GoldSrc 半条命 Valve
SAGE 引擎 命令与征服;
命令与征服3:泰伯利亚战争;
魔戒:中土大战II  EA
Source引擎 半条命2;
Sin Episodes;
魔法门之黑暗弥赛亚  Valve;
Ritual Entertainment;
Arkane Studios
CryENGINE 孤岛惊魂 Crytek
CryENGINE2 孤岛危机;
孤岛危机:弹头  Crytek
Essence 引擎 英雄连;
英雄连:对立前线  Relic Entertainment
Scimitar 刺客信条 育碧公司
zerodinengine RF oline;
dark eden2  CCR,SOFTON(开发中),GRAVITY(开发中)
Alamo 星球大战:帝国战争;
星球大战:帝国战争-堕落之军;
宇宙战争:地球突击战  Petroglyph
Unreal Engine 3 虚幻竞技场3 Epic Games
Doom 3 引擎 毁灭战士3;
雷神之锤4;
深入敌后:雷神战争  Id Software
Neon 引擎 闪点行动2; 极速房车赛  Codemasters
GFX3D 复活 (游戏)、天骄  目标软件公司
使用道具 举报 回复 支持 反对
发新帖
您需要登录后才可以回帖 登录 | 立即注册