第1章 导论 1
1.1 DIS 1
1.2 HLA 3
1.2.1 HLA基本思想 3
1.2.2 HLA层次结构 4
1.2.3 HLA标准 5
1.3 CGF 9
1.3.1 CGF的基本概念 9
1.3.2 CGF的特点 10
1.3.3 CGF系统的设计要求和原则 11
1.3.4 CGF模型 12
1.3.5 CGF的应用现状 13
1.4 VR-Forces 17
1.4.1软件层次 18
1.4.2基于实体参数数据库的实体模型 19
1.4.3实体的行为仿真框架 21
1.4.4应用 23
第2章 安装和配置MAK系列产品 25
2.1安装MAK系列产品 25
2.2配置MAK License 27
2.3 VR-Forces配置文件 27
2.4 VR-Forces和VR-Link 33
第3章VR-Forces入门 36
3.1启动和运行方式 36
3.1.1启动方式 36
3.1.2运行方式 36
3.2实体和模型编辑 38
3.2.1实体编辑器 38
3.2.2模型编辑器 38
3.2.3图标编辑 39
3.3地形制作 40
3.3.1地形制作流程 40
3.3.2 TDB Tools使用 41
第4章 基于VR - Forces开发 47
4.1 VR-Forces API概述 47
4.2生成VR-Forces应用程序 49
4.2.1生成VR-Forces应用程序的选项 49
4.2.2重新生成VR-Forces应用程序 50
4.2.3使用VR-Forces工具包生成应用程序 50
4.2.4生成GUI 51
4.2.5扩展VR- Forces应用程序 53
4.2.6创建和初始化仿真引擎 54
4.2.7生成例子 54
第5章 引擎——vrfSim 55
5.1 VR-Forces仿真API 55
5.1.1创建Plug-in 55
5.1.2载入Plug-in 56
5.1.3建立扩展vrfSim程序 56
5.1.4 VR-Forces嵌入第三方应用 57
5.1.5使用DtCgf类 57
5.1.6调用DtCgf构造函数 57
5.1.7 DtCgf初始化 58
5.1.8 DtCgf函数 58
5.2定制或扩展仿真引擎 59
5.2.1 VR-Forces工厂 60
5.2.2 VR-Forces创建函数 61
5.3定制或扩展vrfSim应用 62
5.4运行时检查VR-Forces许可 64
第6章 对象——Object 65
6.1对象管理器和仿真对象 65
6.1.1创建对象管理器 65
6.1.2仿真对象 65
6.1.3本地和远程对象 66
6.1.4对象的空间组织 67
6.2对象管理器创建对象 67
6.2.1对象管理器选择对象子组件的方式 68
6.2.2标识对象 70
6.2.3查找对象 70
6.2.4对象类型 71
6.2.5对象名称 71
6.2.6梯队ID 72
6.2.7对象标签 72
6.3状态池 72
6.3.1实体状态的检查点 73
6.3.2对象参数 73
6.3.3对象几何特性 74
6.3.4运动状态 75
6.3.5附件管理器 76
6.3.6下属管理 77
6.3.7状态池层级 78
6.3.8在基类层次扩展状态池 79
6.4网络接口 82
6.4.1本地网络接口 83
6.4.2远程网络接口 83
6.4.3使用网络接口配置对象 84
6.4.4调整网络接口 84
6.5创建和管理对象 84
6.5.1对象工厂 84
6.5.2创建新的本地对象 85
6.5.3从仿真中删除本地仿真对象 86
6.5.4对象删除或添加时获取通知 87
6.5.5查找独立的对象 88
6.5.6在仿真对象中遍历 88
6.5.7对象判断 91
6.5.8仿真对象改变时通知应用程序 93
6.5.9重要的代码建议 93
6.6控制对象 93
6.6.1创建控制对象 94
6.6.2控制对象的几何特性 94
6.6.3控制对象参数 94
6.6.4标识控制对象 95
6.7对象参数数据库API 95
第7章 实体——Entity 97
7.1组件和组件管理器 98
7.1.1传感器 98
7.1.2控制器 99
7.1.3执行器 99
7.1.4组件间通信 100
7.2创建实体 100
7.3管理本地和远程实体 102
7.4组织管理器 103
7.4.1实体的组织结构 103
7.4.2梯队ID 104
7.4.3组织管理器的运行方式 105
7.4.4查询组织结构 106
7.4.5层级结构发生变化时获取通知 106
7.4.6修改实体的层级 106
7.4.7伪聚合组织 107
7.5实体状态池 108
7.5.1实体参数 108
7.5.2参数类型字符串 109
7.5.3参数继承 110
7.6过程状态池 111
7.6.1创建和设置过程状态池 113
7.6.2扩展过程状态池 115
7.7任务管理器 119
7.7.1报告任务完成 119
7.7.2跳过任务 119
7.7.3响应上级请求的任务 120
7.7.4处置“清理任务”消息 120
7.8数据设置管理器 120
7.9资源管理器 121
7.10装载 123
7.10.1装载如何影响实体模型 123
7.10.2把环境对象附着在实体上 124
7.11实体通信 124
7.11.1 VR-Forces无线消息系统 124
7.11.2 VR-Forces仿真内部消息系统 124
第8章 组件——Component 125
8.1组件 125
8.1.1 DtSimComponent类 125
8.1.2组件参数和组件描述符 126
8.1.3组件内部通信 126
8.1.4组件和状态池 126
8.1.5 DtSimComponent ::tick()函数 126
8.1.6传感器 127
8.1.7控制器组件 127
8.1.8执行器 127
8.1.9组件系统 127
8.1.10 VR-Forces提供的组件 128
8.2组件管理器 128
8.2.1配置组件管理器 129
8.2.2查询组件 129
8.2.3创建组件 130
8.2.4连接组件 131
8.2.5 tick组件 134
8.2.6设置组件优先级 134
8.3资源消耗模型 136
8.4开火与爆炸处理 137
8.5组件描述符 137
8.6端口和端口组 138
8.6.1端口组 138
8.6.2组件连接 139
8.6.3 VR-Forces支持的输入输出端口类型 140
8.6.4通过输出端口发送数据 141
8.6.5通过输入端口提取数据 141
8.6.6通过端口组发送和提取数据 142
8.6.7创建组件的端口和端口组 142
8.7添加新的实体行为(创建执行器) 143
8.7.1初始化执行器 143
8.7.2标识组件类型 144
8.7.3 tick执行器 145
8.7.4向组件工厂中添加执行器组件 147
8.7.5生成并运行myActuator 147
8.8创建新控制器 147
8.8.1创建控制器 148
8.8.2创建组件描述符 150
8.8.3在对象参数数据库中添加新控制器 152
8.9传感器 155
8.9.1信号传感器概念 156
8.9.2目标对象 156
8.9.3信号传播 157
8.9.4传感器组件 157
8.9.5添加传感器域 157
8.9.6雷达传感器 158
8.10添加传感器组件 158
8.10.1源文件、工程文件和剧情文件 158
8.10.2创建新传感器组件 159
8.10.3实现雷达告警接收器类 159
8.10.4创建新控制器组件 162
8.10.5把传感器连接到控制器 162
8.10.6向VR-Forces添加新组件 165
8.10.7配置实体可使用新组件 166
8.11使用VR-Forces组件代码生成器 167
8.11.1指定必需的组件信息 168
8.11.2指定输入端口和输出端口 169
8.11.3指定状态变量和参数 170
8.11.4存储组件数据 170
8.11.5载入组件描述文件 170
8.11.6生成代码 171
8.11.7配置组件代码生成器 171
第9章 消息——Message 172
9.1消息接口 172
9.2发送接口消息 172
9.3接收接口消息 174
9.4创建新的接口内容 175
9.4.1实现type()和clone()成员函数 175
9.4.2设置参数 176
9.4.3创建网络描述 176
9.4.4实现netRepSize () 176
9.4.5实现setFromNet() 177
9.4.6实现setToNet() 177
9.5消息类 178
第10章 通信——Communication 181
10.1发送消息 181
10.1.1发送仿真内部消息 182
10.1.2发送无线消息 182
10.2接收消息 182
10.2.1消息接收回调成员函数 182
10.2.2接收特定类型的消息 183
10.2.3从指定源接收消息 183
10.3 VR - Forces仿真内部消息系统 183
10.4 VR - Forces无线消息系统 184
第11章 任务——Task 186
11.1任务和设置数据请求 186
11.1.1任务 186
11.1.2任务类型 187
11.1.3子任务 187
11.1.4使用子任务 187
11.1.5设置数据请求 189
11.2任务消息 190
11.3向实体添加新任务 190
11.4从DtSimTask中派生新任务 191
11.5处理不可实现的任务 192
11.6添加用户任务 192
11.6.1从GUI中配置用户任务 192
11.6.2为用户任务添加控制器 193
11.7创建新的DtSetDataRequest 196
11.8报告 197
第12章 计划——Plan 198
12.1计划管理器 198
12.2管理计划 198
12.2.1载入计划文件 199
12.2.2把计划存入文件中 199
12.2.3使用API调用创建新计划 199
12.2.4访问对象的计划 200
12.3计划管理程序 200
12.4检查和变更计划 201
12.4.1在计划语句里迭代 201
12.4.2利用编程修改计划 202
12.5执行计划 203
12.5.1初始的执行状态 204
12.5.2计划开始执行 204
12.5.3通过计划推进 204
12.5.4完成任务 205
12.5.5触发器(或When语句) 205
12.5.6放弃计划 205
12.6语句 206
12.7条件表达式 207
12.7.1条件表达式对象 207
12.7.2条件表达式评估器 208
12.7.3逻辑常数 208
12.7.4逻辑操作符 208
12.7.5资源操作符 209
12.7.6测试实体状态的条件表达式 209
12.7.7随机算子 210
12.7.8添加新类型的条件表达式 210
12.8触发器 212
第13章 地形——Terrain 213
13.1简介 213
13.2 DtTerrainDatabase类 213
13.2.1访问DtTerrainDatabase类 214
13.2.2地形交叉检测 215
13.2.3坐标系统 215
13.2.4地形几何结构 216
13.2.5地形表面(土质类型) 217
13.3查询地形数据库 217
13.4矢量网络 219
13.4.1线 220
13.4.2区域 220
13.4.3形状规范 221
13.4.4 MAK规范模型 222
13.4.5查询矢量网络 222
13.4.6检测所有的沿弦线的地形交叉 223
13.4.7使用度量查询矢量网络 223
13.5创建新的DtTerrainDatabase 225
13.5.1向数据库中添加三角形 225
13.5.2把地形节点从数据库中移除 226
13.5.3向数据库中添加形状数据 226
13.5.4更新矢量网络的范围 229
13.5.5移除形状数据 229
13.5.6 PostProcessing 230
13.6地形阅读器 230
13.6.1创建新类别的地形阅读器 231
13.6.2地形形状阅读器 232
第14章 远程——Remote 234
14.1简介 234
14.2使用远程控制API 234
14.3选择要控制的VR - Forces应用程序 235
14.4查找远程VR - Forces应用程序 236
14.5载入剧情 237
14.6保存剧情 238
14.7管理VR-Forces对象 239
14.7.1创建对象 240
14.7.2修改和删除对象 240
14.7.3改变实体的层级 241
14.8任务和计划 241
14.9批处理方式运行VR - Forces应用程序 242
14.10使用远程控制API生成应用程序 242
第15章 文件——R&W Files 243
15.1可读写对象 243
15.2向文件中写入数据 243
15.3从文件读取数据 244
15.4多继承和DtReaderWriter 246
15.5阅读器/记录器注册 246
15.6处理未指明的参数 248
第16章 辅助——Utility Class 250
16.1仿真管理器 250
16.1.1仿真时间、演练时间和演练时钟 250
16.1.2用仿真引擎调度事件 251
16.1.3发布后端的状态 252
16.1.4操纵杆器件管理器 252
16.2划分空间 252
16.2.1空间划分容器 253
16.2.2创建空间划分对象 254
16.2.3扩展DtSpatialSubdivision类 255
16.3符号字符串 255
16.4 VR-Forces会话 256
16.5按批处理模式运行VR - Forces应用程序 256
第17章 界面——GUI 258
17.1简介 258
17.1.1插件方式或独立运行方式的应用 258
17.1.2工具包 258
17.2 VR-Forces GUI API体系结构 260
17.3创建插件 262
17.3.1插件入口点 262
17.3.2事件信号器 264
17.3.3载入插件 265
17.3.4维护插件 265
17.4创建独立的GUI应用程序 265
17.5处理符号 266
17.5.1模型数据 266
17.5.2 DtViewDriver 266
17.5.3创建和修改符号 266
17.5.4创建新类型的模型数据和符号 269
17.5.5添加和改变符号更新器 271
17.6事件控制器和事件处理器 274
17.6.1事件控制器 274
17.6.2事件处理器 275
17.6.3创建事件处理器 275
17.6.4注册事件处理器 276
17.6.5获取事件处理器的句柄 276
17.6.6向插件程序添加事件处理器 277
17.7使用DtVrfGuiDefaultFactory工厂添加功能 277
17.8定制GUI 279
17.8.1应用程序窗口初始化 279
17.8.2添加工具栏 281
17.8.3创建和编辑菜单 283
17.8.4在地形图上绘图 290
17.8.5在地形图上直接绘图 291
17.8.6改变对话框 292
17.8.7战术图层 292
17.9转换坐标系统和单位 297
17.9.1 DtTMUnitConverterCollection 297
17.9.2 DtTerrainCoordinateSystemCollection 298
17.10检测通视性交叉 299
17.10.1计算实体交叉 299
17.10.2向文件中保存数据 300
17.11优化GUI性能 303
17.11.1 tick管理 303
17.11.2标记数据进行更新 303
17.11.3优化滤波器镜头的使用 304
17.11.4实体超时 305
第18章 实例——Examples 306
18.1关于vrfSirn的例子 306
18.2关于vrfGUI的例子 307
18.3远程控制VR-Forces 311
18.3.1模拟系统的一般结构 312
18.3.2设计方案 312
18.3.3实现 313
18.4添加新组件 318
18.4.1利用组件代码生成器 320
18.4.2模型组件的类结构 320
18.4.3组件端口的创建 324
18.4.4添加入口 325
18.4.5向实体参数数据库添加入口 325
18.4.6连接组件 326
18.4.7载入plug-ins 326
18.5 VR-Forces GUI开发 327
18.5.1 GUI的类结构 327
18.5.2修改菜单项 328
18.5.3界面开发案例 330
附录A rid.mtl参数 334
附录B vrfSim.mtl参数 342
附录C vrfGui.mtl参数 345
附录D MAK RTI性能 347
参考文献 349