第1章 计算机图形学 1
1.1 计算机图形学概述 1
1.2 计算机图形学的发展历史 2
1.3 计算机图形学的应用领域 3
1.3.1 计算机辅助设计(CAD/CAM) 4
1.3.2 科学计算可视化 4
1.3.3 图形化的用户界面 5
1.3.4 电脑游戏 5
1.3.5 动画特效 5
1.3.6 地理信息系统 6
1.3.7 虚拟现实系统 7
1.3.8 计算机艺术 8
1.4 计算机图形设备与图形系统 8
1.4.1 计算机图形设备 8
1.4.2 计算机图形系统 10
1.5 计算机图形的最新发展动向 10
本章小结 11
习题 11
第2章 基本图形生成算法 12
2.1 图形光栅化的原理 12
2.2 直线的光栅化算法 13
2.2.1 逐点比较法 13
2.2.2 数值微分法 15
2.2.3 中点Bresenham算法 15
2.3 圆的光栅化算法 18
2.3.1 简单方程法产生圆弧 18
2.3.2 Bresenham算法产生圆弧 19
2.4 其他图形的光栅化算法 20
2.5 基本图元的代码实现 21
2.5.1 基本图元的C语言实现 21
2.5.2 基本图元的MFC实现 22
2.6 多边形填充 23
2.7 宽图元 25
2.7.1 复制像素画宽图元 25
2.7.2 移动画笔画宽图元 26
本章小结 27
习题 27
第3章 3D图形中的数学基础 28
3.1 坐标系 28
3.2 向量 30
3.2.1 向量的基本概念 30
3.2.2 向量的基本运算 30
3.2.3 向量的代码实现 32
3.3 矩阵 33
3.3.1 矩阵的基本概念 33
3.3.2 矩阵的基本运算 34
3.3.3 Direct3D中的矩阵 35
3.4 空间几何的运算 36
3.4.1 几何形体的表达 36
3.4.2 几何体之间的空间关系 38
本章小结 41
习题 41
第4章 图形变换 43
4.1 二维及三维图形几何变换 43
4.1.1 二维图形几何变换 43
4.1.2 三维图形几何变换 47
4.2 投影与投影变换 49
4.2.1 平行投影 49
4.2.2 透视投影 50
4.3 图形变换的实现 53
4.3.1 Direct3D中的矩阵 53
4.3.2 Direct3D中的矩阵变换 54
4.4 编程实例 56
本章小结 57
习题 58
第5章 三维场景绘制基础 59
5.1 三维场景绘制流水线 59
5.1.1 世界变换 59
5.1.2 观察空间变换 59
5.1.3 背面拣选 61
5.1.4 光照 61
5.1.5 裁剪 61
5.1.6 投影 64
5.1.7 视口变换 65
5.1.8 光栅化 66
5.2 Direct3D的绘制流程 66
5.2.1 创建场景 66
5.2.2 绘制场景 69
5.2.3 Direct3D绘制流水线 71
本章小结 72
习题 73
第6章 真实感图形光照处理 74
6.1 3D图形的颜色原理 74
6.1.1 颜色的光学性质 74
6.1.2 CIE色度图 75
6.1.3 颜色空间模型 77
6.2 光照明模型 79
6.2.1 简单光照明模型 79
6.2.2 基于简单光照明模型的多边形绘制 83
6.2.3 整体光照明模型和光线跟踪算法 84
6.3 光照的Direct3D编程实现 86
6.3.1 Direct3D颜色定义 86
6.3.2 光源 88
6.3.3 材质 91
6.3.4 Direct3D顶点颜色 91
本章小结 92
习题 92
第7章 纹理映射技术 93
7.1 纹理映射的基本原理 94
7.1.1 纹理的基本概念 94
7.1.2 纹理映射的概念 94
7.1.3 纹理映射中的几何关系 95
7.2 纹理映射的实现过程 96
7.2.1 纹理映射的OpenGL实现 96
7.2.2 纹理映射的Direct3D实现 100
7.3 高级纹理映射技术 102
7.3.1 纹理的优化处理技术 102
7.3.2 多重纹理映射 104
7.3.3 凹凸纹理 105
7.3.4 环境映射技术 108
本章小结 111
习题 111
第8章 场景组织与管理技术 112
8.1 3D场景组织方式 112
8.1.1 场景图 112
8.1.2 基于绘制状态的场景管理 114
8.2 优化场景绘制的几何剖分技术 115
8.2.1 四叉树 115
8.2.2 八叉树 116
8.2.3 BSP树 117
8.3 三维场景的快速可见性判断 119
8.3.1 入口技术 119
8.3.2 遮挡剔除 121
8.3.3 潜在可见集方法 123
8.4 LOD加速绘制技术 124
8.4.1 LOD技术分类 125
8.4.2 LOD的主要简化方法分类 125
8.4.3 典型LOD的简化方法 126
本章小结 127
习题 127
第9章 游戏特效绘制技术 128
9.1 广告牌技术 128
9.2 粒子系统技术 130
9.2.1 粒子的属性 130
9.2.2 粒子系统的创建 131
9.3 精灵动画技术 132
9.4 Warping特效技术 134
9.5 烟、雾、火特效技术 136
9.5.1 粒子系统 137
9.5.2 分形几何 137
9.5.3 过程纹理 137
9.5.4 细胞自动机 137
9.5.5 基于物理的方法 137
9.6 眩光特效技术 139
9.6.1 太阳及镜头光晕的绘制 139
9.6.2 光晕淡入淡出效果 140
9.6.3 可见性判断 140
本章小结 141
习题 141
第10章 地形绘制技术 142
10.1 地形绘制的基本理论 142
10.1.1 地形生成 142
10.1.2 地表纹理 144
10.1.3 地形光照 145
10.1.4 地形的雾化效果 147
10.2 简单地形的绘制方法 147
10.2.1 生成地形高度数据 147
10.2.2 创建地形网格 148
10.2.3 添加纹理 149
10.2.4 计算阴影 149
10.2.5 添加雾化效果 150
10.3 高级地形绘制技术 150
10.3.1 地形LOD技术简介 151
10.3.2 基于GeoMipmapping的地形LOD技术 152
本章小结 155
习题 156
第11章 阴影绘制技术 157
11.1 阴影的基本原理 157
11.2 平面阴影技术 158
11.2.1 投影矩阵 158
11.2.2 模板缓存 159
11.2.3 绘制过程 160
11.3 复杂阴影实现技术 161
11.3.1 阴影图算法 161
11.3.2 阴影体算法 163
本章小结 166
习题 167
第12章 碰撞检测技术 168
12.1 碰撞检测的基本原理 168
12.1.1 概念 168
12.1.2 碰撞检测问题描述 170
12.1.3 碰撞检测算法分类 171
12.2 高级碰撞检测技术 176
12.2.1 基于图像空间的碰撞检测算法 176
12.2.2 基于一般表示模型的碰撞检测算法 177
12.2.3 面向可变形体的碰撞检测算法 177
12.3 基本碰撞检测算法实现 178
12.3.1 使用边界框测试碰撞 178
12.3.2 使用边界球测试碰撞 180
12.4 示例程序 181
12.4.1 边界框碰撞 181
12.4.2 边界球碰撞 185
本章小结 188
习题 188
第13章 计算机动画技术 189
13.1 计算机动画概述 189
13.2 计算机三维动画过程 190
13.3 关键帧动画 192
13.4 过程动画 193
13.4.1 三维纹理映射与过程纹理 193
13.4.2 L系统 194
13.4.3 傅里叶合成技术 197
13.5 变形动画 197
13.6 基于物理模型的动画 199
13.6.1 刚体动力学模拟 200
13.6.2 弹性变形体模拟 200
13.6.3 流体模拟 200
13.7 人体和关节动画 201
13.7.1 人体骨架模型 201
13.7.2 运动学方法 202
13.7.3 动力学方法 203
13.7.4 基于运动捕获的方法 204
本章小结 214
习题 215
第14章 GPU硬件加速技术 216
14.1 GPU硬件加速的原理 217
14.2 GPU与CPU比较 218
14.3 HLSL着色器 218
14.3.1 HLSL简介 218
14.3.2 HLSL的数据类型 219
14.3.3 编写HLSL着色器代码 219
14.3.4 在Direct3D程序中加载HLSL 221
14.3.5 HLSL的Effect框架 222
14.3.6 基于HLSL的光照效果程序 223
14.4 GLSL着色器 225
14.4.1 GLSL数据类型 226
14.4.2 GLSL的输入输出 226
14.4.3 顶点着色器与片段着色器操作 231
14.4.4 GLSL光照示例程序 232
本章小结 237
习题 237
附录A 图形开发库Direct3D编程入门 238
附录B OpenGL简介 249
参考文献 254