本书主要内容包括几何变换、透视投影、曲面建模、线消隐与面消隐、光照与纹理。作为首批国家级一流本科课程“计算机图形学”的建设成果,本书基于Visual Studio 2022的MFC集成开发环境,使用C 语言编程绘制了计算机图形学算法的动画效果,实现了“原理、算法、代码”的统一。本次修订在保持前两版特色的基础上主要做了以下3方面的改变:第一,使用曲面建模技术,将三维模型由立方体、球、圆环等简单模型扩展为茶壶、花瓶等复杂模型(本书中使用Utah茶壶作为绘制效果展示的主要模型);第二,为了适应计算机图形学前沿需求的新变化,将光照与纹理两章作为重点内容进行详细介绍;第三,纹理映射是光栅化图形学的最高阶段,增加了法线贴图、视差贴图、环境贴图等新内容。
本书可以作为本科生和研究生教材,也可供计算机图形学爱好者学习使用。为了便于开展理论教学与实践教学,本书配有《计算机图形学实践教程(Visual C 版)》(第3版)、《计算机图形学基础教程(Visual C 版)(第3版)教师用书》和课件、教案、教学大纲、授课计划等配套教学资源。
笔者花费了七年多时间,打造了“省级精品资源共享课+系列化教材+数字化教学资源”的立体化计算机图形学教学平台。2006年建设完成省级精品课程“C 程序设计”后,直接基于Visual C 中的MFC框架,采用案例化教学方法建设了“计算机图形学”教学资源。2008年笔者主持的“计算机图形学”课程被评为省级精品课程,出版了《计算机图形学基础教程(Visual C 版)》《计算机图形学实践教程(Visual C 版)》两本教材,并双双获得兵工高校优秀教材一等奖,随后相继出版了《计算机图形学基础教程(Visual C 版)习题解答与编程实践》《计算机图形学实验及课程设计(Visual C 版)》等系列教材,其中《计算机图形学实践教程(Visual C 版)》提供了与《计算机图形学基础教程(Visual C 版)》中所讲解原理一一对应的案例,共计43个。这些案例被国内的近百所院校试用后,给予了肯定。下面是某高校教师对本书的评价:
“教材提供了丰富的教学资源,涵盖了计算机图形学原理的主要知识点,由于采用Visual C 的MFC编程可以模拟真实感光照以及纹理等效果,对学生很有吸引力,对提升计算机图形学的教学效果也很有帮助。原理的案例化可以让学生从容面对枯燥的图形数学模型及绘制算法,能尽快直观地体验到真实效果并深刻理解绘制算法的原理”。
下面是某高校本科生对本书的评价:
“我是一名三年级本科生,学校开设了计算机图形学这门课程,出于兴趣,我也选择了这门课程,并且很荣幸地读到了您的作品。清晰的讲解也给我留下了很深刻的印象 ,我甚至可以不用听老师讲解就可以通过看书将后面的大部分习题解答出来。当优美的图形在我点下那个感叹号后突然显示的时候,那种感觉是美妙的!”
读者的肯定是改版的动力。本书第2版在保留第1版体系结构的基础上,重写了所有章节,调整三维坐标系z轴的指向为垂直于屏幕指向读者,方便了ZBuffer算法的理解与实现;完善了真实感图形章节的内容,新增了简单透明模型、简单阴影模型、图像纹理、几何纹理等内容。相应地,《计算机图形学实践教程(Visual C 版)》(第2版)中的案例也由43个扩充为60个。
笔者将《计算机图形学实践教程(Visual C 版)》(第2版)的60个案例、《计算机图形学基础教程(Visual C 版)习题解答与编程实践》的近200个习题解答与拓展案例、《计算机图形学实验及课程设计(Visual C 版)》的18个上机实验与5个课程设计案例集结在一起建设了计算机图形学实践教学资源库。2012年“计算机图形学实践教学资源库的建设”被评为省级教学成果一等奖。该成果将计算机图形学实践教学资源划分为“验证性资源”“综合性资源”“创新性资源”“工程化资源”4部分,涵盖了前面介绍的近300个案例以及20个3ds max模型。“计算机图形学实践教学资源库”的全部源代码和《计算机图形学基础教程(Visual C 版)》(第2版)的教案、课件等相关教学资源免费提供在笔者的个人网站上。在建设完成“计算机图形学实践教学资源库”的基础上,笔者承担了“应用型工科院校计算机图形学教学模式的改革与实践”项目,建议教师课堂教学采用“演示案例”“讲解原理”“对照代码”“拓展案例”的教学模式讲授计算机图形学课程,以形象化的案例激发起学生学习计算机图形学的热情。该项目被评为省级教学成果二等奖。笔者主持的计算机图形学精品课程升级为省级精品资源共享课。
虽然计算机图形学领域每年有大量的新技术在不断涌现,但最基本的原理和方法却保持着相对的稳定性和连贯性。笔者是从编程角度讲授计算机图形学原理和算法,强调真实感光照模型的实现,在不使用任何图形库的前提下,仅单纯使用MFC的绘制像素点函数,按照计算机图形学的基本原理开发出可与OpenGL或Direct3D显示效果相媲美的真实感图形,参见彩色插图。更确切的说法是笔者依据本书讲解的原理搭建了一个自己的图形库,并公开了全部实现代码。读者只要在场景中构造出物体的几何模型,就可以根据假定的光照条件,动态渲染出包含材质、纹理的真实感图形,给人以如临其境、如见其物的视觉效果。
本书第2版是在“计算机图形学实践教学资源库”的基础之上编写的。用MFC编程实现本书讲到的所有原理需要花费很长时间。有幸得到博创研究所廖小谊、潘晓、左亮亮、宋准、苗雨壮、孙立广、高腾、韩周迎等人的协助,使用MFC框架开发了与本书所有原理对应的案例源代码,才使得本书彩色插图以漂亮的效果呈现在读者面前。这些彩色插图全部由笔者独立开发完成,具有相关的知识产权。本书得到2011年山西省重点教改项目“图形图像处理系列课程实践教学资源与平台的建设”的资助。
本书配套的《计算机图形学实践教程(Visual C 版)》(第2版)中60个案例的设置与本书章节的对应关系见附录A。
希望本书的出版对计算机图形学的教学工作有所帮助,感谢国内高校师生对笔者第1版作品的肯定。同时也恳请教学一线的计算机图形学教师继续提出宝贵的意见和建议,无论是针对文字、代码还是课件的。
为了更好地服务教师,笔者创建了计算机图形学教师的QQ群。目前群内已有100多位来自国内不同高校的计算机图形学教师加入。就计算机图形学话题,大家奇文共欣赏、疑义相与析。笔者在提供源程序等资源的基础上,努力做好服务工作,愿意为教师就计算机图形学教材、源程序等方面的问题提供在线帮助,解决年轻教师初次上课的后顾之忧。
感谢清华大学出版社及本书责任编辑的大力支持。编校人员认真、耐心地修改书稿给笔者留下了深刻的印象,没有这些支持,这套计算机图形学教材很难遴选为“十二五”普通高等教育国家级规划教材。
孔令德2018年5月第1版前言
计算机图形学(computer graphics,CG)是研究如何利用计算机表示、生成、处理和显示图形的一门学科。主要的算法原理包括基于光栅扫描显示器的基本图形扫描转换原理;基于齐次坐标的二维、三维图形的几何变换原理;基于几何造型的自由曲线、曲面的生成原理;基于分形几何学的分数维造型原理;基于图像空间和物体空间的三维物体动态消隐原理;基于颜色模型、光照模型和纹理映射技术的真实感图形显示原理。
本书有以下特色。
(1) 编程环境的先进性。本书采用Visual C 6.0编程环境进行算法讲解。目前市面上的计算机图形学教材大多采用Turbo C语言作为编程环境,但面向过程语言Turbo C开发的程序是基于DOS界面的,图形操作基本不具备交互性,而且只能显示256种颜色,无法生成真实感光照图形。本书选用了Microsoft公司的面向对象程序设计语言Visual C 6.0的MFC框架作为编程环境,不仅可以制作出和3ds效果一致的三维真实感图形,而且支持交互式操作。本书的彩插效果图全部使用MFC框架制作,并没有借助OpenGL或Direct 3D等图形库的支持。
(2) 所有原理算法的案例化。计算机图形学,原理众多、算法复杂。作为省级精品课程“计算机图形学”和“C 程序设计”的第一负责人,笔者在十多年的计算机图形学教学实践中,使用Visual C 6.0的MFC框架自主开发了所有原理的实现程序,做到了本书所讲解到的每个原理在配套的实践教程中都有相应的算法实现案例。
(3) 编写内容的系统化。本书配有实践教程。本书分为10章,实践教程包含和本书对应的43个案例。两本书的内容均由同一作者编写,保证了编写体系的一致性。
本书各章节主要内容如下。
第1章导论。介绍了计算机图形学的应用领域,以及图形显示设备的发展历程。
第2章MFC绘图基础。介绍面向对象程序设计基础、MFC上机操作步骤,以及CDC类的基本绘图函数。
第3章基本图形的扫描转换。讲解直线、圆、椭圆的像素级扫描转换原理,以及反走样技术。
第4章多边形填充。讲解了实面积图形的概念,有效边表填充原理和算法,边缘填充原理和算法、区域填充原理和算法。
第5章二维变换与裁剪。讲解齐次坐标,平移、比例、旋转、反射和错切的二维基本几何变换矩阵,Cohen\\|Sutherland直线段裁剪原理和算法,中点分割直线段裁剪原理和算法,以及LiangBarsky直线段裁剪原理和算法。
第6章三维变换与投影。讲解平移、比例、旋转、反射和错切的三维基本几何变换矩阵、三视图、斜轴侧图以及透视投影的变换矩阵。
第7章自由曲线与曲面。讲解三次参数样条曲线、Bezier曲线曲面和B样条曲线曲面的生成原理和算法。
第8章分形几何。讲解分形曲线的递归模型、植物的L系统模型,以及IFS 迭代函数系统等的原理和算法。
第9章建模与消隐。讲解动态凸多面体和曲面体的隐线原理和算法,动态ZBuffer的隐面原理和算法,以及画家算法的隐面原理和算法。
第10章真实感图形。讲解RGB颜色模型、Gouraud明暗处理、Phong明暗处理、光照模型,以及纹理映射技术的原理和算法。
实践教程的案例设置和本书的对应关系参见附录A。
经过历时3年的编写,本书终于要和读者见面了,其间的艰辛一言难尽。由于要用算法实现本书讲到的所有原理,程序调试花费了很长时间。幸喜在博创研究所的工作人员的协助下,使用Visual C 的MFC框架完成了本书所有原理的算法实现,本书也得以完稿。
感谢在博创研究所先后工作的人员廖小谊、彭贺亮、刘鹏、申明达、傅立群、杨铭等在程序调试方面作出的贡献。
本书及其配套的实践教程适合作为计算机科学与技术专业的本科教材。欢迎访问笔者个人网站下载《计算机图形学实践教程(Visual C 版)》的43个案例的源程序、教案、电子课件、习题解答、实验及课程设计等相关的教学资源。
希望本书的出版对读者有所帮助,请计算机图形学方面的专家提出宝贵意见,同时也希望能和广大的计算机图形学教师进行学术交流。
孔令德2008年4月