第1章 引言 1
1.1 显示的模型 1
1.1.1 矩形的像素矩阵 1
1.1.2 矢量图形 2
1.1.3 多边形的造型 3
1.2 坐标、点、线和多边形 4
1.2.1 坐标系统 4
1.2.2 在OpenGL中几何形体 4
1.3 适合动画的双缓冲区 13
第2章 变换与观察 15
2.1 二维空间中的变换 16
2.1.1 基本定义 17
2.1.2 线性变换的矩阵表示 18
2.1.3 刚性变换和旋转 20
2.1.4 齐次坐标 23
2.1.5 仿射变换的矩阵表示 23
2.1.6 OpenGL中的二维变换 25
2.1.7 再讨论组合变换 28
2.1.8 二维投影几何学 29
2.2 三维空间中的变换 30
2.2.1 从二维空间到三维空间 31
2.2.2 OpenGL中的变换矩阵 32
2.2.3 旋转矩阵的推导 36
2.2.4 欧拉(Euler)定理 39
2.2.5 三维投影几何学 40
2.3 观察变换与透视 41
2.3.2 透视变换 43
2.3.1 正投影变换 43
2.3.3 直线映射到直线 47
2.3.4 投影的另一个应用:阴影 47
2.3.5 OpenGL透视变换 48
2.4 映射到像素 52
2.4.1 Bresenham算法 55
2.4.2 浮点数四舍五入的危险 57
第3章 光照、亮度和着色 60
3.1 Phong光照模型 61
3.1.1 漫反射 63
3.1.2 镜面反射 64
3.1.4 综合:多种光源和颜色 66
3.1.3 环境反射和发射光 66
3.1.5 Gouraud和Phong渲染 67
3.1.6 计算表面法向 70
3.1.7 仿射变换及法向量 72
3.1.8 OpenGL中的光照和材料属性 73
3.2 Cook-Torrance光照模型 78
3.2.1 双向反射 78
3.2.2 Cook-Torrance模型概述 79
3.2.3 微平面分布项 81
3.2.4 几何表面遮蔽项 81
3.2.5 Fresnel项 85
4.1.1 两点之间的插值 89
第4章 均值与插值 89
4.1 线性插值 89
4.1.2 加权平均和仿射组合 90
4.1.3 三个点的插值:重心坐标 92
4.2 双线性和三线性插值 96
4.2.1 双线性插值 96
4.2.2 反向双线性插值 100
4.2.3 三线性插值 104
4.3 凸集和加权平均 105
4.4 插值和齐次坐标 107
4.5 双曲线插值 108
4.6 球面线性插值 109
5.1 图像的纹理映射 112
第5章 纹理映射 112
5.1.1 纹理插值 113
5.1.2 纹理坐标值的确定 114
5.1.3 MIP映射和反走样 117
5.1.4 随机超采样 119
5.2 凹凸贴图 120
5.3 环境映射 123
5.4 OpenGL中的纹理映射 124
5.4.1 加载纹理数据 124
5.4.2 指定纹理坐标 126
5.4.3 颜色调制 126
5.4.4 单独的高光 127
5.4.6 OpenGL中的环境映射 128
5.4.5 管理多个纹理数据 128
第6章 彩色 131
6.1 色彩感知 131
6.2 色彩值的表示 133
6.2.1 加色法和减色法 133
6.2.2 RGB颜色的表示 134
6.2.3 色调、饱和度和亮度 135
第7章 贝塞尔曲线 139
7.1 三次贝塞尔曲线 140
7.2 De Casteljau算法 142
7.3 递归细分算法 143
7.4 分段贝塞尔曲线 146
7.5 Hermite多项式 148
7.6 任意次的贝塞尔曲线 149
7.7 再谈de Casteljau算法 152
7.8 再谈递归细分算法 153
7.9 曲线的升阶 154
7.10 贝塞尔曲面 156
7.10.1 贝塞尔曲面的基本性质 156
7.10.2 贝塞尔曲面片的拼接 158
7.11 OpenGL中的贝塞尔曲线和曲面 160
7.11.1 贝塞尔曲线 160
7.11.2 贝塞尔曲面 162
7.12 有理贝塞尔曲线 163
7.13 用有理贝塞尔曲线表示圆锥曲线段 165
7.14 旋转曲面 169
7.15 使用贝塞尔曲线进行插值 171
7.15.1 Catmull-Rom样条函数 172
7.15.2 Bessel-Overhauset样条函数 173
7.15.3 张力-连续性-偏移样条函数 175
7.16 使用贝塞尔曲面进行插值 177
第8章 B样条曲线 182
8.1 均匀三次B样条 183
8.2 非均匀B样条 186
8.3 非均匀B样条示例 188
8.4 非均匀B样条的性质 193
8.5 de Boor算法 196
8.6 Blossoms算法 199
8.7 B样条曲线的导数和光滑性 202
8.8 节点插值 204
8.9 贝塞尔曲线和B样条曲线 207
8.10 升阶 208
8.11 有理B样条和NURBS曲面 209
8.12 OpenGL中的B样条和NURBS曲面 211
8.13 B样条插值 211
第9章 光线跟踪 214
9.1 光线跟踪基础 215
9.1.1 局部光照和反射光线 219
9.1.2 透射光线 220
9.1.3 算法整合 223
9.2.1 分布式光线跟踪 225
9.2 高级光线跟踪技术 225
9.2.2 反向光线跟踪 231
9.3 不使用光线跟踪的特殊效果 232
第10章 相交测试 238
10.1 有关射线的快速相交测试 239
10.1.1 射线—球相交 239
10.1.2 射线—平面相交 241
10.1.3 射线—三角形相交 242
10.1.4 射线—凸超多面体相交 244
10.1.5 射线—圆柱体相交 247
10.1.6 射线—二次曲面相交 248
10.1.7 射线—贝塞尔面片相交 248
10.2 相交测试的剪枝算法 249
第11章 辐射度 253
11.1 辐射度方程 255
11.1.1 面片、光照强度和形状因子 255
11.1.2 辐射度算法的高级描述 257
11.2 形状因子的计算 258
11.2.1 光线跟踪方法 259
11.2.2 半立方体法 260
11.3 解辐射度方程 262
11.3.1 迭代方法 262
11.3.2 雅可比(Jacobi)迭代 265
11.3.3 高斯-塞德尔(Gauss-Seidel)迭代 265
11.3.4 射击(shooting)法 266
12.1.1 由传统动画发展而来的技术 268
第12章 动画与运动学 268
12.1 概述 268
12.1.2 计算机动画 270
12.2 动画中的位置 271
12.2.1 渐进:固定目标 271
12.2.2 渐进:移动目标 272
12.3 方向的表示 273
12.3.1 旋转矩阵 274
12.3.2 偏转、倾斜和滚动 274
12.3.3 四元组 276
12.3.4 四元组的理论发展 277
12.3.5 用四元组表示旋转 279
12.3.6 四元组和旋转矩阵的转换 281
12.3.7 四元组的插值 283
12.4 运动学 284
12.4.1 刚性连接体和关节 285
12.4.2 前向运动学 286
12.4.3 反向运动学,问题的提出 288
12.4.4 反向运动学,寻找局部解 290
附录A 数学背景知识 295
A.1 预备知识 295
A.2 向量和向量积 296
A.2.1 R2中的向量 296
A.2.2 R3中的向量 299
A.3 矩阵 300
A.3.1 R3中矩阵和向量的积 301
A.3.3 线性子空间 302
A.3.2 行列式,逆矩阵和伴随矩阵 302
A.4 多元微积分 304
A.4.1 多元函数 304
A.4.2 向量值函数 305
A.4.3 多元向量值函数 305
附录B 光线跟踪软件包 307
B.1 介绍 307
B.2 高层光线跟踪函数 308
B.3 光线跟踪API 311
B.3.1 指定光源 311
B.3.2 定义相机和视窗 312
B.3.4 定义材质 314
B.3.3 按像素阵列工作 314
B.3.5 定义可见物体 315
B.3.6 可见的球 316
B.3.7 可视的三角形和平行四边形 317
B.3.8 可见的椭球 318
B.3.9 可视的圆柱体 318
B.3.10 可视的锥体 320
B.3.11 可视的平行六面体 321
B.3.12 可视的圆环 322
B.3.13 可视的贝塞尔面片 323
B.3.14 纹理映射 325
索引 328