本书将在内容上偏重于三维计算机图形的最新技术,在介绍基本图形生成处理技术的基础上,进一步介绍了特效绘制技术、LOD技术、GPU加速技术等,以及3D图形开发技术的最新进展。同时教材将理论结合实际,着重培养学生的编程实现能力,即利用DirectX或OpenGL进行图形编程的能力,通俗易懂、深入浅出,并较多地融合最新3D游戏图形开发技术和作者在从事相关领域科研开发工作时的成果。作者还将根据教学实践自主开发了一套“3D图形教学辅助演示系统”,可以交互地演示图形生成过程,效果直观,交互方便,便于学生理解。
随着计算机软硬件技术的进步,计算机图形学技术发展很快,在各方面的应用也越来越广。特别是近几年以动画、游戏为代表的数字娱乐产业的迅猛发展,极大地推动了计算机图形学相关学科的发展。目前计算机图形学是计算机应用、软件工程、数字媒体等专业的核心课之一。
我们自2005年开始教授计算机图形学课程以来,一直较难找到一本合适的教科书,目前市面上的教材中虽然不乏优秀之作,但我们发现这些教材在用于实际教学时还存在以下一些问题:
1)多以二维图形和理论阐述为主。对直线、圆、曲线等基本图形算法讲述较多,但是目前的图形学应用主要是3D的,二维图形算法已经非常成熟和硬件化了。
2)对当前应用领域中所用到的最新图形技术涉及较少。随着动画、游戏等技术的发展,计算机图形技术涌现了越来越多的新方法和新技术,但现有的教材无法紧跟最新技术的发展,内容陈旧。
3)实践案例教学内容欠缺。目前的教材没有理论结合实践,缺乏讲解具体算法的实现方法,要么主要讲理论,要么讲程序语言OpenGL的简单使用方法,与实际应用需求严重脱节,使得学生学习一学期后也无法进行具体的图形编程。
为此,迫切需要有一本教学内容与时俱进、理论与实践并重的教材,不仅要把经典计算机图形学的基本原理讲透,而且能适当融合当前三维计算机图形技术的最新发展,并结合具体实践开展案例教学。基于上面的考虑,我们编写了这本教材,并已经以讲义的形式进行过几年的教学,效果良好。
本书在内容上偏重于三维计算机图形的最新技术,在介绍基本图形生成处理技术的基础上,进一步介绍了特效绘制技术、LOD技术、GPU加速技术等,以及3D图形开发技术的最新进展。同时本书将理论与实际相结合,着重培养学生的编程实现能力,即利用DirectX或OpenGL进行图形编程的能力。此外,本书通俗易懂、深入浅出,并较多地融合了最新3D游戏图形开发技术以及作者在相关领域的科研成果。作者还根据教学实践开发了一套辅助教师教学的“3D图形教学辅助演示系统”,该系统可以交互地演示图形生成过程,效果直观,交互方便,便于学生理解。
本书的主要特色:
1)偏重最新的3D计算机图形技术。用较少的篇幅介绍最经典的二维图元绘制算法,然后重点介绍当前用得最广泛的三维图形技术,融合最新3D游戏图形开发技术和作者在相关领域的科研成果。
2)理论结合实际。在每一章讲完理论后,紧接着介绍如何采用DirectX或OpenGL进行具体编程实现的方法和步骤,使学生可以利用所学知识做出自己的图形,提高了学生的学习兴趣与编程能力。
3)图文并茂,交互演示。每章都有图例演示,提供相关程序运行结果截图和项目应用实例。作者根据教学实践自主开发的“3D图形教学辅助演示系统”在教学应用中获得较好的效果,很方便教师授课。教师可登录华章网站(www.hzbook.com)免费获取。
本书可以作为高校本科生的教材,也可供从事计算机图形学、游戏和动画开发等工作的研究生、科研人员和从业人员参考。
本书在编写的过程中得到了机械工业出版社的大力支持,也得到彭群生、王章野、伍品芳等教授的指导和帮助,同时得到了张卓鹏、李晨辉、许彦如、肖昭、栾天娇、戴金球、钱嫕婧等同学的帮助,在此一并表示感谢。
由于作者水平有限,不妥和错误之处恳请广大读者批评指正。
编者
2010年6月
计算机\图形图像
本书结合了作者多年教授计算机图形学课程及从事相关领域研究的经验编写而成,是一本教学内容与时俱进、理论与实践并重的教材,不仅透彻地讲解了经典计算机图形学的基本原理,而且融合了当前3D计算机图形技术的最新发展,并结合具体实践开展案例教学,使学生能快速掌握3D计算机图形学技术。
本书特色:
着重介绍最新的3D计算机图形技术,融合了最新的3D游戏图形开发技术和作者在相关领域的科研成果。
理论结合实际,培养学生的编程实现能力。
图文并茂,交互演示。书中含有大量的图例和项目应用实例。
本书为授课教师提供电子教案和教辅,其中包括作者自主开发的“3D图形教学辅助演示系统”,生动形象,直观易懂,在实际教学中获得了广泛的好评。
前言
教学建议
第1章计算机图形学1
11计算机图形学概述1
12计算机图形学的发展历史2
13计算机图形学的应用领域3
131计算机辅助设计 (CAD/CAM)4
132科学计算可视化4
133图形化的用户界面5
134电脑游戏5
135动画特效5
136地理信息系统6
137虚拟现实系统7
138计算机艺术8
14计算机图形设备与图形系统8
141计算机图形设备8
142计算机图形系统10
15计算机图形的最新发展动向10
本章小结11
习题11
第2章基本图形生成算法12
21图形光栅化的原理12
22直线的光栅化算法13
221逐点比较法13
222数值微分法15
223中点Bresenham算法15
23圆的光栅化算法18
231简单方程法产生圆弧18
232Bresenham算法产生圆弧19
24其他图形的光栅化算法20
25基本图元的代码实现21
251基本图元的C语言实现21
252基本图元的MFC实现22
26多边形填充23
27宽图元25
271复制像素画宽图元25
272移动画笔画宽图元26
本章小结27
习题27
第3章3D图形中的数学基础28
31坐标系28
32向量30
321向量的基本概念30
322向量的基本运算30
323向量的代码实现32
33矩阵33
331矩阵的基本概念33
332矩阵的基本运算34
333Direct3D中的矩阵35
34空间几何的运算36
341几何形体的表达36
342几何体之间的空间关系38
本章小结41
习题41
第4章图形变换43
41二维及三维图形几何变换43
411二维图形几何变换43
412三维图形几何变换47
42投影与投影变换49
421平行投影49
422透视投影50
43图形变换的实现53
431Direct3D中的矩阵53
432Direct3D中的矩阵变换54
44编程实例56
本章小结57
习题58
第5章三维场景绘制基础59
51三维场景绘制流水线59
511世界变换59
512观察空间变换59
513背面拣选61
514光照61
515裁剪61
516投影64
517视口变换65
518光栅化66
52Direct3D的绘制流程66
521创建场景66
522绘制场景69
523Direct3D绘制流水线71
本章小结72
习题73
第6章真实感图形光照处理74
613D图形的颜色原理74
611颜色的光学性质74
612CIE色度图75
613颜色空间模型77
62光照明模型79
621简单光照明模型79
622基于简单光照明模型的多边形绘制83
623整体光照明模型和光线跟踪算法84
63光照的Direct3D编程实现86
631Direct3D颜色定义86
632光源88
633材质91
634Direct3D顶点颜色91
本章小结92
习题92
第7章纹理映射技术93
71纹理映射的基本原理94
711纹理的基本概念94
712纹理映射的概念94
713纹理映射中的几何关系95
72纹理映射的实现过程96
721纹理映射的OpenGL实现96
722纹理映射的Direct3D实现100
73高级纹理映射技术102
731纹理的优化处理技术102
732多重纹理映射104
733凹凸纹理105
734环境映射技术108
本章小结111
习题111
第8章场景组织与管理技术112
813D场景组织方式112
811场景图112
812基于绘制状态的场景管理114
82优化场景绘制的几何剖分技术115
821四叉树115
822八叉树116
823BSP树117
83三维场景的快速可见性判断119
831入口技术119
832遮挡剔除121
833潜在可见集方法123
84LOD加速绘制技术124
841LOD技术分类125
842LOD的主要简化方法分类125
843典型LOD的简化方法126
本章小结127
习题127
第9章游戏特效绘制技术128
91广告牌技术128
92粒子系统技术130
921粒子的属性130
922粒子系统的创建131
93精灵动画技术132
94Warping特效技术134
95烟、雾、火特效技术136
951粒子系统137
952分形几何137
953过程纹理137
954细胞自动机137
955基于物理的方法137
96眩光特效技术139
961太阳及镜头光晕的绘制139
962光晕淡入淡出效果140
963可见性判断140
本章小结141
习题141
第10章地形绘制技术142
101地形绘制的基本理论142
1011地形生成142
1012地表纹理144
1013地形光照145
1014地形的雾化效果147
102简单地形的绘制方法147
1021生成地形高度数据147
1022创建地形网格148
1023添加纹理149
1024计算阴影149
1025添加雾化效果150
103高级地形绘制技术150
1031地形LOD技术简介151
1032基于GeoMipmapping的地形LOD技术152
本章小结155
习题156
第11章阴影绘制技术157
111阴影的基本原理157
112平面阴影技术158
1121投影矩阵158
1122模板缓存159
1123绘制过程160
113复杂阴影实现技术161
1131阴影图算法161
1132阴影体算法163
本章小结166
习题167
第12章碰撞检测技术168
121碰撞检测的基本原理168
1211概念168
1212碰撞检测问题描述170
1213碰撞检测算法分类171
122高级碰撞检测技术176
1221基于图像空间的碰撞检测算法176
1222基于一般表示模型的碰撞检测算法177
1223面向可变形体的碰撞检测算法177
123基本碰撞检测算法实现178
1231使用边界框测试碰撞178
1232使用边界球测试碰撞180
124示例程序181
1241边界框碰撞181
1242边界球碰撞185
本章小结188
习题188
第13章计算机动画技术189
131计算机动画概述189
132计算机三维动画过程190
133关键帧动画192
134过程动画193
1341三维纹理映射与过程纹理193
1342L系统194
1343傅里叶合成技术197
135变形动画197
136基于物理模型的动画199
1361刚体动力学模拟200
1362弹性变形体模拟200
1363流体模拟200
137人体和关节动画201
1371人体骨架模型201
1372运动学方法202
1373动力学方法203
1374基于运动捕获的方法204
本章小结214
习题215
第14章GPU硬件加速技术216
141GPU硬件加速的原理217
142GPU与CPU比较218
143HLSL着色器218
1431HLSL简介218
1432HLSL的数据类型219
1433编写HLSL着色器代码219
1434在Direct3D程序中加载HLSL221
1435HLSL的Effect框架222
1436基于HLSL的光照效果程序223
144GLSL着色器225
1441GLSL数据类型226
1442GLSL的输入输出226
1443顶点着色器与片段着色器操作231
1444GLSL光照示例程序232
本章小结237
习题237
附录A图形开发库Direct3D编程入门238
附录BOpenGL简介249
参考文献254