3D游戏引擎设计实时计算机图形学的应用方法(第2版).doc_第1页
3D游戏引擎设计实时计算机图形学的应用方法(第2版).doc_第2页
3D游戏引擎设计实时计算机图形学的应用方法(第2版).doc_第3页
3D游戏引擎设计实时计算机图形学的应用方法(第2版).doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章 概述第1章 概 述1.1 图形硬件和游戏发展史本书第1版编写于20世纪90年代,当时,3dfx Voodoo图形卡流行于世且NVIDIA Riva TNT图形卡刚刚面世。目前,图形硬件以及游戏业均发生了天翻地覆的变化,具体而言,计算机硬件内置了强大的图形处理单元(GPU)、显存以及可编程着色器(这些内容在编写本书第1版时基本未在消费级显卡中出现)。同样,游戏业也紧跟时代的步伐,其视效内容更为丰富,并涉及更多的图形学知识。当时,Sony Playstation 2尚未发布,隶属于Microsoft旗下的Xbox以及Nintendo Game Cube也仅仅刚刚上市。当前,Microsoft已将产品升级至Xbox 360并包含多个处理器;Sony公司研制的Sony Playstation 3则采用了Cell体系结构。另外,小型游戏设备以及包含视屏功能的移动电话设备更是屡见不鲜。随着时代的进步,针对实时图形渲染,本书第1版内容显然已落伍。因此,本书第2版应运而生。1.2 本书版本与软件发展史本书讲述了游戏中的实时图形学,在对本书的编写进行构思时,正值20世纪90年代末期,当时,我就职于Numerical Design, Ltd(现更名为Emergent Game Technologies)并负责NetImmerse(现更名为Gamebtyo)的设计与开发。在当时的环境下,术语 “游戏引擎”主要指系统的图形部分,NetImmerse用于系统的实时渲染,进而释放计算处理单元(CPU)所承受的压力。其中,CPU负责处理逻辑、游戏人工智能(AI)、基础的碰撞和物理计算以及其他组件。据此,本书第1版详细地阐述了NetImmerse的创建过程。一段时间以来,鉴于本书主要讨论图形学,却以“游戏引擎”而冠名,因而我也曾一度饱受非议。目前,术语“游戏引擎”主要指引擎集合,包括图形部分、物理、AI、网络部分以及脚本机制等内容。因此,在较短时间内完成一部兼具深度和广度的专业书籍并非易事,也非本人所愿。对此,本书第2版对原书名进行了适当的调整。另外,本书第2版添加了物理学、应用层以及引擎交互方式等内容,以进一步消除原书名所产生的误会。本书第1版于2000年9月出版,多年以来,该书以其良好的品质受到了读者的好评,且书中的算法以及场景图管理等内容依然发挥着其固有的作用。然而,与渲染相关的部分内容则稍显过时。亦即,图形系统的固定功能管线已非必需,图形硬件的演化结果已然支持基于着色器的图形管线,进而大大提升了原有计算速度,并可使开发人员的注意力集中于特效自身(通过着色器编程),而非调用固定功能管线中的状态开启函数以获取期望的视觉效果。本书第2版主要讨论场景图系统设计及其关联的渲染层。针对特定的场景图类,例如控制器类、排序类以及细节级别(LOD)类,大多数算法均未发生改变;而核心类(例如与空间、几何以及节点相关的类数据)则变化较大,以满足着色器系统之要求。因此,与之前的版本相比,当前场景图管理系统则更为灵活、强大、高效。同时,场景图系统还有效地整合了着色器视效系统,据此,用户可实现单路渲染、基于单一视效的多路渲染,甚至还可实现包含多种视效的绘制操作。这里,依赖于设计良好的自动系统,本书向应用程序开发人员隐藏了诸多细节内容,与之前的场景图管理系统相比,这可视为一个重大改进。本书包含了多个源代码库以及大量的可编译、运行的示例代码并支持多个平台(例如PC,Mac,Linux/Unix以及各平台上的编译器),这也是本书与其他技术书籍的区别之处。另外,本书代码均经过精心设计,满足质量控制要求,支持多平台并经过编写者的精心维护。尽管如此,本人依然希望读者将遇到的问题发送至我的邮箱内,无论是源代码抑或是本书素材方面的问题。Geometric Tools网站列出了对应软件的更新内容,包括bug修复、新增特性以及问题修订。本书第1版提供了Wild Magic 0.1版本,且该书经过两次重印,Wild Magic软件对应版本分别为0.2版和0.4版。本书第2版则采用了Wild Magic 4.0版本。与Wild Magic 0.1版本相比,该版本包含了重大改进,这也是吸引众多用户的重要原因之一。Wild Magic软件的最新版本重写了渲染层,从而大大提升了引擎使用的方便性以及渲染性能。重写过程耗时大约3个月,实现了基于着色器的软件渲染,以进一步体现本书所包含的理念。这里,也希望读者在自己的项目中感受Wild Magic所带来的乐趣。1.3 章 节 导 读本书共分为6个部分,对应内容如下所示。1计算机图形学第2章讨论渲染系统的细节内容,包括转换操作、场景模型、剔除和剪切操作、光栅化机制、软件/硬件渲染问题以及当前较为流行的应用程序编程接口(图形API)。第3章针对软件渲染器并从子系统编程角度讨论渲染机制。同时,本章还将针对着色器渲染系统考察有效的接口抽象机制,并向读者传达了如下信息:渲染器在资源管理这一类问题上花费了大量的时间。除此之外,第3章还阐述了与着色器程序相关的细节内容。这里,问题的核心在于数据管理,而非如何编写着色器,例如几何顶点数据与顶点程序输入数据的匹配问题、顶点程序输出数据与像素程序输入数据之间的匹配问题,进而确保基础框架的正确设置,以使全部资源在正确的时间位于正确的位置,彼此间实现有效的连接,以备实时渲染所用。2场景图管理第4章将讨论基于场景图的数据组织方式,该系统定位于框架中的高层以方便应用级程序员使用。另外,该系统可高效地向渲染器提供数据并兼具可扩展性。同时,本章还讨论了场景图的编译机制,亦即,将场景图转化为基于多平台的优化形式。第57章讲述场景图管理系统的节点设计以及子系统设计,此类子系统支持动画操作、空间排序操作以及细节级别设置。3碰撞检测和物理学第89章探讨3D应用程序中与物理真实感相关的基础概念,其中包括真实环境中的碰撞检测方案、拾取操作以及针对碰撞躲避的自动寻路行为。物理学内容主要集中于物理模拟过程中较为常见的概念,受篇幅所限,相关内容不包含商业物理引擎中的“黑盒”物理,例如Havok。这里所讨论的物理学多偏重于数学知识以及浮点运算的数字精度问题。4数学知识第1017章主要涉及与Wild Magic相关的、源代码中的数学问题,内容涵盖了几何操控和查询过程中的标准对象。其中,第1112章阐述了曲线和表面,以及与距离、包含和相交测试相关的查询计算。第16章讲述图形和物理应用程序中的数值问题。第17章探讨旋转操作,包括旋转的基本特征以及四元数与矩阵的关联方式。5软件工程第18章主要介绍了面向对象设计和编程的基本原理,包括库的底层支持、运行期数据信息、共享对象和引用计数、数据流(硬盘读取以及网络读取操作)以及与应用程序对象创建和销毁相关的初始化和终止操作。第19章讨论内存管理问题,当读者尝试编写自己的内存管理器并实现内存块的定位读取时,该问题显得尤为重要。特别地,该方案还可用于游戏机设备,其中,各个引擎(图形引擎、物理引擎以及音频引擎等)均采用了内存预算方案。最后,游戏中还可能出现以下情况,即某一系统占用了大量的全局堆内存空间,进而导致其他系统无法正常地实现内存空间的分配。6基于着色器的特效第20章展示了示例着色器以及基于着色器的应用程序使用方式,进而描述着色器的实现任务以及Wild Magic的处理方式。另外,附录还包含了如何向Wild Magic新增着色器效果。上述组织方式有效地改善了本书第1版中的缺陷。另外,读者曾抱怨书中贯穿了过多的数学内容非常抱歉,此类“缺点”恕难以更正。在相对高级的图形引擎和物理引擎中,数学方面的内容占据了很大的比例。本书将于先期提出与图形学相关的基础概念,细节内容将分散至各个章节中,并与数学知识相结合。例如,相对于视锥体平面的包围体剔除操作暂不讨论基于特定包围体的细节内容;当考察与距离相关的碰撞检测算法时,暂不讲解对象组合之间的特定距离算法。另外,本书附录部分涵盖了全书所需的数学知识。本书每一章均设有一定数量的习题,编写高质量的习题是一项十分耗时的工作。我曾结识一位就职于Addison-Wesley出版社的朋友(20世纪80年代早期),其全职工作即是管理微积分教材中的习题(该教材由George Thomas-Ross Finney联袂编写,当时已升级至第7版)。由于撰写书

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论