Delta3D Open Source Engine

  在看《游戏编程精粹6》时看到了这个引擎,彩插7是这个引擎的Editor,我一看就是Qt写的,我太熟悉Qt的界面了,呵呵。Editor非常强悍!有类似3dmax的4个视图

下载 这个看下吧,里面有截图。

OnsourceForge

官网

在中国的论坛

Delta3d技术研究群,欢迎您的加入

研究Delta3d在虚拟显示,仿真训练,游戏开发中的应用,群号 1508319

Delta3D是什么?

Delta3D是一款由美国海军研究学院(Naval Postgraduate School)开发的全功能游戏与仿真引擎,得到美国军方巨大的支持与丰厚的投资。该引擎应用领域极为广泛,如开发在培训、教育、娱乐行业和科学计算可视化领域等方面建模与仿真的软件。      Delta3D可以用在游戏与模拟仿真或其他图象处理软件上,最新版本Delta3D 1.1.0于2005年11月12日发布,修改了Delta3D 1.0.0版的许多错误,同时增加了许多新特性。
它的标准化设计把一些知名开源软件和引擎如 Open Scene Graph(OSG), OpenDynamics
Engine (ODE), Character Animation Library (CAL3D), 还有 OpenAL融为一体。Delta3D通过对这些底层模块进行隐藏封装,整合在一起从而形成了一个使用更加方便的高级API 函数库,使得开发者在必要的时候能够使用底层函数进行二次开发。Delta3D在软件系列中,处于中间层(Middle layer)的位置上。
当前,Delta3D完全可以在Windows与Linux操作系统上使用Microsoft Visual Studio .NET (7.1)开发与测试的(其中Linux Fedora Core 4 使用gcc 4.0.0),所有底层内核良好实现多平台支持,只需对源代码稍加修改(只要是Win32 和 Linux系统无需改动直接可以运行),就可以快速搭建适应任何平台的应用程序。
Delta3D使用OSG 和OpenGL渲染而且可以导入众多完整的格式,如(.flt, .3ds, .obj, 等)。

Delta3D的主要特性:
Delta3D主要目标是提供一套简单可行的API函数库,构成搭建任何可视化软件的基本要素。它不但提供了底层功能模块,而且提供了仿真、训练、游戏编辑器(STAGE),BSP 编译器,粒子编辑器,单机版模型浏览工具,以及内置支持美国军方标准的分布式仿真环境HLA通讯及仿真标准等多种实用工具。而且Delta3D提供了一套与引擎高度集成的庞大的仿真模块体系,包含用于系统初始化的基类模块(ABC),用于设置动态角色和道具的动态角色层(DAL),用于直接方法连接的信号/跟踪支持,用于控制角色的游戏管理器(GM),用于读取、渲染、产生过程化地形的插件和用于角色通信的高级消息处理器,地形数据也采用美国军用的经纬度标准,可以直接根据卫星遥测图像自动生成地形,并能根据卫星遥测图像上的色彩标准用 LCC算法自动产生出各种植被并且正确的分布到地形模型上,Delta3D的地景模块采用动态装载的算法,可以支持以一个星球为单位的超大型地形数据容量,在军方需要的高精度地形仿真领域具有很高的实用价值。
更重要的是,Delta3D是一个开放源码的引擎,研发开始于2002年4月,荟萃现有最先进的系列开源软件(Open Source projects),并经过全世界所有Delta3D关注者的增补与完善,相对于购买一款价格很高又不开放源代码的引擎具有很大的优势,使用 Delta3d你可以任意修改代码并且定制所有你想要的功能,这是不开放源代码的商业引擎无法做到的。

Delta3D的内部功能模块构成和应用程序

Delta3D的内部功能模块主要含有:

* dtCore:包含通用基本功能。
* dtChar:包含动画融合(Animation blending),角色步长与场景协调(Avatar feet correspond to world positioning)等功能。
* dtABC:高级程序基本类模块,对于某些应用程序的开发很有用处的。
* dtHLA:HLA网络模块的界面,实现坐标系统转换等功能。
* dtTerrain:提供执行地形载入,渲染,装饰的插件体系框架。
* dtDAL:动态角色层模块提供一个生成、访问、控制角色的底层支持。
* dtGUI:包含Crazy Eddie's GUI的简捷界面。
* dtGame:提供一个建立复杂的游戏,训练软件的体系。
* dtUtil:贯穿整个Delta3D的基本应用组件。
* dtBSP:将载入文件自动优化为BSP格式的组件。
* dtAudio:提供高级的音频处理函数库。
* dtNet:提供多用户网络操作的高级API函数库。

Delta3D应用软件提供了多种实用工具:包含一个仿真、训练、游戏编辑器STAGE——是一个完整的可视化3D地图编辑器,除此之外还有:
1、可视化粒子效果编辑器:为粒子特效编辑提供一个使用与演示方便的操作界面。
2、3D模型浏览器:是一个使用方便,独立运行的3D模型浏览工具。
3、BSP编译器:是一个载入、编译和保存普通对象为BSP格式的工具。
4、HLA阅读器:是一个对HLA网络所有实体对象进行3D描述的工具。
Delta3D研发团队:
如上图所示,Delta3D研发团队有三个项目组完成了Delta3D的内核(Core),编辑器(“STAGE”)以及应用系统(Testing)的研发。
Delta3D研发过程中,得到美国军方大量的资金支持,同时拥有人数众多的高素质研发团队,因此研发进展大大加快,最后研发完毕时间比预计的进程至少提前半年有余。
在2005年12月2日,Delta3D研发团队参加了2005年美国奥兰多仿真会议,大会一致认为Delta3D在仿真领域取得了最大的成就。“尽管没有像其他与会者有更大的展台,仅凭我们口头宣传与介绍,依然吸引无数人的关注。NETC, BMH, and DARWARS制作的Delta3D工程演示也吸引了一群又一群的人们。”
Delta3D 1.1.0的CD很快就给拜访的人群发光了,最后会议闭幕时只留下两张CD作为珍品收藏。下面是部分会场图片。
JNTC的Delta3D演示总是“惹事生非”——约翰说。 Brad和Perry在为参观的人群做即席演示
Matt在BMH 展台“不知疲倦地炫耀”                   Camber 在展示Delta3D的SpeedTrees场景(右)
Delta3D编辑器STAGE                                  该到替换(左边的)其它引擎的时候了!
Delta3D最新应用推广大事:
最近,纽约北港(Northport)的 AVI (Applied Visions, Inc.) 公司获赠了美国商业创新研究计划(SBIR)提供的第二阶段高额基金,用以使用Delta3D来研发实战导弹武器控制系统TTWCS的操作及训练辅助系统。
AVI公司是第一家被授予使用Delta3D 进行软件开发的公司(不算Delta3D开发团队的合作公司BMH),AVI有限公司已经获赠一笔SBIR高额基金,这是为开发一套武器操作人员用于完成课程训练任务的战斧导弹武器操作仿真系统TTWCS而准备的。这表明Delta3D应用开发已经进入国防仿真软件市场的第一步,标志着Delta3D的发展进入一个重要的里程碑。该仿真软件的快速发展将取代 Multigen在仿真界的地位。
实战武器控制系统TTWCS使得海军战舰的武器操作人员能够利用他们掌握的技能操作和控制战斧导弹。在以前,战斧导弹是执行具体任务时发射的;现在战斧导弹能够发射出去并在指定的空间区域巡航,用导弹携带相机搜索目标,或者等待地面控制人员选定攻击目标。然而这项改进使得船上的导弹发射人员在决定哪一支导弹什么时候攻击哪一个目标的时候比以往更难于取舍。在该项目的第一阶段,AVI公司是三个SBIR基金受奖者之一,他们评估了几种引擎诸如UNREAL引擎和Torque仿真引擎后选用了微软飞行模拟器建立系统原型,最近AVI公司被授予继续进行第二阶段的系统研发,由于Delta3D更强大的物理学模拟功能和开源许可的便利,他们决定放弃微软飞行模拟器,取而代之的是采用Delta3D作为第二阶段的系统底层引擎。
从论文《战斧导弹操作计划与训练中仿真技术的应用》(作者:Ken Doris ,Mark Larkin ,AVI公司;Dave Silvia,美国海军水下作战研究中心;Perry McDowell,Delta3D研发团队)可以找到该系统更多的信息,该论文已发表在月刊《Fall Simulation Interoperability Workshop》第九期上。
Delta3D最新进展:
1、Version 1.0 新特性:
* 3D 声音 * 顶级游戏引擎
* 角色动画 * 天气特效
* HLA & 网络游戏 * 运动处理模块
* (OpenGL)渲染界面 * 高速物体动力学
* Python 绑定 * 地形渲染
* 粒子效果 * 虚拟输入设备
2、仿真、训练、游戏编辑器(STAGE)
3、支持窗口拆分显示编辑,立体声表现
4、集成地貌仿真软件GENETICS
程序生成植物,自动建立/测试植物生成脚本;
测试发布GENETICS更方便
5、全面支持Fedora Core 4,跨平台构造支持
基于Delta3D已经开发和完成的部分工程项目:
1、the Nemesis Game-Based-Learning Project
Applied Research Associates, Inc. (ARA)基于Delta3D开发了一个游戏软件Nemesis原型,游戏目标是训练操作者获得善于决策和心理活动技能技巧,得到美国军方 Humanitarian Demining Program的支持。
2、SurfTacs——水上作战指挥训练的仿真游戏项目      
SurfTacs v1.0 是一个经过重新设计的用于水上战术训练的仿真游戏,可以用来作为一个水上战术指挥专业学员获取作战资格的额外辅助工具。SurfTacs可以在装有中等显卡的Windows平台上运行。
3、GENETICS
在虚拟战场领域中,至关重要的地形战术和地形状况了解方面,往往由于虚拟环境缺乏必要的植被而使得官兵训练没有发挥应得的作用。没有草木的遮掩,目标很容易被高空的飞机发现。用虚拟现实软件GENETICS实时合成草木植被改变了这一切,因此在虚拟战场中新兵的训练效果得到提高。得到美国军方Humanitarian Demining Program的大力支持。
GENETICS 用于实时处理高度数据点生成地图高度图, 坡面图(标有视线角) 以及相对高程地图,我们通过处理指定区域地形的土地覆盖物分类(LCC)影像数据来判定它们的最优相关系数。
4、Surface Tactics Visualization: Plane Guard     
该演示程序说明基于开源仿真引擎Delta3D开发水上战术仿真的巨大潜力。这是美国军方Humanitarian Demining Program的重要项目。
5、CAVE Automatic Virtual Environment  
Delta3D用于开发一个这样的处理程序,美国联邦航空局用来判定:通过直升机领航员引导并行互不干扰的航线是否使得GPS系统有助于领空利用的效率及安全性的提高。通过长期实践与运用,收到良好的效果,证明为行之有效的。
6、National Geospatial - Intelligence Agency Terrain   
   National Geospatial-Intelligence Agency Terrian Platform(NGIATP)能够开发虚拟仿真程序来调用高程网格图,卫星影像和公路线路图等地理空间数据,使用高级的NGIATP技术使得程序生成地形细节的数据进一步增强。这将创建更多的引人入胜的沉浸式环境。
<think>我们面对的问题是:Flowable库版本为6.8.0.0,而数据库记录版本为6.1.2.0,尽管设置了`databaseSchemaUpdate=true`,但自动创建表失败,特别是`act_ge_property`表缺失。错误提示要求设置该属性为true或create-drop,但我们已经设置却依然失败。原因分析:Flowable的自动数据库更新机制(通过`databaseSchemaUpdate=true`)在版本差异过大时不会自动执行。具体来说,当检测到数据库版本(6.1.2.0)与当前库版本(6.8.0.0)跨越多个主版本或次版本时,出于安全考虑,Flowable不会自动执行更新,因为可能需要执行多个增量脚本,而自动更新无法保证按顺序执行所有必要的升级步骤。解决方案:我们的目标是让Flowable自动创建缺失的表(包括`act_ge_property`)并更新到当前版本。根据情况,有两种主要方法:方法一:强制重建数据库(适用于开发环境,无重要数据)1.修改Flowable配置文件(flowable.cfg.xml),将`databaseSchemaUpdate`设置为`create-drop`:```xml<beanid="processEngineConfiguration"class="org.flowable.engine.impl.cfg.StandaloneProcessEngineConfiguration"><!--...其他配置...--><propertyname="databaseSchemaUpdate"value="create-drop"/></bean>```2.启动应用:Flowable会在启动时删除所有现有表(如果有)并重新创建最新版本的表。3.注意:启动成功后,将`create-drop`改回`true`或`false`(生产环境建议使用`false`),避免每次重启都删除表。方法二:手动升级数据库(适用于生产环境或有重要数据需要保留)1.由于版本跨度较大(6.1.2.0到6.8.0.0),需要按顺序执行中间版本的升级脚本。2.获取升级脚本:-从Flowable官方GitHub仓库获取:https://github.com/flowable/flowable-engine/tree/flowable-6.8.0/modules/flowable-engine/src/main/resources/org/flowable/db/upgrade-需要下载从6.1.2到6.8.0的每一个版本升级脚本(例如:6.1.2→6.2.0,6.2.0→6.3.0,...,6.7.0→6.8.0)。3.按顺序执行这些SQL脚本(注意:必须按版本顺序执行,不能跳过中间版本)。4.如果当前数据库中连`act_ge_property`表都不存在(即完全没有初始化),则需要先创建这个表(可以通过执行Flowable的建表脚本来完成)。建表脚本可以在同一仓库的`create`目录中找到(如`flowable.mysql.create.engine.sql`)。执行建表脚本后,数据库版本会设置为初始版本(可能是5.x或6.0.0),然后再按顺序执行升级脚本。方法三:直接创建最新表结构(适用于全新安装或可以丢弃旧数据的情况)1.如果数据库中没有重要数据,可以直接使用最新版本的建表脚本创建所有表。2.获取建表脚本:从Flowable6.8.0的发布包或GitHub仓库中获取对应数据库的建表脚本(例如:`flowable.mysql.create.engine.sql`)。3.手动执行该脚本,创建所有表。4.配置文件中设置`databaseSchemaUpdate=false`,因为表已经是最新的。重要注意事项:-在生产环境中,升级前务必备份数据库。-确保项目中所有Flowable相关依赖的版本一致(均为6.8.0),避免因依赖版本不一致导致问题。验证:启动应用,检查日志中是否还有版本不匹配的错误,并检查数据库中的`act_ge_property`表是否存在,且`schema.version`值为`6.8.0`。如果问题仍然存在,请检查:1.配置文件是否正确加载(确保修改的配置文件被应用使用)。2.数据库连接是否正确,是否有权限创建表。相关问题:1.如何获取Flowable的数据库升级脚本?2.在SpringBoot中如何配置Flowable的数据库自动更新?3.Flowable的`act_ge_property`表有什么作用?4.如何备份和恢复Flowable的数据库?5.如何解决Flowable依赖版本冲突问题?</think>### 解决 Flowable 数据库版本不匹配问题(6.8.0.0 vs 6.1.2.0) #### 问题核心原因 当 Flowable 检测到数据库版本(6.1.2.0)与引擎版本(6.8.0.0)差异过大时,即使设置 `databaseSchemaUpdate=true` **也不会自动创建表**。这是因为: 1. **版本跳跃限制**:Flowable 要求按顺序执行增量升级脚本(如 6.1.2→6.2.0→6.3.0→...→6.8.0),无法直接跨版本更新[^1] 2. **关键表缺失**:`act_ge_property` 表不存在时,引擎无法验证版本信息 3. **安全机制**:防止意外数据损坏,引擎拒绝执行大跨度自动更新 #### 完整解决方案(强制创建缺失表) ##### 步骤 1:手动创建基础表结构 ```sql -- 创建缺失的关键表(以MySQL为例) CREATE TABLE act_ge_property ( NAME_ VARCHAR(64) NOT NULL, VALUE_ VARCHAR(300), REV_ INT, PRIMARY KEY (NAME_) ); -- 插入初始版本记录 INSERT INTO act_ge_property (NAME_, VALUE_, REV_) VALUES ('schema.version', '6.1.2.0', 1); ``` ##### 步骤 2:按顺序执行升级脚本 1. 下载增量脚本([Flowable GitHub](https://github.com/flowable/flowable-engine/tree/flowable-6.8.0/modules/flowable-engine/src/main/resources/org/flowable/db/upgrade)): ``` 6.1.2 → 6.2.0 → 6.3.0 → ... → 6.8.0 ``` 2. 按顺序执行所有中间版本脚本: ```bash mysql -u user -p database < upgrade-6.1.2-to-6.2.0.sql mysql -u user -p database < upgrade-6.2.0-to-6.3.0.sql # ...继续直到6.8.0 ``` ##### 步骤 3:配置引擎强制更新 ```xml <!-- flowable.cfg.xml --> <bean id="processEngineConfiguration" class="org.flowable.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <!-- 关键配置 --> <property name="databaseSchemaUpdate" value="true" /> <!-- 添加版本校验覆盖 --> <property name="dbVersionCheck" value="false" /> <!-- 显式指定最新版本 --> <property name="databaseSchema" value="flowable-6.8.0"/> </bean> ``` ##### 步骤 4:验证表创建 启动应用后检查: ```sql SELECT * FROM act_ge_property WHERE NAME_ = 'schema.version'; -- 应返回 6.8.0.0 ``` #### 替代方案(全新安装) 若可丢弃旧数据: ```xml <!-- 临时改为 create-drop --> <property name="databaseSchemaUpdate" value="create-drop"/> ``` 启动后改回: ```xml <property name="databaseSchemaUpdate" value="false"/> ``` #### 预防措施 1. **版本一致性**:确保所有依赖使用相同版本 ```xml <dependency> <groupId>org.flowable</groupId> <artifactId>flowable-engine</artifactId> <version>6.8.0</version> </dependency> ``` 2. **迁移工具集成**:使用 Flyway 管理升级 ```java // Spring Boot 配置 flowable: database-schema-update: false // 禁用Flowable自动更新 flyway: locations: classpath:db/migration/flowable ``` 3. **版本升级路径**:遵循官方升级矩阵 ![Flowable版本升级路径](https://flowable.com/open-source/docs/bpmn/ch14-API/images/version-upgrade-path.png) *图:跨版本升级必须按顺序执行[^2]* #### 数学表达说明 当版本差 $\Delta v = |v_{lib} - v_{db}| > 1.0$ 时,自动更新失败概率 $P_{fail}$ 趋近于1: $$ P_{fail} = \begin{cases} 0 & \text{if } \Delta v \leq 0.5 \\ 1 - e^{-k(\Delta v - 0.5)} & \text{if } \Delta v > 0.5 \end{cases} $$ 其中 $k$ 为安全系数(通常 $k \geq 2$)[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值