当前位置:首页 > 工业技术
3D游戏引擎设计  实时计算机图形学的应用方法  第2版
3D游戏引擎设计  实时计算机图形学的应用方法  第2版

3D游戏引擎设计 实时计算机图形学的应用方法 第2版PDF电子书下载

工业技术

  • 电子书积分:20 积分如何计算积分?
  • 作 者:(美)艾伯利著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2013
  • ISBN:9787302343004
  • 页数:730 页
图书介绍:本书详细阐述了与3D游戏引擎设计相关的高效解决方法及相应的数据结构和算法,主要包括图形系统、渲染器、场景图、控制器动画、空间排序、细节级别等。
《3D游戏引擎设计 实时计算机图形学的应用方法 第2版》目录

第1章 概述 1

1.1 图形硬件和游戏发展史 1

1.2 本书版本与软件发展史 1

1.3 章节导读 2

第2章 图形系统 4

2.1 基础知识 4

2.1.1 坐标系 5

2.1.2 右手规则/左手规则和叉积计算 6

2.1.3 点和向量 9

2.2 转换操作 11

2.2.1 线性转换 11

2.2.2 仿射转换 19

2.2.3 透视转换 20

2.2.4 透视投影的特征 22

2.2.5 齐次点和矩阵 25

2.3 相机 28

2.3.1 透视相机模型 28

2.3.2 模型空间和对象空间 31

2.3.3 世界空间 31

2.3.4 视见空间、相机空间和眼睛空间 32

2.3.5 剪裁空间、投影空间或齐次空间 34

2.3.6 窗口空间 37

2.3.7 整合结果 38

2.4 剔除操作和剪裁操作 45

2.4.1 对象剔除操作 45

2.4.2 背面剔除 46

2.4.3 基于视锥体的剪裁操作 48

2.5 光栅化操作 53

2.5.1 直线段 53

2.5.2 圆形 57

2.5.3 椭圆 58

2.5.4 三角形 62

2.6 顶点属性 64

2.6.1 颜色 64

2.6.2 光照和材质 65

2.6.3 纹理 69

2.6.4 透明度和混合操作 80

2.6.5 雾效果 84

2.6.6 其他 85

2.6.7 光栅化属性 85

2.7 软件、硬件和API 86

2.7.1 概述 86

2.7.2 可移植性和性能 87

2.8 API规范 89

2.8.1 矩阵的表达和存储方式 89

2.8.2 矩阵累积计算 93

2.8.3 视见矩阵 93

2.8.4 投影矩阵 95

2.8.5 窗口坐标系 97

2.8.6 旋转操作 99

2.8.7 基于图形API的快速计算 100

第3章 渲染器 103

3.1 软件渲染 104

3.1.1 顶点着色器 104

3.1.2 背面剔除 106

3.1.3 剪裁操作 108

3.1.4 光栅化操作 111

3.1.5 边缓冲区 111

3.1.6 扫描线处理过程 113

3.1.7 像素着色器 115

3.1.8 模板缓冲机制 117

3.1.9 深度缓冲区 119

3.1.10 Alpha混合操作 120

3.1.11 颜色蒙版 120

3.1.12 纹理采样 121

3.1.13 帧缓冲区 122

3.2 硬件渲染 122

3.3 抽象渲染API 123

3.3.1 构造和析构 124

3.3.2 相机管理 125

3.3.3 全局状态管理 125

3.3.4 缓冲区清除操作 126

3.3.5 对象绘制 127

3.3.6 纹理和2D绘制 127

3.3.7 其他操作 128

3.3.8 资源管理 129

3.4 渲染器的核心内容 139

3.4.1 场景绘制 139

3.4.2 几何图元绘制 141

3.4.3 视效应用 143

3.4.4 加载和解析着色器程序 144

3.4.5 着色器程序的验证 153

第4章 场景图 157

4.1 场景图设计 157

4.1.1 核心类 160

4.1.2 空间层次结构设计 164

4.1.3 对象共享机制 166

4.2 几何状态 168

4.2.1 顶点缓冲区和索引缓冲区 168

4.2.2 转换操作 169

4.2.3 包围体 177

4.2.4 几何类型 182

4.3 渲染状态 188

4.3.1 全局状态 188

4.3.2 光照 190

4.3.3 视效 194

4.4 更新操作 195

4.4.1 几何状态更新 195

4.4.2 渲染状态更新 204

4.5 剔除操作 212

4.5.1 层次结构的剔除操作 215

4.5.2 基于排序的剔除操作 217

4.6 绘制操作 218

4.6.1 单路绘制操作 219

4.6.2 单一视效和多路绘制 222

4.6.3 多视效绘制操作 224

4.7 场景图编译器 225

4.7.1 基于表达式的场景图 226

4.7.2 编译语义 229

第5章 控制器动画 231

5.1 关键帧动画 232

5.1.1 位置插值 232

5.1.2 方向插值计算 233

5.1.3 缩放插值 233

5.2 关键帧压缩 234

5.2.1 基于B样条曲线的匹配点 235

5.2.2 B样条曲线计算 238

5.2.3 3阶优化计算 245

5.3 逆向动力学 249

5.3.1 基于Jacobian方法的数值方案 251

5.3.2 基于非线性优化的数值方案 252

5.3.3 基于循环坐标下降法的数值方案 252

5.4 蒙皮机制 255

5.5 顶点变形 257

5.6 粒子系统 258

第6章 空间排序 259

6.1 二叉空间划分树 259

6.1.1 构造BSP树 260

6.1.2 BSP树的应用 262

6.2 基于节点的排序 268

6.3 入口 269

6.4 用户自定义地图 276

6.5 遮挡剔除 276

第7章 细节级别 278

7.1 精灵对象和广告板 278

7.2 离散细节级别 279

7.3 连续细节级别 280

7.3.1 基于二次误差测度的简化方案 280

7.3.2 重组顶点和索引值 284

7.3.3 地形 284

7.4 无限细节级别 285

第8章 碰撞检测 286

8.1 分离轴方案 288

8.1.1 凸多边形和凸多面体极值 289

8.1.2 静态对象 296

8.1.3 基于恒定线速度的运动对象 302

8.1.4 有向包围盒 322

8.2 运动对象之间的碰撞计算 327

8.2.1 伪距离 328

8.2.2 运动对象之间的接触状态 329

8.2.3 计算首次碰撞时刻 331

8.2.4 一阶导数计算 334

8.3 动态碰撞检测系统 336

8.3.1 抽象基类 336

8.3.2 特定对象类型组合的伪距离 341

8.3.3 基于轴对齐包围盒的碰撞剔除 344

8.4 对象拾取操作 349

8.4.1 构造拾取光线 350

8.4.2 获取场景图的支持 351

8.4.3 维持相机高度 355

8.4.4 躲避行为 356

8.5 碰撞躲避路径 356

8.5.1 环境、关卡和房间 357

8.5.2 房间之间的运动行为 360

8.5.3 关卡之间的运动行为 361

8.5.4 室外环境中的运动 361

8.5.5 结构图(蓝图) 361

8.5.6 可视图 362

8.5.7 构建轮廓边 365

8.5.8 基本数据结构 372

8.5.9 可视图的高效计算方案 372

第9章 物理学 375

9.1 粒子系统 375

9.2 质体-弹簧系统 377

9.2.1 曲线质体 377

9.2.2 表面质体 379

9.2.3 空间质体 381

9.2.4 任意结构对象 384

9.3 变形体 386

9.4 刚体 386

9.4.1 刚体类 388

9.4.2 计算惯性张量 391

第10章 标准对象 392

10.1 线性对象 392

10.2 平面对象 394

10.3 盒体对象 396

10.4 二次曲面 396

10.4.1 球体 396

10.4.2 椭球体 396

10.4.3 圆柱体 397

10.4.4 圆锥体 398

10.5 球扫掠体 399

10.5.1 胶囊体 399

10.5.2 菱形体 399

第11章 曲线 400

11.1 定义 400

11.2 基于弧长的参数重置操作 401

11.3 Bezier曲线 402

11.3.1 定义 402

11.3.2 计算过程 403

11.3.3 升阶计算 403

11.3.4 降阶计算 404

11.4 自然、钳式以及封闭式三次样条 405

11.4.1 自然曲线 406

11.4.2 钳式样条 406

11.4.3 封闭样条 407

11.5 B样条曲线 407

11.5.1 节点向量类型 408

11.5.2 计算过程 408

11.5.3 局部控制 413

11.5.4 封闭曲线 413

11.6 NURBS曲线 414

11.7 张力-连续性-偏移样条 416

11.8 参数细分 418

11.8.1 基于均匀采样的细分方案 418

11.8.2 基于弧长的细分方案 418

11.8.3 基于中点距离的细分方案 419

11.8.4 基于三次曲线的快速细分方案 420

11.9 曲线路径上对象的方向 421

11.9.1 基于Frenet坐标系的方向 422

11.9.2 基于固定Up向量的方向 422

第12章 曲面 423

12.1 简介 423

12.2 Bezier矩形面片 424

12.2.1 定义 424

12.2.2 计算过程 424

12.2.3 升阶计算 425

12.2.4 降阶计算 425

12.3 Bezier三角形面片 426

12.3.1 定义 426

12.3.2 计算过程 428

12.3.3 升阶计算 428

12.3.4 降阶计算 428

12.4 B样条矩形面片 430

12.5 NURBS矩形面片 430

12.6 基于曲线的表面构造过程 431

12.6.1 柱面 431

12.6.2 广义柱面 432

12.6.3 旋转曲面 433

12.6.4 管状表面 433

12.7 参数细分 434

12.7.1 矩形面片细分 434

12.7.2 三角形面片的细分操作 443

第13章 包含测试 449

13.1 球体 449

13.1.1 球体中的点 449

13.1.2 包含数据点的球体 449

13.1.3 合并球体 454

13.2 盒体 455

13.2.1 盒体中的点 455

13.2.2 包含点的盒体 455

13.2.3 合并盒体 461

13.3 胶囊体 462

13.3.1 胶囊体中的点 463

13.3.2 包含点的胶囊体 463

13.4 菱形体 465

13.4.1 菱形体中的点 465

13.4.2 包含点的菱形体 465

13.4.3 菱形体的合并操作 466

13.5 圆柱体 467

13.5.1 圆柱体中的点 467

13.5.2 包含点的圆柱体 467

13.5.3 移至最小面积中心处的最小二乘直线 468

13.5.4 圆柱体合并操作 468

13.6 椭球体 469

13.6.1 椭球体中的点 469

13.6.2 包含点的椭球体 470

13.6.3 椭球体的合并操作 470

第14章 距离计算方案 471

14.1 点与线性对象之间的距离 471

14.1.1 点与直线之间的距离 471

14.1.2 点与射线之间的距离 472

14.1.3 点与线段之间的距离 472

14.2 线性对象至线性对象之间的距离 473

14.2.1 直线与直线之间的距离 473

14.2.2 直线与射线之间的距离 474

14.2.3 直线与线段之间的距离 475

14.2.4 射线与射线之间的距离 475

14.2.5 射线与线段之间的距离 476

14.2.6 线段与线段之间的距离 476

14.3 点与三角形之间的距离 477

14.4 线性对象与三角形之间的距离 480

14.4.1 直线与三角形之间的距离 480

14.4.2 射线与三角形之间的距离 483

14.4.3 线段与三角形之间的距离 483

14.5 点与矩形之间 484

14.6 线性对象与矩形之间的距离 485

14.6.1 直线与矩形之间的距离 485

14.6.2 射线与矩形之间的距离 487

14.6.3 线段与矩形之间的距离 488

14.7 三角形(或矩形)与三角形(或矩形)之间的距离 488

14.8 点和有向盒体之间的距离 490

14.9 线性对象与有向盒体之间的距离 491

14.9.1 直线与有向盒体之间的距离 491

14.9.2 射线与有向盒体之间的距离 493

14.9.3 线段与有向盒体之间的距离 493

14.10 三角形与有向盒体之间的距离 494

14.11 矩形和有向盒体之间的距离 495

14.12 有向盒体与有向盒体之间的距离 496

14.13 混合方案 498

14.13.1 点与椭圆之间的距离 498

14.13.2 点与椭球体之间的距离 499

14.13.3 点与二次曲线或二次表面之间的距离 499

14.13.4 点与3D圆之间的距离 500

14.13.5 圆与3D圆之间的距离 501

第15章 相交计算 504

15.1 线性对象和凸对象 504

15.2 线性对象和平面对象 506

15.3 线性对象和有向盒体 508

15.3.1 相交测试查询 508

15.3.2 相交信息查询 513

15.4 线性对象和球体 517

15.4.1 直线和球体 517

15.4.2 射线和球体 519

15.4.3 线段和球体 519

15.5 直线和球体扫掠体 521

15.5.1 直线和胶囊体 521

15.5.2 直线和菱形体 524

15.6 直线和二次表面 525

15.6.1 直线和椭球体 526

15.6.2 直线和圆柱体 526

15.6.3 直线和圆锥体 526

15.7 基于平面的对象剔除操作 527

15.7.1 有向盒体 527

15.7.2 球体 528

15.7.3 胶囊体 528

15.7.4 菱形体 528

15.7.5 椭球体 529

15.7.6 圆柱体 530

15.7.7 圆锥体 531

15.7.8 凸多边形或凸多面体 532

第16章 数值方案 533

16.1 方程组 533

16.1.1 线性方程组 533

16.1.2 多项式方程组 533

16.2 特征系统 535

16.2.1 二次多项式的极值 535

16.2.2 约束型二次多项式的极值 535

16.3 最小二乘匹配方案 536

16.3.1 点(x,f(x))的匹配方案 537

16.3.2 基于正交回归的线性匹配方案 537

16.3.3 平面点(x,y,f(x,y))的平面匹配方案 538

16.3.4 基于正交回归的数据点的平面匹配方案 539

16.3.5 圆与2D数据点之间的匹配方案 539

16.3.6 球体与3D数据点之间的匹配方案 540

16.3.7 二次曲线与2D数据点之间的匹配方案 542

16.3.8 二次曲面与3D数据点之间的匹配方案 542

16.4 最小化计算 543

16.4.1 一维方案 543

16.4.2 多维处理方案 544

16.5 根值计算 546

16.5.1 一维方案 546

16.5.2 多维方案 549

16.6 积分运算 550

16.6.1 Romberg积分 550

16.6.2 Gaussian求积法 553

16.7 微分方程 554

16.7.1 常微分方程 554

16.7.2 偏微分方程 556

16.8 快速函数计算 559

16.8.1 平方根以及平方根倒数运算 559

16.8.2 正弦、余弦和正切运算 560

16.8.3 反正切运算 561

第17章 旋转计算 562

17.1 旋转矩阵 562

17.1.1 轴/角-矩阵 562

17.1.2 矩阵-轴/角 564

17.1.3 插值计算 565

17.2 四元数 565

17.2.1 四元数的线性代数观点 567

17.2.2 向量旋转 569

17.2.3 旋转积 569

17.2.4 四元数的古典观 570

17.2.5 轴/角-四元数 572

17.2.6 四元数-轴/角 572

17.2.7 矩阵-四元数 572

17.2.8 四元数-矩阵 572

17.2.9 插值计算 573

17.3 Euler角 573

17.4 性能问题 575

17.5 非均匀缩放 576

17.5.1 Gram-Schmidt标准正交法 577

17.5.2 特征分解 578

17.5.3 极分解法 578

17.5.4 奇异值分解法 578

第18章 面向对象结构 580

18.1 面向对象的软件设计 580

18.1.1 软件质量 580

18.1.2 模块化 581

18.1.3 复用 582

18.1.4 函数和数据 583

18.1.5 面向对象 584

18.2 风格、命名规则和命名空间 584

18.3 运行期类型信息 587

18.3.1 单继承系统 587

18.3.2 多重继承系统 590

18.3.3 宏 592

18.4 模板 592

18.5 共享对象和引用计数 594

18.6 流机制 599

18.6.1 流API 600

18.6.2 Object类API 602

18.7 名称和唯一标识符 608

18.7.1 名称字符串 608

18.7.2 唯一标识符 609

18.8 初始化和终止操作 610

18.8.1 潜在问题 610

18.8.2 基于类的通用处理方案 613

18.9 应用程序层 617

18.9.1 处理命令行参数 618

18.9.2 Application类 621

18.9.3 ConsoleApplication类 624

18.9.4 WindowApplication类 626

18.9.5 WindowApplication3类 632

18.9.6 引擎管理 646

第19章 内存管理 651

19.1 游戏机内存预算 651

19.2 内存泄露检测和收集统计信息 652

19.3 通用内存管理 658

19.3.1 基于顺序适配的内存请求 658

19.3.2 基于伙伴系统的分配方案 665

19.3.3 基于分离存储方案的内存分配 668

19.3.4 内存压缩 668

第20章 基于着色器的特效 670

20.1 顶点颜色 670

20.2 光照和材质 671

20.2.1 环境光 673

20.2.2 有向光源 673

20.2.3 点光源 675

20.2.4 聚光灯 676

20.3 纹理 679

20.4 多重纹理 680

20.5 凹凸贴图 682

20.5.1 生成法线贴图 682

20.5.2 生成切空间信息 684

20.5.3 着色器程序 685

20.6 光泽贴图 688

20.7 球体贴图 690

20.8 立方体贴图 692

20.9 折射 695

20.10 平面反射 697

20.11 平面阴影 700

20.12 投影纹理 703

20.13 阴影贴图 706

20.14 体积雾 707

20.15 蒙皮机制 708

20.16 虹彩效果 710

20.17 水流效果 712

附录A 在Wild Magic中生成着色器 714

A.1 着色器程序 714

A.2 创建几何数据 719

A.3 着色器效果(不使用类数据) 721

A.4 创建ShaderEffect的派生类 723

A.5 着色器常量的动态更新 724

参考文献 725

返回顶部