《交互式计算机图形学 基于WEBGL的自顶向下方法 第7版》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:(美)EDWARDANGEL,DAVESHREINER著;张荣华,姜丽梅,邵绪强,马玉梅等译;李继荣审校
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2016
  • ISBN:7121276046
  • 页数:511 页
图书介绍:本书是作者多年来教学与科研工作的总结,采用自顶向下的结构进行讲解,涵盖了基于WebGL编程工具的交互式图形编程、三维可编程绘制流水线、变换与观察、光照与明暗绘制、曲线曲面建模等基本的计算机图形学内容,以及离散技术、层级建模、过程建模、光线跟踪、并行绘制和体绘制等高级内容。并为读者进一步深入学习和研究,在每章后面提供了相关的建议阅读资料。

第1章 图形系统和模型 1

1.1 计算机图形学的应用 1

1.1.1 信息的显示 1

1.1.2 设计 2

1.1.3 仿真和动画 2

1.1.4 用户界面 3

1.2 图形系统 3

1.2.1 像素和帧缓存 4

1.2.2 CPU与GPU 5

1.2.3 输出设备 5

1.2.4 输入设备 7

1.3 物理图像与合成图像 7

1.3.1 对象和观察者 8

1.3.2 光和图像 9

1.3.3 成像模型 10

1.4 成像系统 11

1.4.1 针孔照相机 11

1.4.2 人类视觉系统 12

1.5 虚拟照相机模型 13

1.6 应用程序编程接口 15

1.6.1 笔式绘图仪模型 15

1.6.2 三维API 17

1.6.3 使用WebGLAPI绘制的一系列图像 19

1.6.4 建模-绘制模式 20

1.7 图形绘制系统的体系结构 21

1.7.1 显示处理器 21

1.7.2 流水线体系结构 21

1.7.3 图形绘制流水线 22

1.7.4 顶点处理 22

1.7.5 裁剪和图元组装 23

1.7.6 光栅化 23

1.7.7 片元处理 23

1.8 可编程流水线 24

1.9 性能特征 24

1.10 OpenGL版本和WebGL 25

小结和注释 26

建议阅读资料 27

习题 27

第2章 图形学编程 29

2.1 Sierpinski镂垫 29

2.2 编写二维图形应用程序 31

2.3 WebGL应用程序编程接口 35

2.3.1 图形函数 35

2.3.2 图形绘制流水线和状态机 36

2.3.3 OpenGL和WebGL 37

2.3.4 WebGL接口 37

2.3.5 坐标系 38

2.4 图元和属性 39

2.4.1 多边形的基本概念 41

2.4.2 WebGL中的多边形 42

2.4.3 利用多边形近似球面 43

2.4.4 三角剖分 43

2.4.5 文本 44

2.4.6 曲线和曲面对象 45

2.4.7 属性 45

2.5 颜色 46

2.5.1 RGB颜色 47

2.5.2 索引颜色 49

2.5.3 设置颜色属性 50

2.6 观察 51

2.6.1 正投影 51

2.6.2 二维观察 52

2.7 控制函数 53

2.7.1 和窗口系统的交互 53

2.7.2 宽高比和视口 54

2.7.3 应用程序组织结构 55

2.8 Sierpinski镂垫绘制程序 56

2.8.1 向GPU发送数据 58

2.8.2 绘制Sierpinski镂垫的点数据 59

2.8.3 顶点着色器 59

2.8.4 片元着色器 60

2.8.5 组合代码段 60

2.8.6 initShaders()函数 61

2.8.7 init()函数 62

2.8.8 从应用程序读入着色器 63

2.9 多边形和递归 63

2.10 三维Sierpinski镂垫 65

2.10.1 使用三维点 65

2.10.2 命名规范 66

2.10.3 使用多边形的三维Sierpinski镂垫 66

2.10.4 隐藏面消除 69

小结和注释 70

建议阅读资料 71

习题 72

第3章 交互和动画 75

3.1 动画 75

3.1.1 旋转的正方形 75

3.1.2 显示过程 77

3.1.3 双缓存 78

3.1.4 使用定时器 79

3.1.5 使用requestAnimFrame函数 79

3.2 交互 80

3.3 输入设备 81

3.4 物理输入设备 82

3.4.1 键盘码 82

3.4.2 光笔 82

3.4.3 鼠标和跟踪球 82

3.4.4 数据板、触摸板和触摸屏 83

3.4.5 操作杆 84

3.4.6 多维输入设备 84

3.4.7 逻辑设备 85

3.4.8 输入模式 86

3.5 客户和服务器 87

3.6 事件驱动输入编程 88

3.6.1 事件和事件监听器 88

3.6.2 增加按钮 89

3.6.3 菜单 90

3.6.4 使用键码 91

3.6.5 滑动条 91

3.7 位置输入 92

3.8 窗口事件 94

3.9 拾取 94

3.10 建立交互式模型 95

3.11 交互式程序的设计 99

小结和注释 99

建议阅读资料 100

习题 101

第4章 几何对象和变换 103

4.1 标量、点和向量 103

4.1.1 几何对象 103

4.1.2 与坐标无关的几何 105

4.1.3 数学的观点:向量空间和仿射空间 106

4.1.4 计算机科学的观点 106

4.1.5 几何ADT 107

4.1.6 直线 108

4.1.7 仿射加法 108

4.1.8 凸性 108

4.1.9 点积和叉积 109

4.1.10 平面 110

4.2 三维图元 111

4.3 坐标系和标架 112

4.3.1 向量的表示和n元组 114

4.3.2 坐标系的变换 114

4.3.3 举例:不同基下的表示之间的变换 116

4.3.4 齐次坐标 117

4.3.5 举例:标架变换 119

4.3.6 对表示进行处理 120

4.4 WebGL中的标架 122

4.5 矩阵和向量类型 125

4.6 建模一个彩色立方体 127

4.6.1 建模立方体的面 127

4.6.2 向内和向外的面 128

4.6.3 表示对象的数据结构 128

4.6.4 彩色立方体 129

4.6.5 颜色插值 130

4.6.6 显示立方体 131

4.6.7 使用元素绘制网格 132

4.7 仿射变换 133

4.8 平移、旋转和缩放 135

4.8.1 平移 135

4.8.2 旋转 135

4.8.3 缩放 137

4.9 变换的齐次坐标表示 137

4.9.1 平移 138

4.9.2 缩放 138

4.9.3 旋转 139

4.9.4 错切 140

4.10 变换的级联 141

4.10.1 不动点在任意位置的旋转 142

4.10.2 一般的旋转 142

4.10.3 实例变换 143

4.10.4 绕任意轴的旋转 144

4.11 WebGL中的变换矩阵 147

4.11.1 当前变换矩阵 147

4.11.2 基本矩阵函数 148

4.11.3 旋转、平移和缩放 148

4.11.4 绕任意不动点的旋转 149

4.11.5 变换的顺序 149

4.12 使立方体旋转起来 150

4.13 三维应用程序的接口 153

4.13.1 使用屏幕区域 154

4.13.2 虚拟跟踪球 154

4.13.3 平滑的旋转 155

4.13.4 增量式旋转 156

4.14 四元数 157

4.14.1 复数和四元数 157

4.14.2 四元数和旋转 158

4.14.3 四元数和万向节死锁 159

小结和注释 160

建议阅读资料 160

习题 161

第5章 观察 164

5.1 经典观察和计算机观察 164

5.1.1 经典观察 165

5.1.2 正投影 166

5.1.3 轴测投影 166

5.1.4 斜投影 167

5.1.5 透视观察 168

5.2 计算机观察 169

5.3 定位照相机 170

5.3.1 照相机标架的定位 170

5.3.2 两个观察API 174

5.3.3 lookAt函数 176

5.3.4 其他观察API 177

5.4 平行投影 178

5.4.1 正投影 178

5.4.2 WebGL中的平行投影 179

5.4.3 投影的规范化 179

5.4.4 正投影变换矩阵 180

5.4.5 斜投影 181

5.4.6 交互式观察立方体 184

5.5 透视投影 185

5.6 WebGL中的透视投影 188

5.7 透视投影变换矩阵 189

5.7.1 透视投影的规范化 190

5.7.2 WebGL中的透视投影变换 192

5.7.3 透视投影示例程序 193

5.8 隐藏面消除 193

5.9 显示网格 195

5.9.1 显示网格曲面 198

5.9.2 多边形偏移 199

5.9.3 在场景中漫游 200

5.10 投影和阴影 200

5.11 阴影映射 204

小结和注释 204

建议阅读资料 205

习题 205

第6章 光照和着色 207

6.1 光线和材质 207

6.2 光源 209

6.2.1 彩色光源 210

6.2.2 环境光 210

6.2.3 点光源 211

6.2.4 聚光灯 212

6.2.5 远距离光源 212

6.3 Phong反射模型 213

6.3.1 环境光反射 214

6.3.2 漫反射 215

6.3.3 镜面反射 216

6.3.4 改进的Phong模型 217

6.4 计算向量 218

6.4.1 法向量 218

6.4.2 反射角 220

6.5 多边形的着色 221

6.5.1 均匀着色 221

6.5.2 平滑着色 222

6.5.3 Phong着色 223

6.6 通过递归细分逼近球面 224

6.7 指定光照参数 226

6.7.1 光源 226

6.7.2 材质 227

6.8 实现光照模型 227

6.8.1 在WebGL应用程序代码中应用光照模型 228

6.8.2 绘制效率 230

6.8.3 在顶点着色器中实现光照计算 231

6.9 球面模型的着色 234

6.10 基于每个片元的光照计算 235

6.11 非真实感着色 237

6.12 全局光照 238

小结和注释 239

建议阅读资料 239

习题 240

第7章 离散技术 242

7.1 缓存 242

7.2 数字图像 244

7.3 映射方法 246

7.4 二维纹理映射 248

7.5 WebGL的纹理映射 252

7.5.1 纹理对象 253

7.5.2 纹理图像数组 253

7.5.3 纹理坐标和纹理采样器 255

7.5.4 纹理采样 259

7.5.5 使用纹理坐标 261

7.5.6 多纹理映射 262

7.6 纹理生成 264

7.7 环境贴图 265

7.8 反射贴图示例程序 268

7.9 凹凸映射 271

7.9.1 计算凹凸贴图 272

7.9.2 凹凸贴图示例程序 274

7.10 融合技术 278

7.10.1 不透明度与融合 278

7.10.2 图像融合 279

7.10.3 WebGL中图像的融合 279

7.10.4 再探反走样 280

7.10.5 从后向前或从前向后绘制多边形 282

7.10.6 场景反走样和多重采样 282

7.10.7 图像处理 283

7.10.8 其他的多通道绘制方法 284

7.11 GPGPU 284

7.12 帧缓存对象 287

7.13 缓存交换 292

7.14 拾取 294

小结和注释 298

建议阅读资料 299

习题 299

第8章 从几何到像素 301

8.1 图形绘制流水线的基本实现策略 301

8.2 图形绘制系统的四个主要任务 303

8.2.1 建模 303

8.2.2 几何处理 304

8.2.3 光栅化 305

8.2.4 片元处理 305

8.3 裁剪 306

8.4 线段的裁剪 306

8.4.1 Cohen-Sutherland裁剪算法 307

8.4.2 Liang-Barsky裁剪算法 308

8.5 多边形的裁剪 310

8.6 其他图元的裁剪 312

8.6.1 包围盒与包围体 312

8.6.2 曲线、曲面和字符的裁剪 313

8.6.3 帧缓存中的裁剪 314

8.7 三维裁剪 314

8.8 光栅化 316

8.9 Bresenham算法 318

8.10 多边形光栅化算法 320

8.10.1 内外测试法 320

8.10.2 WebGL与凹多边形 321

8.10.3 填充与分类 322

8.10.4 漫水填充算法 322

8.10.5 处理奇点 323

8.11 隐藏面消除 323

8.11.1 对象空间和图像空间消隐算法 324

8.11.2 排序与隐藏面消除 325

8.11.3 扫描线填充算法 325

8.11.4 背面剔除 326

8.11.5 z缓存算法 327

8.11.6 基于z缓存的扫描转换算法 329

8.11.7 深度排序和画家算法 330

8.12 反走样 332

8.13 显示方面的问题 333

8.13.1 颜色系统 334

8.13.2 颜色矩阵 336

8.13.3 γ校正 337

8.13.4 抖动输出技术和半色调输出技术 337

小结和注释 338

建议阅读资料 339

习题 340

第9章 层级建模方法 342

9.1 图符和实例 342

9.2 层级模型 344

9.3 机器人手臂 345

9.4 树与遍历 348

9.5 使用树数据结构 351

9.6 动画 354

9.7 图形对象 355

9.7.1 方法、属性和消息 356

9.7.2 一个立方体对象 357

9.7.3 对象与层级结构 357

9.7.4 几何和非几何对象 358

9.8 场景图 359

9.9 实现场景图 361

9.10 其他树结构 362

9.10.1 CSG树 362

9.10.2 BSP树 363

9.10.3 四叉树和八叉树 365

小结和注释 367

建议阅读资料 367

习题 368

第10章 过程建模方法 369

10.1 基于算法的建模 369

10.2 基于物理的建模和粒子系统 370

10.3 牛顿粒子 371

10.3.1 独立的粒子 373

10.3.2 弹簧力 373

10.3.3 吸引力与排斥力 374

10.4 求解粒子系统方程 375

10.5 约束条件 377

10.5.1 碰撞 377

10.5.2 软约束 379

10.6 一个简单的粒子系统 379

10.6.1 绘制粒子 380

10.6.2 更新粒子的位置 380

10.6.3 碰撞 380

10.6.4 作用力 381

10.6.5 群聚行为 382

10.7 基于agent的建模 383

10.8 基于语言的建模 384

10.9 递归方法和分形 387

10.9.1 标尺和长度 388

10.9.2 分形维数 388

10.9.3 中点划分及布朗运动 389

10.9.4 分形山脉 390

10.9.5 Mandelbrot集 391

10.9.6 Mandelbrot片元着色器 393

10.10 过程噪声 394

小结和注释 396

建议阅读资料 397

习题 397

第11章 曲线和曲面 399

11.1 曲线和曲面的表示形式 399

11.1.1 显式表示形式 399

11.1.2 隐式表示形式 400

11.1.3 参数表示形式 401

11.1.4 参数多项式曲线 402

11.1.5 参数多项式曲面 402

11.2 设计准则 403

11.3 三次参数多项式曲线 404

11.4 插值 405

11.4.1 调和函数 406

11.4.2 三次插值曲面片 407

11.5 Hermite曲线和曲面 408

11.5.1 Hermite形式 409

11.5.2 几何与参数连续性 410

11.6 Bézier曲线和曲面 411

11.6.1 Bézier曲线 411

11.6.2 Bézier曲面片 413

11.7 三次B样条 413

11.7.1 三次B样条曲线 414

11.7.2 B样条和基函数 416

11.7.3 样条曲面 416

11.8 普通B样条 417

11.8.1 B样条的递归定义 417

11.8.2 均匀样条 418

11.8.3 非均匀B样条 418

11.8.4 NURBS 419

11.8.5 Catmull-Rom样条 420

11.9 曲线和曲面的绘制 420

11.9.1 多项式求值方法 421

11.9.2 递归细分Bézier多项式 422

11.9.3 基于细分算法的其他多项式曲线的绘制 423

11.9.4 细分Bézier曲面 424

11.10 Utah茶壶模型 425

11.11 代数曲面 427

11.11.1 二次曲面 427

11.11.2 使用光线跟踪绘制曲面 428

11.12 曲线和曲面的细分 429

11.13 从数据生成网格 431

11.13.1 回顾高度场 431

11.13.2 Delaunay三角剖分 432

11.13.3 点云 435

11.14 支持曲线和曲面的图形API 435

11.14.1 曲面细分着色 435

11.14.2 几何着色 436

小结和注释 436

建议阅读资料 437

习题 437

第12章 高级绘制 439

12.1 超越流水线绘制结构 439

12.2 光线跟踪 440

12.3 构建…个简单的光线跟踪器 442

12.3.1 光线跟踪递归算法 442

12.3.2 计算交点 443

12.3.3 其他不同形式的光线跟踪 445

12.4 绘制方程 446

12.5 辐射度方法 448

12.5.1 辐射度方程 449

12.5.2 求解辐射度方程 450

12.5.3 计算排列因子 450

12.5.4 实现辐射度算法 452

12.6 全局光照和路径跟踪 453

12.7 RenderMan 454

12.8 并行绘制 455

12.8.1 sort-middle绘制方法 456

12.8.2 sort-last绘制方法 457

12.8.3 sort-first绘制方法 459

12.9 GPU硬件实现 460

12.10 隐函数和等高线图 461

12.10.1 步进方格 461

12.10.2 步进三角形 465

12.11 体绘制 466

12.11.1 体数据集 466

12.11.2 隐函数的可视化 467

12.12 等值面与步进立方体 468

12.13 步进四面体 470

12.14 网格简化 471

12.15 直接体绘制 471

12.15.1 指定颜色和透明度 472

12.15.2 抛雪球算法 472

12.15.3 体光线跟踪 473

12.15.4 基于纹理映射的体绘制 474

12.16 基于图像的绘制 474

小结和注释 476

建议阅读资料 477

习题 478

附录A 初始化着色器 480

附录B 空间 484

附录C 矩阵 490

附录D 采样与走样 497

参考文献 503