《3D游戏 卷1 实时渲染与软件技术》PDF下载

  • 购买积分:17 如何计算积分?
  • 作  者:(英)Alan Watt,(英)Fabio Policarpo著;沈一帆,陈文斌,朱怡波等译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2005
  • ISBN:7111156528
  • 页数:566 页
图书介绍:本书全面论述了与3D游戏有关的实时软件生成技术。

第1章 三维计算机图形学的数学基础 1

1.1处理三维结构 1

1.1.1计算机图形学中的三维几何学——仿射变换 1

第一部分 基础知识 1

1.1.2改变坐标系的变换 6

1.2向量与计算机图形学 7

1.2.1向量加法 7

1.2.2向量的长度 8

1.2.3法向量与叉积 8

1.2.4法向量与点积 9

1.2.5与法向量相关的向量 10

1.3.1光线几何学——交点 11

1.3光线与计算机图形学 11

1.3.2光线与球体的交点 12

1.3.3光线与凸多边形的交点 12

1.3.4光线与长方体的交点 15

1.4多边形性质的双线性插值 15

1.5使用SIMD指令集的基础数学引擎 16

第2章 建模与表示1——对比回顾与多边形网格模型 24

2.1简介 24

2.2三维物体的多边形表示 27

2.2.1创建多边形对象 30

2.2.2多边形对象的手工建模 31

2.2.4多边形对象的交互式/数学生成 32

2.2.3多边形对象的自动生成 32

2.3高级方法——构造性实体几何法 36

2.4应用建模器或编辑器的高级方法 38

第3章 建模与表示2——多边形网格的经济性 40

3.1多边形模型压缩 40

3.2几何形状压缩(每个顶点的信息) 40

3.3编码连接 42

3.4三角链 42

3.5局部与全局算法 44

3.6顶点缓冲的应用 44

3.7细节层次处理 46

4.2简单的高度场地形 51

4.1简介 51

第4章 建模与表示3——地形特殊化 51

4.3地形的建模过程——分形 52

4.4地形LOD:三角二叉树 53

4.5用光线投射的方法渲染地形 56

第5章 建模与表示4——贝济埃、B样条和细分曲面 57

5.1简介 57

5.2贝济埃曲线 58

5.2.1分段贝济埃曲线的连接 63

5.2.2贝济埃曲线性质小结 64

5.3 B样条曲线 64

5.3.1均匀B样条 65

5.3.2非均匀B样条 68

5.3.3 B样条曲线特性小结 73

5.4有理曲线 74

5.4.1有理贝济埃曲线 74

5.4.2 NURBS 75

5.5从曲线到曲面 76

5.5.1连续性与贝济埃面片 79

5.5.2贝济埃面片物体——犹他茶壶 80

5.5.3 B样条曲面片 81

5.6建模或创建面片曲面 82

5.6.1用面片的横截面建模 83

5.6.2编辑面片网络——改变存在的网络 86

5.6.3用曲面拟合创建面片物体 89

5.7渲染参数曲面 93

5.8游戏中的实用贝济埃技术 99

5.8.1双二次网格亚采样 99

5.8.2曲线、物体和细分 106

5.9细分曲面 111

5.9.1 Catmull-Clark细分 111

5.9.2蝴蝶细分 114

5.9.3改进的蝴蝶算法 123

5.10.2面片网格 125

5.10.3细分表面 125

5.10.1 LOD多边形网格 125

5.10缩放性——多边形网格、面片网格和细分曲面 125

第二部分 传统3D图形处理方法 127

第6章 传统多边形网格渲染技术 127

6.1 图形流水线中的坐标空间和几何操作 128

6.1.1局部或模型坐标系 128

6.1.2世界坐标系 128

6.1.3照相机(或眼睛、视见)坐标系 128

6.2视见空间里的操作 131

6.2.1筛选或背面剔除 132

6.2.2视见约束体 132

6.2.3三维屏幕空间 134

6.2.4视见约束体和深度 136

6.3图形流水线中的算法操作 138

6.3.1基本视见约束体筛选和裁剪 139

6.3.2像素的明暗处理 141

6.3.3明暗插值技术 146

6.3.4隐面剔除 148

6.4渲染示例 154

6.4.1图6-36(见彩页) 154

6.4.2图6-37(见彩页) 154

6.4.3图6-38(见彩页) 154

6.4.4图6-40(见彩页) 154

6.4.5图6-41(见彩页) 155

第7章 传统映射技术 156

7.1简介 156

7.2.1使用双线性插值的逆向映射 158

7.2二维纹理贴图到多边形网格物体 158

7.2.2使用中间表面的逆向映射方法 159

7.2.3实用纹理映射 161

7.3二维纹理空间到双三次参数曲面片物体 163

7.4凹凸纹理映射 164

7.4.1凹凸纹理映射的多通道技术 165

7.4.2针对凹凸映射的预计算技术 166

7.5环境映射技术 166

7.5.1立方体映射 168

7.5.2球面映射 168

7.5.3环境映射:要点比较 170

7.6.1三维噪声函数 171

7.6三维纹理域技术 171

7.6.2模拟湍流 172

7.6.3三维纹理和动画 173

7.6.4三维光照贴图 174

7.7对比试验 174

7.7.1图7-23(见彩页) 175

7.7.2图7-24(见彩页) 175

7.7.3图7-25(见彩页) 175

第8章 反走样理论和实践 176

8.1简介 176

8.2走样和采样 176

8.3锯齿边 178

8.4计算机图形采样和实际采样的比较 179

8.5采样和重构 180

8.6简单的比较 180

8.7前滤波方法 181

8.8超采样或后滤波 182

8.9纹理映射中的反走样 184

8.10图像的傅里叶变换 188

第三部分 实时渲染 193

第9章 复杂场景的可视性处理 193

9.1简介 193

9.2为什么要用树结构 195

9.2.2八叉树 196

9.2.1空间细分层次 196

9.3 BSP树 198

9.4包围体层次结构 200

9.5 BSP树和多边形物体 200

9.5.1 BSP树和隐面消除 200

9.5.2怎样为多边形网格场景创建BSP树 204

9.5.3背面筛选 207

9.5.4对照视见约束体进行筛选 207

9.5.5影响范围 209

9.5.6实用BSP树 209

9.5.7地形和BSP技术 210

9.6用于构造内型环境的特殊手段 212

9.7人口和镜子 213

9.8高级视见约束体筛选 216

9.8.1开发BV几何性质 217

9.8.2在视见约束体筛选中开发一致性 218

9.9精确的可视性 219

9.9.1精确的可视性和预计算 219

9.9.2可视性过程的排序策略 220

9.9.3视见约束体内的可视性:闭塞筛选 220

9.10动态物体及其可视性 223

第10章 游戏中的光照效果 225

10.1光照贴图 225

10.1.1光照贴图空间选取 226

10.1.2多边形/光照贴图的一致性 227

10.1.3光照贴图实践 228

10.2.2移动的(以观察者为中心的)聚光灯 230

10.2.3运动物体和环境光 230

10.2使用光照贴图的动态光照效果 230

10.2.1运动物体(常用) 230

10.2.4运动物体和Gouraud明暗模型 231

10.3动态光源 231

10.4可调/可分离的光源 231

10.5雾贴图/容积雾 231

10.6光照例子的研究 232

第11章 游戏中的阴影 237

11.1阴影的特性 237

11.1.1计算机图形学中阴影的特性 238

11.2.1阴影算法:多边形投影/扫描线 239

11.1.2地面上的简单阴影 239

11.2经典的阴影算法 239

11.2.2阴影算法:阴影体 240

11.2.3阴影算法:光源变换到阴影多边形的来历 242

11.2.4阴影算法:阴影Z缓冲 243

11.3游戏中的阴影 244

11.3.1在光照贴图中加入阴影 244

11.3.2柔和阴影 244

11.3.3动态物体的快速阴影 245

12.2多路函数性 249

12.2.1合成渲染图像 249

12.1简介 249

第12章 多路渲染 249

12.2.2混合(OpenGL) 250

12.2.3 Z缓冲(OpenGL) 251

12.2.4累加缓冲(OpenGL) 251

12.2.5模板缓冲(OpenGL) 251

12.3多路算法 252

12.3.1由后向前透明 252

12.3.2平面反射 253

12.3.3多路阴影体 255

12.3.4多路阴影体——实现 256

12.3.5光照对象 259

12.4多路采样方法 260

12.5多纹理 261

12.6多纹理实例 262

12.6.1细节调节 262

12.6.2视角依赖的细节光照贴图 263

12.6.3将多纹理用作最终光照模型 263

第四部分 对象的控制 265

第13章 运动控制 265

13.1简介 265

13.2对动画进行预编辑——线性插值及耗用时间 266

13.3预编辑动画——插值问题 267

13.4预编辑动画——显式编辑 268

13.5旋转插值 271

13.6用四元数表示旋转 272

13.6.1四元数的插值 274

13.6.2移入与移出四元数空间 274

13.6.3球形的线性插值(slerp) 275

13.7将照相机作为动画对象 277

13.8粒子动画 278

13.9粒子动画与计算机游戏 280

13.10关节结构 282

第14章 动态仿真控制 290

14.1著名示例——脱机动画中的动力学 290

14.2初值问题和边值问题 290

14.4动态仿真的动机 291

14.3主题范围 291

14.5基本经典粒子论 292

14.6基本经典刚体论 294

14.6.1线动量、角动量和质心 294

14.6.2世界参照系和物体参照系 294

14.6.3刚体的方向 294

14.6.4角速度 295

14.6.5刚体——力和力矩 296

14.6.6惯性张量 297

14.6.7碰撞反应 299

14.7动态仿真的实用性 300

14.7.1一般动力学模块 300

14.7.2确定确切的碰撞时间 301

14.7.3应用依赖性 302

14.7.4简单例子 302

14.7.5预计算和在线仿真 306

14.7.6时空约束 307

14.8数值积分 308

14.8.1欧拉方法和误差 308

14.8.2多步法——Adams-Bashforth 309

14.8.3预测—校正 310

14.8.4Runge-Kutta 311

14.8.5自适应方法 312

第15章 碰撞检测 313

15.1广义/狭义二阶段算法 315

15.2包围体层次结构 317

15.3使用AABB的广义碰撞检测 318

15.3.1 OBB树 319

15.3.2建造OBB树 319

15.4使用OBB的广义碰撞检测 320

15.5使用局部或对象空间划分的广义碰撞检测 322

15.6狭义碰撞检测 323

15.6.1凸多面体对——精确碰撞检测 323

15.6.2 Lin-Canny最近特征算法 324

15.6.3分割面 326

15.7单阶段方法 327

15.7.1 BSP树 327

15.7.2局部或对象空间划分——BSP树合并 328

15.7.3球体/多面体的特殊化处理 329

15.7.4使用深度缓存 330

15.7.5 Hubbard的时间攸关球树算法——单步方法 330

第16章 交互控制 333

16.1交互与动画 333

16.2控制器模块 333

16.3用户—对象交互——使用简单阻尼的6自由度控制 334

16.4用户—对象动画——4键汽车仿真 336

16.5对象—对象交互 339

16.6照相机—对象交互 340

16.7具有简单自治行为的对象 340

16.7.1炮台 340

16.7.2机器人飞行物体 341

16.8用户—场景交互 343

第17章 行为与人工智能 345

17.1确定的方法和体系结构 346

17.1.1有限状态机 347

17.1.2模糊状态机 348

17.2主体和层次 349

17.2.1反射或反应主体 350

17.2.2具有内部状态的反射主体 350

17.2.3基于目标的主体 350

17.3主体体系结构的例子 351

17.4认知模型和情景演算 354

17.5作为例子的感知视觉的作用 358

17.6认知结构 359

17.6.1认知和神经网络 359

17.6.2两个线性可分模式类的感知器 361

17.6.3n类别的感知器 363

17.6.4 MLP前馈神经网络 364

17.6.5向后传播算法 365

第五部分 二维技术 367

第18章 二维技术 367

18.1图像金字塔 367

18.2小波变换 369

18.3图像变换与基矩阵 372

18.4 小波与计算机游戏 373

18.5图像变形——变形转换技术 377

18.5.1变形转换二维图像 379

18.5.2二样条网格扭曲 380

第19章 基于图像的渲染 383

19.1简介 383

19.2重复使用已绘制的图像——二维技术 383

19.2.1平面插板或sprite 383

19.2.2计算平面插板的有效性 385

19.2.3布告板和光照效果 386

19.3.1优先渲染 387

19.3.2图像分层 387

19.3变化的渲染资源 387

19.4使用深度信息 390

19.4.1三维卷绕 390

19.4.2分层深度图像(LDI) 393

19.4.3使用LDI的人口图像 394

19.5视见插值 395

19.6四维技术——泛光或光场渲染方法 398

19.7照片建模和IBR 399

19.7.1使用照片全景的基于图像的渲染 402

19.7.2合成全景图 402

20.1简介 405

20.2定义 405

第20章 多人游戏技术 405

第六部分 软件技术 405

20.3多人游戏的实现 406

20.4多人游戏所面临的问题 408

20.4.1延迟发生的原因 408

20.4.2延迟语义学、消息丢失和重组 409

20.5简化通信信息 410

20.5.1数据压缩 410

20.5.2预测性方法 411

20.5.3一致性 413

20.6应用客户—服务器模式实现多人游戏 414

21.1.1类 421

21.1 C++游戏编程 421

第21章 引擎体系结构 421

21.1.2构造函数 422

21.1.3析构函数 422

21.1.4继承性 422

21.1.5虚拟函数 423

21.1.6运算符 424

21.1.7模板 425

21.1.8公有性/私有性/保护性 426

21.2游戏中复杂度的管理和改进 426

21.3引擎设计和体系结构 427

21.4Fly3D软件体系结构 428

21.4.1插件 429

21.4.2 Fly3D前端和每帧中的主要渲染操作 432

21.4.3碰撞检测 434

21.4.5作用球 435

21.4.6对象与插件间的通信 435

21.4.4库存和活动对象列表 435

21.4.7照相机和场景绘制 436

21.4.8文本输出 436

21.4.9渲染API 436

第22章 Fly3D软件开发工具包参考 438

22.1简介 438

22.2全局参考 438

22.3对象参考 441

22.3.1类anim_mesh:public mesh 441

22.3.3类bezier_curve:public base_obiect 444

22.3.2类base_object 444

22.3.4类bezie_rpatch:public base_object 447

22.3.5类boundbox 452

22.3.6类bsp_node:public plane 454

22.3.7类bsp_object:public baseobject, particle,local_system 454

22.3.8类class_desc 460

22.3.9类console 461

22.3.10类directX 464

22.3.11类face:public plane 470

22.3.12类fly_pak 472

22.3.13类fly_pak_util 475

22.3.15类flydllgroup 476

22.3.14类flydll 476

22.3.16类flyEngine 480

22.3.17类light_map 498

22.3.18类light_map_pic 500

22.3.19类light_vertex 502

22.3.20类local_system 503

22.3.21类mat4 x4 505

22.3.22类mesh:public base_object 506

22.3.23类mp_games 510

22.3.24类mp_msg 511

22.3.25类param_desc 511

22.3.26类particle 512

22.3.27类pieture 514

22.3.28类plane 517

22.3.29类player_data 517

22.3.30类render 518

22.3.31类renderGL:public render 520

22.3.32类sound:public base_object 523

22.3.33类static_mesh:publicbsp_object 524

22.3.34类stripfan_mesh 526

22.3.35类textcache 528

22.3.36类textcacheGL:public text-cache 531

22.3.37类vector 534

附录A Fly3D SDK教程 539

参考文献 559