第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 各种数据结构定义 19
2.3.1 类Scene的定义 20
2.3.2 类ChunkFile的定义 22
2.3.3 3DS文件输入输出类的定义 22
第3章 实现3DS对象的输入与显示 27
3.1 添加“输入3DS”对话框 27
3.1.1 编辑“输入3DS”对话框 27
3.1.2 创建“输入3DS”对话框类 27
3.1.3 添加成员变量 29
3.1.4 添加消息处理成员函数 29
3.1.5 添加3DS文件名称处理类 32
3.2 添加“正在输入”对话框 33
3.2.1 编辑“正在输入”对话框 33
3.2.2 建立“输入3DS”对话框类 34
3.2.3 添加成员变量 34
3.2.4 添加消息处理成员函数 34
3.2.5 添加输入线程函数 37
3.3 添加对象的显示源代码 39
3.4 添加3DS输入菜单 43
3.4.1 编辑菜单资源 43
3.4.2 添加菜单响应函数 43
第4章 实现对象的编辑功能 47
4.1 添加“细节编辑”对话框 47
4.1.1 编辑“细节编辑”对话框 47
4.1.2 建立“细节编辑”对话框类 48
4.1.3 添加控件变量 49
4.1.4 添加消息处理成员函数 49
4.2 添加“材质编辑”对话框 60
4.2.1 编辑“材质编辑”对话框 60
4.2.2 建立“材质编辑”对话框类 62
4.2.3 添加控件变量 62
4.2.4 添加消息处理成员函数 63
4.3 添加“映射编辑”对话框 72
4.3.1 编辑“映射编辑”对话框 72
4.3.2 建立“映射编辑”对话框类 73
4.3.3 添加消息处理成员函数 73
4.4 添加菜单项 80
4.4.1 编辑菜单资源 80
4.4.2 添加菜单响应函数 81
4.5 添加对象选择功能 84
4.5.1 添加鼠标左键单击函数 84
4.5.2 选择功能的实现 85
第5章 实现场景的编辑功能 89
5.1 修改背景颜色 89
5.1.1 编辑菜单 89
5.1.2 添加菜单响应函数 90
5.1.3 添加背景修改源代码 92
5.2 修改环境光照 93
5.2.1 编辑菜单 93
5.2.2 添加菜单响应函数 94
5.2.3 添加环境光照设置源代码 96
第6章 增强显示功能 98
6.1 改变对象的显示模式 98
6.1.1 编辑菜单 98
6.1.2 添加菜单响应函数 99
6.1.3 添加对象的不同绘制模式源代码 101
6.2 改变观察视点 105
6.2.1 编辑菜单 105
6.2.2 添加菜单响应函数 106
6.2.3 添加不同视点的对象的绘制源代码 108
第7章 实现文档的存取功能 113
7.1 三维场景文档的数据结构 113
7.2 文档串行化机制 115
7.3 文档存取功能的具体实现 115
7.4 CObject类的读写 125
第8章 实现场景3DS文件输出 130
8.1 输出3DS文件的类的定义 130
8.2 添加菜单响应函数 144
8.2.1 编辑菜单 144
8.2.2 添加菜单响应函数 144
第9章 实现视频捕捉功能 148
9.1 捕捉静止图像 148
9.1.1 添加捕捉静止图像的类 148
9.1.2 添加菜单响应函数 155
9.2 捕捉动态图像 157
9.2.1 添加捕捉动态图像的类 157
9.2.2 添加“设置捕捉”对话框 162
9.2.3 添加菜单响应函数 164
第10章 实现三维场景的渲染输出 170
10.1 添加“光线追踪”对话框 170
10.1.1 编辑“光线追踪”对话框 170
10.1.2 建立“光线追踪”对话框类 171
10.1.3 添加成员变量 171
10.1.4 添加消息处理成员函数 172
10.2 添加“图形”对话框 176
10.2.1 编辑“图形”对话框 176
10.2.2 建立“图形”对话框类 177
10.2.3 添加消息处理成员函数 177
10.3 添加菜单响应 184
10.3.1 编辑菜单资源 184
10.3.2 添加菜单响应函数 184
第11章 其他功能的实现 187
11.1 全屏显示功能的实现 187
11.1.1 添加全屏显示菜单项 187
11.1.2 添加源代码 187
11.2 屏幕打印功能的实现 190
11.2.1 添加内存管理的类 191
11.2.2 添加打印源代码 194
11.3 添加软件封面 195
第12章 三维空战游戏实例 198
12.1 三维游戏概述 198
12.2 游戏内容简介 199
12.3 关键技术简介 201
12.4 数据结构定义 201
12.4.1 基本类的定义 201
12.4.2 星空背景的的定义 210
12.4.3 飞行器的定义 211
12.4.4 爆炸效果的定义 217
12.4.5 三维流星实体的定义 223
12.4.6 游戏类的定义 229
12.4.7 屏幕文字的绘制 241
12.5 声音效果处理 243
12.5.1 音频播放设备处理 244
12.5.2 音频文件处理 244
12.6 编程实现步骤 246
12.6.1 建立程序框架 246
12.6.2 宏定义与全局变量 247
12.6.3 添加成员变量与成员函数 247
12.6.4 添加成员函数的执行源代码 247
12.6.5 进入游戏 250
第13章 构建一个三维游戏引擎 251
13.1 三维游戏引擎简介 251
13.2 一个三维游戏引擎实例 252
13.2.1 引擎介绍 252
13.2.2 数据管理 253
13.2.3 输入系统 271
13.2.4 引擎核心和游戏循环 278
13.2.5 处理摄像机 282
13.2.6 音频系统 287
13.2.7 场景管理 295
13.2.8 其他数据的定义与处理 297
13.2.9 主程序 301
13.3 “恐怖之战”游戏制作实例 303
13.3.1 游戏介绍 303
13.3.2 添加“敌人” 303
13.3.3 添加游戏者 311
13.3.4 添加武器 312
13.3.5 处理爆炸效果 317
13.3.6 处理人机界面 321
13.3.7 编辑场景 324
13.3.8 编辑主程序 330
13.3.9 进入游戏 331
第14章 导弹试验模拟系统 333
14.1 设计思想介绍 334
14.2 导弹三维模型和纹理输入 335
14.2.1 BMP纹理数据的读取 335
14.2.2 MilkShape 3D模型的读取 338
14.3 编程实现步骤 347
14.3.1 建立程序框架 347
14.3.2 宏定义与结构体定义 348
14.3.3 添加成员变量与成员函数 350
14.3.4 导弹发射架的绘制 352
14.3.5 地形的绘制 353
14.3.6 导弹的绘制 354
14.3.7 目标靶的绘制 355
14.3.8 导弹尾焰的绘制 360
14.3.9 爆炸效果的绘制 361
14.3.10 爆炸碎片的绘制 362
14.3.11 视点的设置 363
14.3.12 数据初始化操作 366
14.3.13 场景绘制 367
14.3.14 编译运行 369
第15章 飞机地形漫游系统 370
15.1 设计思想介绍 370
15.2 编程实现步骤 370
15.2.1 建立程序框架 371
15.2.2 宏定义与结构体定义 371
15.2.3 添加成员变量与成员函数 373
15.2.4 地形的初始化与绘制 375
15.2.5 飞机数据的初始化 376
15.2.6 飞机飞行与绘制 377
15.2.7 子弹数据的初始化 378
15.2.8 子弹的飞行与绘制 379
15.2.9 飞机尾焰的初始化与计算 380
15.2.10 飞机尾焰的绘制 381
15.2.11 视点设置 382
15.2.12 场景绘制 384
15.2.13 编译运行 385
第16章 飞行动力学模拟系统 386
16.1 设计思想介绍 386
16.2 编程实现步骤 387
16.2.1 建立程序框架 387
16.2.2 宏定义与结构体定义 387
16.2.3 添加成员变量与成员函数 388
16.2.4 全局变量的定义 390
16.2.5 地形的初始化 391
16.2.6 粒子系统的初始化 392
16.2.7 线框模式绘制 393
16.2.8 纹理模式绘制 394
16.2.9 地形的绘制 394
16.2.10 天空的绘制 396
16.2.11 太阳的绘制 397
16.2.12 水的绘制 397
16.2.13 飞机与尾焰的绘制 398
16.2.14 添加按键响应函数 401
16.2.15 场景绘制 403
16.2.16 各种数据计算 404
16.2.17 编译运行 405