发表于2024-11-13
本书面向的读者范围非常宽泛,既可作为高等院校相关专业的图形学教材,也适合想从事计算机图形学相关领域工作的初学者,同样也可作为计算机图形学领域高级研究人员的参考书。
本书是作者多年来教学与科研工作的总结,采用WebGL图形编程接口循序渐进开发一个赛车游戏的方式对计算机图形学基础知识和真实感渲染的物理原理进行讲解,涵盖了图形学基本概念、WebGL图形编程接口、3D图形表示、几何变换、光栅化、光照和阴影技术、纹理映射等基本的计算机图形学内容,以及粒子系统、光线跟踪、光子跟踪、基于图像的绘制和全局光照等高级内容。并为读者进一步深入学习和研究,在每章里都给出了相关的程序实例。
Fabio Ganovelli于1995年毕业于意大利比萨大学,2001年获得博士学位,目前是意大利国家研究委员会可视计算研究室的研究员。Fabio目前的研究领域包括变形模拟、多分辨率模拟、真实感绘制和几何处理。Massimiliano Corsini 于2000年毕业于意大利佛罗伦萨大学的信息工程学院,2005年获得信息通讯学院博士学位,目前是意大利国家研究委员会可视计算研究室的研究员。Massimiliano目前主要研究表面获取和建模、2D/3D注册技术和基于图像的重光照技术
邵绪强,博士,毕业于北京航空航天大学,华北电力大学计算机学院教师,主要专业方向为计算机图形学,虚拟现实。
目 录
第1章 计算机图形学概述 1
1.1 计算机图形学的应用范围和研究领域 1
1.1.1 应用范围 1
1.1.2 研究领域 2
1.2 颜色和图像 3
1.2.1 人类视觉系统 3
1.2.2 颜色空间 4
1.2.3 光源 9
1.2.4 伽马值 9
1.2.5 图像表示 9
1.3 三维场景的光栅图像生成算法 12
1.3.1 光线跟踪 12
1.3.2 光栅化流水线 14
1.3.3 光线跟踪与光栅化流水线 15
第2章 基本步骤 17
2.1 应用程序接口 17
2.2 WebGL光栅化流水线 18
2.3 渲染流水线算法:初步渲染 20
2.4 WebGL的支持库 29
2.5 NVMC简介 29
2.5.1 架构 30
2.5.2 NVMC类用于描述世界 30
2.5.3 基本客户端 31
2.5.4 代码的组织方式 35
第3章 三维模型表示方式 37
3.1 概述 37
3.1.1 现实世界数字化 37
3.1.2 几何建模 38
3.1.3 过程建模 38
3.1.4 仿真 38
3.2 多边形网格 38
3.2.1 三角形扇和三角形带 39
3.2.2 流形 39
3.2.3 朝向 40
3.2.4 多边形网格的优势和劣势 40
3.3 隐式曲面 41
3.4 参数曲面 42
3.4.1 参数曲线 42
3.4.2 贝塞尔曲线 43
3.4.3 B样条曲线 45
3.4.4 参数曲线扩展为参数曲面 47
3.4.5 贝塞尔曲面 47
3.4.6 NURBS曲面 48
3.4.7 参数曲面的优势和劣势 48
3.5 体素 49
3.5.1 体素渲染 49
3.5.2 体素表示的优势和劣势 50
3.6 构造实体几何 50
3.7 细分曲面 51
3.7.1 Chaikin算法 51
3.7.2 4点算法 52
3.7.3 曲面的细分方法 52
3.7.4 细分方法分类 52
3.7.5 细分模式 53
3.7.6 细分曲面的优势和劣势 55
3.8 多边形网格的数据结构 55
3.8.1 索引数据结构 56
3.8.2 翼边 57
3.8.3 半边 57
3.9 第一个代码:创建和显示简单图元 58
3.9.1 立方体 58
3.9.2 锥体 59
3.9.3 柱体 61
3.10 自测题 63
第4章 几何变换 65
4.1 几何实体 65
4.2 基本几何变换 66
4.2.1 平移 66
4.2.2 缩放 66
4.2.3 旋转 67
4.2.4 用矩阵符号表示变换 67
4.3 仿射变换 69
4.3.1 几何变换组合 69
4.3.2 绕任意点旋转和缩放 70
4.3.3 剪切 71
4.3.4 逆变换和交换律 71
4.4 框架 72
4.4.1 一般框架和仿射变换 73
4.4.2 框架的层次 73
4.4.3 第三维 74
4.5 三维空间中的旋转 75
4.5.1 轴-角旋转 75
4.5.2 欧拉角旋转 77
4.5.3 用四元数旋转 78
4.6 观察变换 79
4.6.1 设置观察参考框架 79
4.6.2 投影 80
4.6.3 视见体 82
4.6.4 从规范化设备坐标到窗口坐标 83
4.6.5 小结 85
4.7 图形绘制流水线中的变换 85
4.8 升级客户端:第一个3D客户端 86
4.8.1 组装树和汽车 87
4.8.2 定位树和汽车 88
4.8.3 观察场景 88
4.9 编码 88
4.10 用矩阵堆栈操作变换矩阵 89
4.10.1 升级客户端:增加从上面和后面的观察 91
4.11 操纵视图和对象 92
4.11.1 用键盘和鼠标控制观察 93
4.11.2 升级客户端:增加摄影师观察 94
4.11.3 用键盘和鼠标操纵场景:虚拟跟踪球 95
4.12 升级客户端:创建观察者相机 97
4.13 自我练习 98
第5章 顶点转化为像素 100
5.1 光栅化 100
5.1.1 直线 100
5.1.2 多边形(三角形) 103
5.1.3 属性插值:质心坐标 105
5.1.4 小结 107
5.2 隐藏面消除 108
5.2.1 深度排序 108
5.2.2 扫描线 109
5.2.3 深度缓存 109
5.2.4 深度缓存精度和深度冲突 110
5.3 从片元到像素 111
5.3.1 丢弃测试 112
5.3.2 融合 112
5.3.3 走样和反走样 113
5.3.4 升级客户端:从驾驶员角度进行观察 114
5.4 裁剪 117
5.4.1 裁剪线段 117
5.4.2 裁剪多边形 119
5.5 剔除 119
5.5.1 背面剔除 119
5.5.2 视见体剔除 120
5.5.3 遮挡剔除 122
第6章 光照和着色 123
6.1 光与物质之间的交互 123
6.2 辐射度量学简介 127
6.3 反射率和双向反射分布函数(BRDF) 129
6.4 绘制方程 131
6.5 评估绘制方程 132
6.6 计算表面法向量 133
6.6.1 折痕角 135
6.6.2 表面法向量变换 136
6.7 光源类型 136
6.7.1 方向光 137
6.7.2 升级客户端:添加太阳光源 138
6.7.3 点光源 141
6.7.4 升级客户端:添加路灯光源 142
6.7.5 聚光灯光源 143
6.7.6 面光源 144
6.7.7 升级客户端:添加汽车的前灯和隧道的指示灯 145
6.8 Phong光照模型 146
6.8.1 概述和动机 146
6.8.2 漫反射光分量 147
6.8.3 镜面反射光分量 147
6.8.4 环境光分量 148
6.8.5 完整模型 148
6.9 着色技术 149
6.9.1 平面着色和Gouraud着色 149
6.9.2 Phong着色 150
6.9.3 升级客户端:使用Phong光照 150
6.10 高级反射模型 151
6.10.1 Cook-Torrance模型 151
6.10.2 Oren-Nayar模型 152
6.10.3 Minnaert模型 153
6.11 自测题 153
第7章 纹理 155
7.1 引言:是否需要纹理映射 155
7.2 基本概念 155
7.3 纹理过滤:从片元纹理坐标到片元颜色 157
7.3.1 纹理放大效应 157
7.3.2 多重映射的纹理缩小效应 158
7.4 透视校正插值:从顶点纹理坐标到片元纹理坐标 160
7.5 升级客户端:为地面、街道和建筑物增加纹理 162
7.6 升级客户端:添加后视镜 165
7.7 纹理坐标生成以及环境映射 167
7.7.1 球体映射 167
7.7.2 立方体映射 169
7.7.3 升级客户端:为视域增加一个天空盒子 169
7.7.4 升级客户端:为赛车增加反射效果 171
7.7.5 投影纹理映射 173
7.8 利用纹理映射为几何模型增加细节 173
7.8.1 位移贴图 173
7.8.2 法线贴图 174
7.8.3 升级客户端:添加沥青 175
7.8.4 切空间法线贴图 176
7.9 网格参数化 178
7.9.1 接缝 179
7.9.2 参数化的质量 180
7.10 三维纹理及其用途 181
7.11 自测题 181
第8章 阴影 182
8.1 阴影现象 182
8.2 阴影贴图 183
8.3 升级客户端程序:增加阴影 185
8.4 阴影贴图的伪影和局限 188
8.4.1 有限的数值精度:表面缺陷 188
8.4.2 有限的阴影图分辨率:走样 190
8.5 阴影体 191
8.5.1 构建阴影体 192
8.5.2 算法 193
8.6 自测题 193
第9章 基于图像的Impostor技术 195
9.1 图像 195
9.2 布告板 196
9.2.1 静态布告板 196
9.2.2 屏幕对齐布告板 197
9.2.3 升级客户端:添加屏幕位置固定小工具 197
9.2.4 升级客户端:添加镜头光斑效果 198
9.2.5 轴对齐布告板 201
9.2.6 动态布告板 204
9.2.7 球形布告板 204
9.2.8 布告板云 204
9.3 光线跟踪Impostor 206
9.4 自测题 207
第10章 高级技术 208
10.1 图像处理 208
10.1.1 模糊 209
10.1.2 升级客户端:一个具有景深的更好的摄像机 211
10.1.3 边缘检测 216
10.1.4 升级客户端:卡通渲染 217
10.1.5 升级客户端:一个更好的平移摄像机 219
10.1.6 锐化 223
10.2 环境光遮蔽 223
10.3 延迟着色 226
10.4 粒子系统 227
10.4.1 粒子系统的运动 227
10.4.2 粒子系统的渲染 228
10.5 自测题 228
第11章 全局光照 229
11.1 光线跟踪 229
11.1.1 光线-代数表面相交 230
11.1.2 光线-参数表面相交 231
11.1.3 光线?场景相交 231
11.1.4 基于光线跟踪的绘制 238
11.1.5 经典光线跟踪 238
11.1.6 路径跟踪 239
11.2 多通道算法 242
11.2.1 光子追踪 242
11.2.2 辐射度 243
11.2.3 形状因子 243
11.2.4 通量传输方程和辐射度传输方程 244
11.2.5 辐射度方程组求解 247
附录A NVMC类 250
附录B 向量积的特性 253
参考文献 256
前 言
目前有很多关于计算机图形学的书籍,其中大多数都处于初级阶段,重点在于讲解如何使用图形API来生成漂亮的图片。还有相当多的高级图形学书籍,只专门介绍计算机图形学的部分领域,如全局光照、几何建模和非真实感绘制。然而,很少图形学书籍能够同时涵盖计算机图形基础知识的细节和真实感绘制背后的物理原理,因此,本书适用的读者范围广泛,从初学者到高水平计算机图形学课程的学生,以及希望从事计算机图形相关领域的工作的人和/或希望在计算机图形学领域进行研究的学者。此外,很少有书籍将理论和实践作为同一知识体系进行阐述。我们相信,读者需要这样一本图形学书籍,因而在本书中致力满足这一需求。
本书的中心内容是实时渲染,即三维场景的交互式可视化。关于这一点,我们从初级到中间层次,渐进地涵盖实时渲染的有关主题。对于每个主题,本书都对基本数学概念和/或物理原理进行解释,并推导出相关的方法和算法。本书还涵盖了建模,从多边形表示到NURBS以及细分表面表示。
没有操作实例和交互而讲授计算机图形学几乎是不可能的。因此,这本书的许多章节都配有实例。本书的特别之处在于,它遵循在上下文中教学的方法,也就是说,所有的实例都是为开发一个大型图形应用程序而设计的,提供了将理论付诸实践的环境。我们选择的图形应用程序是赛车游戏,驾驶员控制汽车在轨道上移动。这个实例程序从场景中没有任何图形开始,然后每章都添加一些图形,最后,期望能够接近经典视频游戏中的场景。
这本书面向相对较广范围的读者而设计。假设读者已掌握微积分的基本知识和一些编程语言技术。尽管本书包含了从初级到高级的各种主题,读者将会根据本书的章节来扩展基础内容之外所需要的专业知识。因此,我们相信,初级水平和高级水平的计算机图形学专业学生将成为本书的主要读者。除了能够从本书获得计算机图形学的各方面知识外,从教育的角度来看,学生将会精通许多基本算法,有助于深入理解更高级的算法。本书对于从事任何计算机图形交互式应用程序的软件开发人员,以及想要了解更多计算机图形学的工作者都是非常有用的。
目前,将实时渲染与GPU编程分开是不可能的,因此对于实时算法,需要借助于GPU兼容的API。本书选择WebGL作为所有操作实例的图形API,其为JavaScript绑定了OpenGL-ES。选择WebGL的原因是多方面的:首先,智能手机、平板电脑和笔记本电脑已经变得无处不在,几乎所有这些设备都具有支持WebGL的浏览器。其次,除了Web浏览器和简单的文本编辑器,WebGL不需要任何专门的开发平台。最后,还有大量公开可用的高质量教程来获取有关WebGL的更多信息。
最后,由于使用了WebGL,本书有大量的在线组件。所有的示例代码都可以在本书的网站(http://www.envymycarbook.com)上获得。我们也承诺将来在本网站上提供最新的在线信息以及更多实例。
计算机图形学导论――实用学习指南(WebGL版) 下载 mobi pdf epub txt 电子书 格式 2024
计算机图形学导论――实用学习指南(WebGL版) 下载 mobi epub pdf 电子书计算机图形学导论――实用学习指南(WebGL版) mobi epub pdf txt 电子书 格式下载 2024