第1章 Delta3D概述
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1章Delta3D概述
目录
1.1 Delta3D的顶层描述:三个组件 (1)
1.2 Delta3D库的描述 (4)
1.2.1 渲染Rendering (4)
1.2.2 物理特效Physics (6)
1.2.3 音效Audio (6)
1.2.4 人物动画(Character Animation) (6)
1.2.5 脚本Scripting (7)
1.2.6 其它功能Additional Functionality (7)
1.3 Delta3D的内部功能模块 (10)
1.3.1 类库 (10)
1.3.2 Delta3D游戏应用程序的组成模块 (10)
1.3.3 Delta3D中的管理器(Manager) (12)
1.3.4 Delta3D中的对象工厂(Object Factory) (13)
1.4 硬件要求 (13)
1.5 Delta3D的主页 (14)
1.6 Delta3D的安装和调试 (14)
1.6.1快速安装和使用 (14)
1.6.2 从源代码进行编译 (15)
1.6.3 运行一个实例 (17)
1.1 Delta3D的顶层描述:三个组件
Delta3D是一个开源引擎,可用于3D游戏、仿真、或其他图形应用程序的开发。它的模块化设计集成了非常有名的开源项目如Open Scene Graph (OSG)、Open Dynamics Engine (ODE)、Character Animation Library (CAL3D)、OpenAL、Trolltech的Qt、Crazy Eddie的GUI (CEGUI)、Xerces-C、Producer、InterSense Tracker Drivers, HawkNL、以及游戏网络引擎Game Networking Engine (GNE). Delta3D 将以上项目用非常易于使用的API进行了整理和集成,使得使用者能直接访问其中重要的底层接口。Delta3D使用OSG和OpenGL进行渲染。
Delta3D的主要目标是为所有的可视化应用提供一套单一、灵活并包括基本要素的API 库。除了基本的组件外,Delta3D还提供了很多实用工具,比如STAGE(Simulation、Training、Game Editor的简称),SBP编译器(BSP Compiler),粒子编辑器(particle editor),一个独立的模型观察器(model viewer),一个HLA Stealth Viewer.另外,Delta3D还提供了一个与该引擎配套的强大的框架套件。这个套件包括应用基类ABC(application base classes);动态角色层DAL(Dynamic Actor Layer);信号处理的signal/slot support for direct method linking;用于角色管理的游戏管理器GM(Game Manager);可插式的地形工具,用于读取、渲染和修饰地形;用于角色通信的高端消息传递(high-level messaging)。下面介绍有关Delta3D的基本概念。而且,Delta3D提供了一套与引擎高度集成的庞大的仿真模块体系,包含用于系统初始化的基类模块(ABC),用于设置动态角色和道具的动态角色层(DAL),用于直接方法连接的信号/跟踪支持,用于控制角色的游戏管理器(GM),用于读取、渲染、产生过程化地形的插件和用于角色通信的高级消息处理器,地形数据也采用美国军用的经纬度标准,可以直接根据卫星遥测图像自动生成地形,并能根据卫星遥测图像上的色彩标准用LCC算法自动产生出各种植被并且正确的分布到地形模型上,Delta3D的地景模块采用动态装载的算法,可以支持以一个星球为单位的超大型地形数据容量,在军方需要的高精度地形仿真领域具有很高的实用价值。
更重要的是,Delta3D是一个开放源码的引擎,研发开始于2002年4月,荟萃现有最先进的系列开源软件(Open Source projects),并经过全世界所有Delta3D关注者的增补与完善,相对于购买一款价格很高又不开放源代码的引擎具有很大的优势,使用Delta3d你可以任意修改代码并且定制所有你想要的功能,这是不开放源代码的商业引擎无法做到的。
Delta3D引擎的最顶层非常简单,只是由3个主要的子系统构成,如图1.1所示:
图1.1 Delta3D的三个主要子系统
第一个、同时也是核心子系统是“GameManager”,它负责管理角色和消息传递。GameManager(以下简称GM)在其它两个子系统间起一个通信导管(conduit)的作用。GM 拥有所有的游戏角色(Game Actor)、一般角色(normal Actor)、组件和消息。特别是,GM管理所有的角色和组件以及他们之间的相互作用,是游戏程序中的核心。
如果你正在使用Delta3D进行游戏的开发,则需手工将各个部分整合起来。就Delta3D 本省来说,它提供了游戏开发所需的方方面面:场景管理secene management、物理特效physics、音频功能audio abilites、对象的载入、动态角色库Dynamic Actor Library、环境效应environmental effects、光照lighting、地形terrain、相机camera和角色动画character animation。如何将这些功能模块进行整合,形成一个完整的游戏?这都要归功于Delta3D提供的GM机制,它提供了一个核心构架(core architecture)将游戏中的方方面面组织成一个有机的整体。
GM在管理游戏方面做了三件事情。第一件,也是最重要的是,游戏消息管理。游戏消息是用于角色或组件和GM之间交流的。在系统内部的行为和状态变化也通过消息进行交流,但消息不发生消息本身。GM接收并中转(route)至角色和组件的消息,以及来自角色和组件的消息。第二件是,GM维持系统中所有的角色(actor),这其中包括常规角色(regular actor)和新的游戏角色(GameActor,见下面的介绍)。GM跟踪你在代码中或地图(map,由STAGE创建)中创建的角色,并告知角色处理消息,确保角色在正确的时候进入、离开场景。第三件是,GM用来支持GMComponents(GM组件)。从本质上说,组件是一个高层次的对象,用于处理游戏消息。你也许会说,游戏角色不就是处理游戏消息的吗?这只是说对了一半。游戏角色确实处理消息。但是,组件处于换一个更高的层次,他们处理所有诸如网络、游戏规则实施、日志等所有的消息,而游戏角色只是接收它们感兴趣的特定的消息。