新書推薦:
《
汉字理论与汉字阐释概要 《说解汉字一百五十讲》作者李守奎新作
》
售價:HK$
76.2
《
汗青堂丛书144·决战地中海
》
售價:HK$
168.0
《
逝去的武林(十周年纪念版 武学宗师 口述亲历 李仲轩亲历一九三零年代武人言行录)
》
售價:HK$
54.9
《
唐代冠服图志(百余幅手绘插画 图解唐代各类冠服 涵盖帝后 群臣 女官 士庶 军卫等 展现唐代社会风貌)
》
售價:HK$
87.4
《
知宋·宋代之科举
》
售價:HK$
99.7
《
那本书是(吉竹伸介与又吉直树 天才联动!)
》
售價:HK$
99.7
《
传播的跃迁:人工智能如何革新人类的交流
》
售價:HK$
110.9
《
纯粹·古代中国的历史与制度
》
售價:HK$
62.7
編輯推薦:
本书以真实感图形为主线,精选23个理论知识点进行重点讲解,并给出23个配套实验,以三维动画的方式讲解3D计算机图形学的基础理论与算法。理论部分主要包括双缓冲动画、直线光栅化、三维几何变换、曲面建模、透视投影、三角形填充、深度缓冲消隐、简单光照模型和纹理映射等内容;实验部分主要提供三角形填充算法、立方体等多面体建模算法、球体和圆环曲面体建模算法、球体的透视投影算法、立方体的ZBuffer消隐算法和画家消隐算法、球体的高洛德明暗处理算法、圆环的冯氏明暗处理算法、球体的图像纹理映射算法和凹凸纹理映射算法等项目。实验项目使用Visual C 2017的中文版MFC框架开发,提供一套完整的三维场景着色源程序代码。实验项目还提供严格按照算法编写的工具代码,包括直线类CLine、几何变换类CTransform、投影类CProjection、深度缓冲消隐类CZBuffer、光源类CLightSource、材质类CMaterial、光照类CLighting、高洛德着色器GouruaudShader和冯氏着色器PhongShader。
內容簡介:
本书以真实感图形为主线,精选23个理论知识点进行重点讲解,并给出23个配套实验,以三维动画的方式讲解3D计算机图形学的基础理论与算法。理论部分主要包括双缓冲动画、直线光栅化、三维几何变换、曲面建模、透视投影、三角形填充、深度缓冲消隐、简单光照模型和纹理映射等内容;实验部分主要提供三角形填充算法、立方体等多面体建模算法、球体和圆环曲面体建模算法、球体的透视投影算法、立方体的ZBuffer消隐算法和画家消隐算法、球体的高洛德明暗处理算法、圆环的冯氏明暗处理算法、球体的图像纹理映射算法和凹凸纹理映射算法等项目。实验项目使用Visual C 2017的中文版MFC框架开发,提供一套完整的三维场景着色源程序代码。实验项目还提供严格按照算法编写的工具代码,包括直线类CLine、几何变换类CTransform、投影类CProjection、深度缓冲消隐类CZBuffer、光源类CLightSource、材质类CMaterial、光照类CLighting、高洛德着色器GouruaudShader和冯氏着色器PhongShader。
關於作者:
孔令德, 山西太原工业学院计算机系系主任, 二级教授, 山西省杰出教学人才, 长期从事计算机科学与技术的教学与研究工作, 出版教材和专著多部, 发表论文多篇.
目錄 :
第1章 概述 1
1.1 计算机图形学的概念 1
1.2 计算机图形学的应用领域 1
1.2.1 计算机辅助设计 2
1.2.2 计算机艺术 2
1.2.3 虚拟现实技术 2
1.2.4 计算机游戏 3
1.2.5 计算机辅助教学 3
1.3 计算机图形学的诞生 3
1.4 真实感图形算法的进展 4
1.5 MFC绘图函数【理论1】 4
1.5.1 新建Test项目 4
1.5.2 自定义坐标系 6
1.5.3 绘图工具 7
1.5.4 基本绘图函数 8
1.6 实验1:鼠标绘制直线 9
1.7 双缓冲绘图算法【理论2】 11
1.8 实验2:小球与客户区边界碰撞动画 12
1.9 本章小结 17
习题1 18
第2章 直线的光栅化 19
2.1 确定主位移方向 19
2.2 DDA算法 20
2.3 Bresenham算法 21
2.3.1 Bresenham算法原理 21
2.3.2 整数Bresenham算法原理 22
2.3.3 通用整数Bresenham算法原理
【理论3】 22
2.3.4 颜色线性插值 23
2.4 实验3:使用Bresenham直线算法绘制颜色渐变三角形 23
2.5 中点算法 28
2.5.1 中点算法原理 28
2.5.2 构造中点误差项 29
2.5.3 递推公式 29
2.5.4 中点算法整数化 30
2.6 反走样技术【理论4】 31
2.6.1 走样现象 31
2.6.2 算法原理 31
2.6.3 构造距离误差项 32
2.6.4 反走样算法 32
2.7 实验4:反走样秒表 33
2.8 本章小结 35
习题2 36
第3章 几何变换 37
3.1 齐次坐标 37
3.2 二维几何变换【理论5】 38
3.2.1 二维几何变换矩阵 38
3.2.2 二维变换形式 38
3.2.3 基本几何变换矩阵 38
3.2.4 二维复合变换 43
3.3 实验5:绘制防护栏图案 43
3.4 三维变换 50
3.4.1 三维变换矩阵 50
3.4.2 三维变换形式 50
3.5 三维基本变换矩阵【理论6】 51
3.5.1 基本几何变换矩阵 51
3.5.2 三维复合变换 55
3.6 实验6:旋转立方体 56
3.7 本章小结 65
习题3 65
第4章 自由曲面建模 67
4.1 贝塞尔曲线【理论7】 67
4.1.1 贝塞尔曲线的定义 67
4.1.2 三次贝塞尔曲线绘制圆弧 70
4.1.3 贝塞尔曲线的拼接 71
4.2 实验7:使用三次贝塞尔曲线绘制圆 71
4.3 贝塞尔曲面【理论8】 75
4.3.1 双三次贝塞尔曲面的定义 76
4.3.2 双三次贝塞尔曲面递归细分 77
4.3.3 双三次贝塞尔曲面的法向量 78
4.4 实验8:回转法构造球面 78
4.5 本章小结 90
习题4 91
第5章 投影与消隐 95
5.1 正交投影 95
5.2 斜投影【理论9】 96
5.3 实验9:绘制斜投影双三次贝塞尔曲面 97
5.4 透视投影【理论10】 100
5.4.1 透视投影坐标系 100
5.4.2 世界坐标系到观察坐标系的变换 101
5.4.3 观察坐标系到屏幕坐标系的变换 101
5.4.4 透视投影变换 102
5.4.5 透视投影分类 103
5.5 实验10:制作球体的透视投影动画 103
5.6 背面剔除算法【理论11】 106
5.7 实验11:制作球体的消隐动画 107
5.8 本章小结 111
习题5 111
第6章 表面模型 114
6.1 三角形的表示法 114
6.2 三角形的着色模式 115
6.3 马赫带 115
6.4 边界像素处理规则 116
6.5 边标志算法【理论12】 116
6.5.1 基本思想 116
6.5.2 光滑着色模式填充三角形 117
6.5.3 打边标志 117
6.6 实验12:绘制RGB立方体 118
6.7 面消隐算法 124
6.7.1 三维屏幕坐标系 124
6.7.2 计算伪深度 125
6.8 ZBuffer算法【理论13】 125
6.9 实验13:光滑着色交叉条动态消隐 126
6.10 画家算法【理论14】 133
6.11 实验14:使用画家算法绘制CMY立方体
134
6.12 本章小结 138
习题6 138
第7章 光照模型 140
7.1 颜色模型 140
7.1.1 RGB颜色模型 140
7.1.2 HSV颜色模型 141
7.1.3 CMY颜色模型 142
7.2 简单光照模型【理论15】 143
7.2.1 材质属性 144
7.2.2 发射光模型 144
7.2.3 环境光模型 145
7.2.4 漫反射光模型 145
7.2.5 镜面反射光模型 146
7.2.6 光源衰减 147
7.2.7 增加颜色 148
7.3 实验15:球体GouraudShader三维动画 149
7.4 光滑着色【理论16】 155
7.4.1 GouraudShader 155
7.4.2 PhongShader 156
7.5 实验16:圆环PhongShader三维动画 157
7.6 本章小结 164
习题7 164
第8章 纹理映射 169
8.1 纹理的定义 170
8.2 纹理的分类 170
8.3 图像纹理【理论17】 171
8.3.1 读入纹理 171
8.3.2 处理高光 171
8.4 实验17:球体图像纹理映射 172
8.5 几何纹理【理论18】 179
8.5.1 最简单的凹凸图 179
8.5.2 映射原理 179
8.6 实验18:球体正弦函数扰动的凹凸纹理 181
8.7 纹理反走样 182
8.8 本章小结 183
习题8 183
第9章 高级纹理技术 188
9.1 两步纹理映射【理论19】 188
9.2 实验19:球面两步纹理映射算法 190
9.2 环境映射 192
9.2.1 球面映射方法【理论20】 192
9.2.2 立方体映射方法【理论21】 193
9.3 实验20:球面环境映射算法(球映射方法) 195
9.4 实验21:圆环环境映射算法(立方体映射方法) 196
9.5 投影纹理映射【理论22】 200
9.6 实验22:圆环投影纹理映射 201
9.7 三维纹理映射【理论23】 203
9.8 实验23:木纹球体 206
9.9 Mipmap纹理反走样技术 208
9.10 本章小结 210
习题9 210
附录A 课程设计 213
A.1 项目描述 213
A.2 项目设计 214
A.3 项目编码 217
A.4 项目总结 222
A.5 项目拓展 222
参考文献 227
內容試閱 :
前 言
对教师和学生而言,计算机图形学课程是对编程语言、算法、数学、外语阅读等方面综合应用能力要求较高的一门复合学科。学好计算机图形学的最好方法是项目化学习,即通过编程来理解算法。项目化教学方法的优点是能够保证动手能力的连续性,缺点是会割裂理论的连续性,让人看起来像是说明书,而不清楚最终的学习目标。本书试图在理论和实践方面进行平衡,以传统的章节为顺序,选择教学内容时,标注【理论】作为重点学习内容,紧跟理论后面设计一个实验项目来讲解理论的工程应用。
今天,计算机图形学已是一个成熟的领域。本书为读者精选光栅化图形学的基本理论和程序架构,从建立曲面体模型开始,通过施加三维变换让模型动起来,通过施加透视投影让模型符合视觉效果,通过添加光照效果让模型亮起来,通过映射纹理让模型真起来。
本书以真实感图形为主线,精选23个理论知识点,重点讲解计算机图形学的基础理论与算法,并从零开始手把手讲解23个配套实验,程序以三维动画的方式展示运行效果。理论部分主要包括双缓冲动画、三维几何变换、曲面建模技术、透视投影、三角形填充、ZBuffer消隐、简单光照模型和纹理映射等;实验部分使用Visual Studio 2017的C语言开发算法类模块,工具类主要包括三维点类、向量类、几何变换类、投影类、RGB颜色类等模块;应用类主要包括直线类、贝塞尔曲面类、球体类、圆环类、深度缓冲类、光源类、材质类、光照类、纹理类等模块。模块设计前后一致且具有互换性。理论的讲解与实验的开发完全一致,代码和算法一一对应。读者可以直接使用这些模块作为工具开发项目。
在本书的附录部分,提供了对花瓶制作项目的指导,读者可以使用前面实验项目中建立的工具类来建立花瓶的线框模型,并给花瓶添加光照,映射纹理,渲染出头像花瓶、印章花瓶等真实感效果。
本书假定读者了解向量和矩阵等较为基础的数学内容,熟悉C面向对象编程的基本概念。本书所用的算法全部取自算法提出者发表的英文原文。类架构的编写简单易懂,程序讲解清晰、细腻。为了使实验项目清楚明了,所选模型尽量简单。多面体模型主要提供金字塔模型、正八面体模型、立方体模型等;曲面体模型全部使用贝塞尔曲面构建,主要包括球体、圆环、花瓶、碗等。
项目化教学对于教师的讲授比较轻松。建议教师在实验室开展教学,每两个课时上机完成一个实验,理论部分在需要的时候进行讲解。理论是服务于实验的算法,实验是理论指导下的实践。教师只需要掌握实验项目的编程实现,理论部分可以安排学生通过微课来学习。作者提供全部理论内容的课件和实验项目源程序。本书的作业全部提供运行效果的视频。需要进一步获得支持的读者,请通过QQ(997796978)联系作者,或加入QQ群(159410090,计算机图形学教师群)共同探讨。
感谢博创研究所的霍波魏、刘浩云、郝转转、李涵、贾慧楠、王荟婷、杨国宇等同学的大力协助,他们参与了实验项目的调试与课件的制作。孟星煜与霍波魏同学录制了实验项目的全套微课视频。2016级数字媒体技术专业的张彦平同学是山西省互联网 大学生创新创业大赛的一等奖得主,他专门为本书编制了石瓢壶程序,并精心设计了封面。在此一并致谢。
80岁的母亲欣闻本书出版,手绘双鸡教子图作为纹理插图[图8.5和题图8.5b]。1976年以工农兵学员身份就读于山西大学美术系的母亲,一生对绘画充满热爱,引导着我以屏幕为画板、以代码为画笔讲授计算机图形学。高山安可仰,徒此揖清芬。
作 者
2020年春节于太原万达