第1章 三维场景编辑软件简介 1
1.1 软件功能介绍 1
1.2 软件界面与基本操作 2
1.2.1 菜单 2
1.2.2 工具条 4
1.2.3 基本操作 5
第2章 建立程序框架 11
2.1 利用MFC建立基于多文档的应用程序框架 11
2.1.1 创建一个新工程 11
2.1.2 设置编译环境 12
2.1.3 加入OpenGL库 13
2.2 设置OpenGL图形绘制环境 13
2.2.1 添加OpenGL头文件 13
2.2.2 添加成员变量与成员函数 14
2.2.3 添加函数的执行代码 14
2.3 各种数据结构定义 18
2.3.1 类Scene的定义 19
2.3.2 类ChunkFile的定义 21
2.3.3 3DS文件输入/输出类的定义 21
第3章 实现3DS对象的输入与显示 25
3.1 添加“输入3DS”对话框 25
3.1.1 编辑“输入3DS”对话框 25
3.1.2 创建“输入3DS”对话框类 26
3.1.3 添加成员变量 27
3.1.4 添加消息处理成员函数 27
3.1.5 添加3DS文件名称处理类 30
3.2 添加“正在输入”对话框 30
3.2.1 编辑“正在输入”对话框 31
3.2.2 建立“输入3DS”对话框类 31
3.2.3 添加成员变量 32
3.2.4 添加消息处理成员函数 32
3.2.5 添加输入线程函数 34
3.3 添加对象的显示源代码 35
3.4 添加3DS输入菜单 39
3.4.1 编辑菜单资源 39
3.4.2 添加菜单响应函数 39
第4章 实现对象的编辑功能 42
4.1 添加“细节编辑”对话框 42
4.1.1 编辑“细节编辑”对话框 42
4.1.2 建立“细节编辑”对话框类 43
4.1.3 添加控件变量 44
4.1.4 添加消息处理成员函数 44
4.2 添加“材质编辑”对话框 53
4.2.1 编辑“材质编辑”对话框 54
4.2.2 建立“材质编辑”对话框类 55
4.2.3 添加控件变量 56
4.2.4 添加消息处理成员函数 56
4.3 添加“映射编辑”对话框 64
4.3.1 编辑“映射编辑”对话框 64
4.3.2 建立“映射编辑”对话框类 65
4.3.3 添加消息处理成员函数 65
4.4 添加菜单项 71
4.4.1 编辑菜单资源 71
4.4.2 添加菜单响应函数 72
4.5 添加对象选择功能 74
4.5.1 添加鼠标左键单击函数 74
4.5.2 选择功能的实现 75
第5章 实现场景的编辑功能 79
5.1 修改背景颜色 79
5.1.1 编辑菜单 79
5.1.2 添加菜单响应函数 80
5.1.3 添加背景修改源代码 82
5.2 修改环境光照 82
5.2.1 编辑菜单 83
5.2.2 添加菜单响应函数 84
5.2.3 添加环境光照设置源代码 85
第6章 增强显示功能 88
6.1 改变对象的显示模式 88
6.1.1 编辑菜单 88
6.1.2 添加菜单响应函数 89
6.1.3 添加对象的不同绘制模式源代码 91
6.2 改变观察视点 94
6.2.1 编辑菜单 94
6.2.2 添加菜单响应函数 95
6.2.3 添加不同视点的对象的绘制源代码 97
第7章 实现文档的存取功能 101
7.1 三维场景文档的数据结构 101
7.2 文档串行化机制 102
7.3 文档存取功能的具体实现 103
7.4 CObject类的读写 111
第8章 实现场景3DS文件输出 116
8.1 输出3DS文件的类的定义 116
8.2 添加菜单响应函数 127
8.2.1 编辑菜单 127
8.2.2 添加菜单响应函数 127
第9章 实现视频捕捉功能 130
9.1 捕捉静止图像 130
9.1.1 添加捕捉静止图像的类 130
9.1.2 添加菜单响应函数 135
9.2 捕捉动态图像 137
9.2.1 添加捕捉动态图像的类 137
9.2.2 添加“设置捕捉”对话框 142
9.2.3 添加菜单响应函数 144
第10章 实现三维场景的渲染输出 149
10.1 添加“光线追踪”对话框 149
10.1.1 编辑“光线追踪”对话框 149
10.1.2 建立“光线追踪”对话框类 150
10.1.3 添加成员变量 151
10.1.4 添加消息处理成员函数 151
10.2 添加“图形”对话框 154
10.2.1 编辑“图形”对话框 154
10.2.2 建立“图形”对话框类 156
10.2.3 添加消息处理成员函数 157
10.3 添加菜单响应 162
10.3.1 编辑菜单资源 162
10.3.2 添加菜单响应函数 162
第11章 其他功能的实现 164
11.1 全屏显示功能的实现 164
11.1.1 添加全屏显示菜单项 164
11.1.2 添加源代码 164
11.2 屏幕打印功能的实现 167
11.2.1 添加内存管理的类 167
11.2.2 添加打印源代码 171
11.3 添加软件封面 171
第12章 三维空战游戏实例 174
12.1 三维游戏概述 174
12.2 游戏内容简介 175
12.3 关键技术简介 176
12.4 数据结构定义 177
12.4.1 基本类的定义 177
12.4.2 星空背景的定义 186
12.4.3 飞行器的定义 188
12.4.4 爆炸效果的定义 192
12.4.5 三维流星实体的定义 197
12.4.6 游戏类的定义 203
12.4.7 屏幕文字的绘制 214
12.5 声音效果处理 216
12.5.1 音频播放设备处理 216
12.5.2 音频文件处理 217
12.6 编程实现步骤 218
12.6.1 建立程序框架 218
12.6.2 宏定义与全局变量 219
12.6.3 添加成员变量与成员函数 219
12.6.4 添加成员函数的执行源代码 220
12.6.5 进入游戏 222
第13章 构建一个三维游戏引擎 223
13.1 三维游戏引擎简介 223
13.2 一个三维游戏引擎实例 224
13.2.1 引擎介绍 224
13.2.2 数据管理 224
13.2.3 输入系统 239
13.2.4 引擎核心和游戏循环 245
13.2.5 处理摄像机 250
13.2.6 音频系统 254
13.2.7 场景管理 261
13.2.8 其他数据的定义与处理 263
13.2.9 主程序 266
13.3 “恐怖之战”游戏制作实例 268
13.3.1 游戏介绍 268
13.3.2 添加敌人 268
13.3.3 添加游戏者 275
13.3.4 添加武器 276
13.3.5 处理爆炸效果 280
13.3.6 处理人机界面 284
13.3.7 编辑场景 286
13.3.8 编辑主程序 290
13.3.9 进入游戏 291
第14章 导弹试验模拟系统 293
14.1 设计思想介绍 294
14.2 导弹三维模型和纹理输入 295
14.2.1 BMP纹理数据的读取 295
14.2.2 MilkShape 3D模型的读取 297
14.3 编程实现步骤 305
14.3.1 建立程序框架 305
14.3.2 宏定义与结构体定义 305
14.3.3 添加成员变量与成员函数 307
14.3.4 导弹发射架的绘制 309
14.3.5 地形的绘制 309
14.3.6 导弹的绘制 311
14.3.7 目标靶的绘制 311
14.3.8 导弹尾焰的绘制 315
14.3.9 爆炸效果的绘制 316
14.3.10 爆炸碎片的绘制 317
14.3.11 视点的设置 318
14.3.12 数据初始化操作 320
14.3.13 场景绘制 322
14.3.14 编译运行 323
第15章 飞机地形漫游系统 324
15.1 设计思想介绍 324
15.2 编程实现步骤 324
15.2.1 建立程序框架 325
15.2.2 宏定义与结构体定义 325
15.2.3 添加成员变量与成员函数 327
15.2.4 地形的初始化与绘制 328
15.2.5 飞机数据的初始化 329
15.2.6 飞机飞行与绘制 330
15.2.7 子弹数据的初始化 331
15.2.8 子弹的飞行与绘制 332
15.2.9 飞机尾焰的初始化与计算 333
15.2.10 飞机尾焰的绘制 334
15.2.11 视点设置 334
15.2.12 场景绘制 336
15.2.13 编译运行 337
第16章 飞行动力学模拟系统 338
16.1 设计思想介绍 338
16.2 编程实现步骤 338
16.2.1 建立程序框架 338
16.2.2 宏定义与结构体定义 339
16.2.3 添加成员变量与成员函数 340
16.2.4 全局变量的定义 341
16.2.5 地形的初始化 342
16.2.6 粒子系统的初始化 343
16.2.7 线框模式绘制 344
16.2.8 纹理模式绘制 345
16.2.9 地形的绘制 345
16.2.10 天空的绘制 347
16.2.11 太阳的绘制 347
16.2.12 水的绘制 348
16.2.13 飞机与尾焰的绘制 348
16.2.14 添加按键响应函数 350
16.2.15 场景绘制 352
16.2.16 各种数据计算 353
16.2.17 编译运行 353
第17章 三维随机分形地形生成系统 354
17.1 随机分形地形生成原理 354
17.1.1 细节层次模型思想 354
17.1.2 分形理论 354
17.1.3 Diamond-Square算法 357
17.1.4 纹理图生成 359
17.1.5 三维随机地形模拟效果 359
17.2 编程实现步骤 360
17.2.1 建立程序框架 360
17.2.2 添加地形生成选项对话框 361
17.2.3 添加菜单项 362
17.2.4 宏定义与结构体定义 363
17.2.5 添加成员变量与成员函数 363
17.2.6 成员变量初值 365
17.2.7 光照效果的初始化 366
17.2.8 场景的绘制与渲染 366
17.2.9 天空背景纹理图绘制 369
17.2.10 地形纹理图绘制 371
17.2.11 三维地形的渲染与绘制 372
17.2.12 添加按键响应函数 374
17.2.13 添加对话框弹出函数 376
17.2.14 编译运行 377
第18章 三维织物动感模拟系统 378
18.1 织物计算机模拟原理 378
18.1.1 织物计算机模拟概述 378
18.1.2 织物模拟的质点-弹簧模型 378
18.1.3 数值求解方法 379
18.1.4 三维织物模拟效果 381
18.2 编程实现步骤 382
18.2.1 建立程序框架 382
18.2.2 添加“设置新织物”对话框 382
18.2.3 添加“添加碰撞球”对话框 384
18.2.4 添加“设置仿真特性”对话框 385
18.2.5 添加“设置仿真时间参数”对话框 386
18.2.6 添加“设置节点质量”对话框 387
18.2.7 编辑菜单项 388
18.2.8 宏定义 389
18.2.9 添加成员变量与成员函数 390
18.2.10 成员变量初值 392
18.2.11 场景的绘制与渲染 392
18.2.12 仿真控制主函数 393
18.2.13 编译运行 394