计算机图形学是利用计算机研究图形的表示、生成、处理和显示的学科。主要原理包括基于光栅扫描显示器的基本图形的扫描转换原理;基于齐次坐标的二维、三维图形的几何变换原理;基于几何造型的自由曲线、曲面的生成原理;基于多面体和曲面体的三维几何建模原理;基于像空间和物空间的三维物体面消隐原理;基于材质模型、光源模型的简单光照原理;基于颜色纹理、三维纹理和几何纹理的纹理映射原理。本书采用类架构建立了三维光照场景,给定光源位置、视点位置和视线方向,只要简单地改变数据文件中物体的顶点表和表面表,就可以生成不同物体的真实感图形动画。
本书有以下特色。
1. 编程环境的先进性。本书选用了Microsoft公司的面向对象程序设计语言Visual C++的MFC框架作为编程环境,不仅可以制作出和3ds max效果一致的三维真实感图形,而且支持交互式操作。
2. 所有原理的案例化。本书从编程角度讲解计算机图形学,要求所讲解的原理都产生相应的图形效果。笔者使用MFC框架自主开发了本书所有原理的案例,做到本书所讲解到的每个原理都有一个对应的源程序。
3. 所有图形彩色显示。计算机图形学是研究由物体的三维几何模型得到二维图像的技术。本书使用真彩色表示光照、纹理等特殊图像效果,意在让读者切实感受到计算机图形学的视觉冲击力,从而将学习的重点放置在真实感图形部分。
本书各章节主要内容如下。
第1章导论。介绍了计算机图形学的定义、应用领域、图形显示器的工作原理以及计算机图形学目前研究的热点技术。
第2章MFC绘图基础。介绍MFC上机操作步骤,主要讲解了CDC类的主要绘图成员函数,最后给出了精美的双缓冲动画案例。本章要求重点掌握双缓冲技术。
第3章基本图元的扫描转换。讲解直线、圆和椭圆的像素级扫描转换原理,以及Wu直线反走样算法。本章要求重点掌握直线的中点Bresenham扫描转换原理和Wu反走样原理。
第4章多边形填充。讲解了有效边表填充原理、边缘填充原理以及区域填充原理,本章要求重点掌握有效边表填充原理,这是后续填充三维物体表面模型的基本原理。
第5章二维变换与裁剪。讲解二维基本几何变换矩阵,CohenSutherland直线段裁剪原理、中点分割直线段裁剪原理、LiangBarsky直线段裁剪原理以及SutherlandHodgman多边形裁剪原理。本章要求重点掌握二维几何变换。
第6章三维变换与投影。讲解三维基本几何变换、三视图、斜投影图以及透视投影的变换矩阵。本章要求重点掌握三维几何变换和透视投影原理。
第7章自由曲线与曲面。讲解Bezier曲线曲面和B样条曲线曲面的生成原理。本章要求重点掌握B样条曲线和B样条曲面的生成原理。
第8章建模与消隐。讲解描述物体的双表数据结构,多面体与曲面体的几何模型。物体的背面剔除原理以及深度缓冲面消隐和深度排序面消隐原理。本章要求重点掌握立方体、球体的几何建模方法,以及深度缓冲面消隐原理。
第9章光照模型。讲解颜色模型、材质模型、简单光照模型、Gouraud明暗处理、Phong明暗处理、简单透明模型和简单阴影模型。本章要求重点掌握RGB颜色模型、简单光照模型、Gouraud明暗处理和Phong明暗处理。
第10章纹理映射。讲解颜色纹理、三维纹理和几何纹理的定义及映射方法。给出了将函数纹理与图像纹理映射到球面、圆柱面、圆锥面和圆环面的方法,最后介绍了一种简单纹理反走样方法。本章要求重点掌握国际象棋棋盘函数纹理映射到立方体表面和球体表面的颜色纹理映射方法。
为了帮助读者巩固上述原理的学习,笔者精心设计了与本书讲解的原理一一对应的60个案例源程序。每个案例全部按照本书原理的算法步骤编码,可以互相参照学习。本书中所使用的效果图均出自这些案例。请购买本书的读者到笔者的个人网站上下载这60个源程序。为了方便教学,笔者也提供了各章的教学课件,并建立了计算机图形学教师群,愿意与全国高校的计算机图形学教师一起分享教学经验。
虽然计算机图形学领域每年有大量的新技术不断涌现,但绘制图形的基本原理和方法却一直保持着连贯性和稳定性。笔者是从计算机编程角度讲授计算机图形学原理,在不使用任何图形库的前提下,单纯使用MFC的绘制像素点成员函数(CDC::SetPixelV),按照本书讲解的计算机图形学原理开发出与OpenGL或Direct3D显示效果一致的真实感图形。更确切地说是笔者依据本书讲解的原理搭建了一个自主开发的图形库。只要在场景中构造出物体的几何模型,就可以根据假定的光照条件,动态渲染出包含材质、纹理的真实感图形,产生如临其境、如见其物的视觉效果。
感谢清华大学出版社编校人员对本书的大力支持,感谢国内计算机图形学教师对笔者的认可,感谢计算机图形学读者对源程序的厚爱。恳请从事计算机图形研究的专家学者继续提出宝贵的建议和意见,无论是针对文字、代码还是课件的。如果读者在学习期间有什么疑问,请添加笔者的QQ进行联系或者QQ留言,笔者将提供在线帮助。也可以通过QQ邮箱给笔者来信。笔者的QQ号及计算机图形学群号参见封底。
最后感谢我的妻子康凤娥女士。在我写作本书期间,给予了更多的时间;在我调试程序时,曾提出过宝贵的建议;在我完成初稿后,又进行反复校对。 “噫!微斯人,吾谁与归?”
孔令德
2013年9月
