书籍详情

3D游戏(卷1 实时渲染与软件技术)

3D游戏(卷1 实时渲染与软件技术)

作者:(英)Alan Watt,(英)Fabio Policarpo著;沈一帆[等]译

出版社:机械工业出版社

出版时间:2005-02-01

ISBN:9787111156529

定价:¥59.00

购买这本书可以去
内容简介
  本书综合介绍了当前流行的三维游戏技术,主要内容包括:建模及基础数学;经典的三维图形学;二维技术;实时渲染及交互式三维图形渲染技术;游戏的软件技术——引擎的体系结构以及多玩家技术;游戏领域的其他新兴主题,例如人工智能、物理以及碰撞检测。本书的大部分主题均结合一个具体的游戏开发系统Fly3D(包含在光盘中)加以讲述,这有助于读者直接编写源代码来实现制作动画的梦想。通过编写或修改插件,读者可以对书中的实例进行试验,甚至可以开发出属于自己的游戏。本书适合作为高等院校相关专业的教材,亦可供相关的研究人员和从业者参考与学习。本书前言本书的目标是为当今三维游戏技术提供一个综合的解决方案。该书的主要内容为:实时渲染,或能够使三维图形渲染具有交互能力的必要措施;一些开始被应用于游戏领域的其他领域主题,例如人工智能、物理以及碰撞检测;游戏的软件技术——引擎的体系结构以及多玩家技术。所有内容都是围绕一个能够实现我们所描述的技术的引擎来写的,目的是使你可以编写源代码来实现自己的想法,或是通过编写或修改插件来对现有的实例进行试验。引擎的一些基本特性包括:BSP/PVS渲染管理静态几何体的光照贴图(柔和阴影的预计算光照)动态物体的常规贴图(点积纹理混合)动态物体顶点的漫射和镜面光照带有雾态贴图的容积雾细节纹理多纹理支持碰撞检测带有距离衰减的动态彩色光照动态阴影——光照贴图或Stencil阴影体基于物理的仿真动画化网格(顶点变形)三角链及扇区(fans)细分表面使用双二次贝赛尔网格的动态细节层次(LODs)带有动态光照的卡通风格渲染客户/服务器结构的多玩家支持(TCP/IP)(使用DirectPlay)三维音效支持(使用DirectSound)鼠标及键盘输入(使用DirectInput)英特尔奔腾III向量及矩阵的数学优化完整的插件管理本书可以从前往后或是从后往前阅读。比如说,如果你希望了解详细的实现经过,你可以从第二十一章开始读(引擎体系结构),以帮助你自己了解引擎和开发环境,或是在编写新的插件时使用理论章节作为参考。同时你也可以选择用传统的方式先学习理论部分,再学习具体的实现。这些章节被划分为以下几个内容相互独立的部分:建模及基础数学该部分介绍了在处理三维空间中的对象,以及了解对象表达的理论时所必需具备的数学基础。经典的三维图形学虽然该部分所介绍的大量材料都已经集成在硬件上,我们仍然需要了解硬件的功能,以便能够高效地使用它们。实时渲染该部分介绍了在游戏工业及虚拟现实工业中发展起来的技术,这些技术使得复杂的场景以合理的高质量得到渲染,甚至在低成本的图形处理机上实现实时。对象的控制该部分介绍了用于控制对象运动的主流技术,从简单低级的控制技术,到使用人工智能技术的行为动画。人工智能的材料以争论的形式,围绕将来的潜在需求而给出。二维技术出于对创建成本及渲染成本的考虑,一种解决复杂三维问题的重要方案是使用基于图像的渲染技术。软件技术该部分以当前流行的第一视角射击游戏为例,介绍了编写多玩家游戏所需的技术。我们考察游戏引擎的软件体系结构,并且观察引擎的设计,最后给出一个综合性的引擎参考指南。本书并不是要教读者如何用C++和OpenGL语言编程,相反的,我们假定读者已经对C或C++有一定的了解。文中用C++语言给出了一些算法的详细实例,这些实例是从引擎中提取出来的,并且出于方便在文中进行复制。快速的阅读将会帮助读者从一定程度上了解算法的结构。在大多数情况下,若要完全领会代码的含义,则需要与第二十一章及参考手册一起阅读。本书使用OpenGL图形API/库。在第一章中给出了奔腾III代码和C++语言的等价矩阵操作,第二十章则使用了DirectPlay工具。显然这些工具都需要单独进行学习,同时实例的目的则是让读者品味它们在实际应用中的用途。
作者简介
  AlanWatt,来自英国谢菲尔德大学,曾经编写过多本优秀著作,包括《3DComputerGraphics,AdvancedAnimationandRenderingTechniques》和《TheComputerImage》。FabioPolicarpo,来自里约热内卢的软件开发者,并且是Paralelo计算机公司的创始人,目前正致力于独立三维动作多玩家游戏的研究。相关图书数据仓库(原书第3版)编译原理C++语言的设计和演化组合数学(原书第4版)JAVA编程思想(第2版)CAXA数控铣CAD/CAM技术C语言的科学和艺术计算机视觉UNIX系统编程并行程序设计数据库与事务处理现代操作系统(第2版)计算机网络:自顶向下方法与Internet特色(原书第3版)3D计算机图形学(原书第3版)计算机网络与因特网(原书第4版)数据库原理、编程与性能嵌入式微控制器C++编程思想。第2卷:实用编程技术模式分析的核方法微机接口技术实验教程神经网络原理(原书第2版)并行计算导论(原书第2版)离散数学导学数据库设计教程(第2版)信息论、编码与密码学软件需求数据库系统导论3D游戏卷2动画与高级实时渲染技术数字图像处理疑难解析现代信息检索信息系统原理:原书第6版操作系统高级编译器设计与实现计算机网络系统方案(原书第3版)C程序设计语言(第2版·新版)习题解答计算机科学概论(原书第2版)人工智能:英文可扩展并行计算技术、结构与编程Java面向对象程序设计教程
目录
第1章  三维计算机图形学的数学基础
1.1 处理三维结构
1.1.1 计算机图形学中的三维几何学——仿射变换
1.1.2 改变坐标系的变换
1.2 向量与计算机图形学
1.2.1 向量加法
1.2.2 向量的长度
1.2.3 法向量与叉积
1.2.4 法向量与点积
1.2.5 与法向量相关的向量
1.3 光线与计算机图形学
1.3.1 光线几何学——交点
1.3.2 光线与球体的交点
1.3.3 光线与凸多边形的交点
1.3.4 光线与长方体的交点
1.4 具有多边形性质的双线性插值
1.5 使用SIMD指令集的基础数学引擎
第2章 建模与表示1─对比回顾与多边形网格模型
2.1 介绍
2.2三维物体的多边形表示
2.2.1创建多边形对象
2.2.2多边形对象的手工建模
2.2.3 多边形对象的自动生成
2.2.4 多边形对象的交互式/数学生成
2.3  高级方法——构造性实体几何法
2.4 应用建模器或编辑器的高级方法
第3章 建模与表示2—多边形网格的经济性
3.1 多边形压缩模型
3.2几何压缩(每个顶点的信息)
3.3 编码连接
3.4 三角链
3.5 局部与全局算法
3.6 顶点缓冲的应用
3.7细节层次(Level Of Detail, LOD)处理
第4章 三维表达和建模-地形特殊化
4.1 介绍
4.2简单的高度场地形
4.3地形的建模过程—分形
4.4 地形LODs:三角二叉树(Triangle Bintrees)
4.5用光线投射的方法渲染地形
第5章 建模和表示方法
5.1 介绍
5.2 贝塞尔曲线
5.2.1 分段贝塞尔曲线的连接
5.2.2 贝塞尔曲线性质小结
5.3 B-样条曲线
5.3.1 均匀B-样条
5.3.2 非均匀B-样条
5.3.3 B-样条曲线特性小结
5.4 有理曲线
5.4.1 有理贝塞尔曲线
5.4.2 NURBS
5.5  从曲线到曲面
5.5.1 连续性与贝塞尔面片
5.2.2 贝塞尔面片物体——犹它茶壶
5.5.3 B-样条曲面片
5.6 建模或创建面片曲面
5.6.1  用面片的横截面建模
5.6.2 编辑面片网络——改变存在的网络
5.6.3 用曲面拟合创建面片物体
5.7 渲染参数曲面
5.7.1 面片到多边形的转化
5.8 游戏中的实用贝塞尔曲线
5.8.1 双二次网格亚采样
5.10.1 LOD多边形网格
5.10.2 面片网格
5.10.3 细分表面
第6章 经典多边形网格渲染技术
6.1 图形流水线内的坐标空间和几何操作
6.1.1 局部或模型坐标系
6.1.2 世界坐标系
6.2 视见空间内的操作
6.2.2 视见约束体
6.2.3 三维屏幕空间
6.2.4 视见约束体和深度
6.3 图形流水线内的算法操作
6.3.1基本视见约束体筛选和剪裁
6.3.2像素的明暗处理
6.3.3明暗插值技术
6.3.4 隐面剔除
6.4渲染例子
6.4.1 图6-36(彩页)
6.4.2图6-37(彩页)
6.4.3图6-38(彩页)
6.4.4图6-40(彩页)
6.4.5图6-41(彩页)
第7章        传统映射技术
7.1 简介
7.2  两维纹理贴图到多边形网格物体
7.2.1  使用双线性插值的逆映射
7.2.2  使用中介曲面的逆向映射方法
7.2.3  实用纹理映射
7.3 二维纹理空间到双三次参数曲面片物体
7.4  凹凸映射
7.4.1  凹凸纹理的多通道技术
7.4.2  针对凹凸映射的预计算技术
7.5  环境映射技术
7.5.1  立方体映射(Cubic Mapping)
7.5.2  球面映射(Sphere Mapping)
7.5.3  环境映射: 要点比较
7.6  三维纹理域的映射技术
7.6.1  三维噪声函数(Noise)
7.6.3  三维纹理和动画
7.6.4 三维光照贴图
7.7.1 图7.23(彩页)
7.7.2 图7.24(彩页)
7.7.3 图7.25(彩页)
第8章 反走样(Anti-aliasing)理论和实践
8.1引言
8.2走样和采样
8.3锯齿边
8.4计算机图形采样和实际采样的比较
8.5采样和重构
8.6简单的比较
8.7前滤波方法
8.8超采样或后滤波
8.9纹理映射中的反走样
8.10图像的Fourier变换
第9章 复杂场景的可视性处理
9.1介绍
9.2 为什么要用树结构?
9.2.1空间分割层次
9.2.2 八叉树
9.3  BSP 树
9.3.1  BSP树的自适应细分
9.4 包围体层次结构
9.5 BSP树和多边形物体
9.5.1 BSP树和隐面消除
9.5.2  怎样为多边形网格场景创建BSP树
9.5.3 背面筛选
9.5.4 对照视见约束体进行筛选
9.5.5 影响范围
9.5.6 实用BSP树
9.5.7 地形和BSP技术
9.6 用于构造内型环境的特殊手段
9.6.1  BSPs和PVS: 一个简单的非确定性算法
9.7 入口和镜子
9.7.1 入口的推广
9.8 高级视见约束体筛选
9.8.1 开发BV几何性质
9.8.2 在视见约束体筛选中开发一致性
9.9 精确的可视性
9.9.1 精确的可视性和预计算
9.9.2 可视性过程的排序策略
9.9.3 视见约束体内的可视性:闭塞筛选
9.10 动态物体及其可视性
第10章 游戏中的光照效果
10.1光照贴图
10.1.1光照贴图空间选取
10.1.2 多边形/光照贴图的一致性
10.1.3 光照贴图实践
10.2使用光照贴图的动态光照效果
10.2.1 运动物体(常用)
10.2.2移动的(以观察者为中心)聚光灯
10.2.3移动物体和环境光
10.2.4 移动物体和Gouraud明暗模型
10.3动态光源(Dynamic Light)
10.5雾贴图/容积雾(Fog Map/Volumetric Fog)
10.6 光照例子的研究
10.6.1 条纹化(Stripify)并照亮面片模型
第11章  游戏中的阴影
11.1 阴影的特性
11.1.1计算机图形学中阴影的特性
11.1.2地面上的简单阴影
11.2 经典的阴影算法
11.2.1阴影算法:多边形投影/扫描线
11.2.2阴影算法:阴影体(Shadow Volume)
11.2.3阴影算法:光源转换到阴影多边形的来历
11.2.4阴影算法: 阴影Z -buffer
11.3  游戏中的阴影
11.3.1 在光照图形中加入阴影
11.3.2 柔和阴影
11.3.3动态物体的快速阴影
第12章  多路渲染
12.1介绍
12.2 多路函数性(Multi-pass Functionality)
12.2.1 合成渲染图像
12.2.2 混合(Blending)(OpenGL)
12.2.3  Z-buffer(OpenGL)
12.2.5  模版缓冲(Stencil Buffer)(OpenGL)
12.3  多路渲染算法
12.3.2 平面反射(Planar Reflection)
12.3.3 多路阴影体(Multi-pass Shadow Volume)
12.3.4多路阴影体——实现
12.3.5 光照对象(Light Object)
12.5 多纹理(Multi-texture)
12.5.1  多路与多纹理渲染的比较
12.6 多纹理实例
12.6.1 细节调节(Detail Modulation)
12.6.2 视角依赖的(View-dependent)细节光照贴图
12.6.3 将多纹理用作最终光照模型
第13章  运动控制
13.1  简介
13.2 对动画进行预编辑——线性插值及耗用时间
13.3 预编辑动画——插值问题
13.4  预编辑动画——显式编辑
13.5 旋转插值
13.6 用四元数表示旋转
13.6.1 四元数的插值
13.6.2 移入与移出四元数空间
13.6.3 球形的线性插值(Slerp)
13.7 将相机作为动画对象
13.8 粒子动画
13.10 关节结构
第14章  动态仿真控制
14.1著名示例-脱机动画中的动力学(dynamics)
14.2初值问题和边值问题
14.3主题范围
14.4 动态仿真的动机
14.5 基本经典粒子论
14.5.1力的性质
14.6 基本经典刚体理论
14.6.1线动量、角动量和质心
14.6.2 世界参照系和物体参照系
14.6.3刚体的方向
14.6.4角速度
14.6.5刚体-力和力矩
14.6.6 惯性张量(Inertia Tensor)
14.6.7碰撞反应
14.7 动态仿真的实用性
14.7.1一般动力学模块
14.7.2确定确切的碰撞时间
14.7.3应用依赖性
14.7.4简单例子
14.7.5预计算和在线仿真
14.7.6时空约束
14.8数值积分(Numerical Integration)
14.8.1欧拉方法和误差
14.8.2多步法-Adams-Bashforth
14.8.3 预测-校正
14.8.4 Runge-Kutta
14.8.5自适应方法
第15章 碰撞检测(Collision Detection)
15.1 广义/狭义二阶段算法
15.2 包围体层次结构
15.3 使用AABB的广义碰撞检测
15.3.1  OBB树
15.3.2 建造OBB树
15.4 使用OBB的广义碰撞检测
15.4.1  k-top 树
15.5 使用局部或对象空间划分的广义碰撞检测
15.6 狭义碰撞检测
15.6.1  凸多面体对-精确碰撞检测
15.6.3 分割面
15.7 单阶段方法
15.7.1        BSP树      
15.7.2 局部或对象空间划分——BSP树的合并      
15.7.3 球体/多面体的特殊化处理
15.7.4 使用深度缓存(Z-buffer)
第16章 交互控制
16.1 交互与动画
16.2 控制器模块
16.3 用户-对象交互 使用简单阻尼的6自由度控制
16.4 用户-对象动画 4键汽车模拟
16.5 对象-对象交互
16.6 摄影机-对象交互
16.7 具有简单自治行为的对象
16.7.1炮台
16.7.2机器人飞行物体
16.8 用户-场景交互
第17章  行为与人工智能
17.1 确定的方法和体系结构
17.1.1 有限状态机器
17.3 主体结构的例子
17.3.1 由顶向下对由底向上
17.5 作为例子的感知视觉的作用
17.6 认知结构(Learning Architecture)
17.6.1 认知和神经网格
17.6.2  两个线性可分模式类别的感知器
17.6.3 N类别的感知器
17.6.4 MLP前馈的神经网络
17.6.5 向后传播算法
第18章  二维技术
18.1 图像金字塔
18.2 小波变换
18.3 图象变换及基矩阵
18.4 小波和电脑游戏
18.5 图像变形——变形转换技术(Morphing)
18.5.1 变形转化二维图像
18.5.2 二样条网格扭曲
第19章 基于图像的渲染
19.1介绍
19.2 重复使用已绘制的图像——二维技术
19.2.1平面插板(Planar Impostors)或精灵(Sprite)
19.2.2计算平面插板的有效性
19.2.3布告板和光照效果
19.3变化的渲染资源
19.3.1优先渲染
19.3.2图像分层
19.3.3计算层的有效性
19.3.4以深度对层排序
19.4使用深度信息
19.4.1三维卷绕
19.4.2分层深度图像(Layered Depth Image,LDI)
19.4.3 使用LDI的入口图像
19.5 视见插值
19.5.1 视图变形
19.6 四维技术—泛光或光场渲染技术
19.7照片建模和IBR
19.7.1 使用照片全景摄影的基于图像的渲染
19.7.2合成全景图
第20章  多人游戏技术
20.1 介绍
20.2 定义
20.3 多人游戏的实现
20.4 多人游戏所面临的问题
20.4.1 延迟发生的原因
20.5 简化通讯信息
20.5.1 数据压缩
20.5.2 预测性方法
20.5.3  一致性
20.6 应用客户-服务器模式实现多人游戏
20.6.1        网络接口
第21章 引擎体系结构
21.1  C++游戏编程
21.11 类(Class)
21.1.2 构造函数(Constructor)
21.1.3 析构函数(Destructor)
21.1.4 继承性(Inheritance)
21.1.5 虚拟函数(Virtual Function)
21.1.6 运算符(Operator)
21.1.7 模板(Template)
21.1.8 公有性/私有性/保护性
21.2 游戏中复杂度的管理和改进
21.2.1 游戏结构
21.3 引擎设计和体系结构
21.4 Fly 3D软件体系结构
21.4.1 插件
21.4.2  Fly3D前台(Front-end)和每帧中的主要渲染操作
21.4.3 碰撞检测
21.4.4 常备(stock)和活动对象列表
21.4.5 作用球(Sphere of Influence)
21.4.6 对象与插件的通讯
21.4.7 镜头和场景绘制
21.4.8 文本输出
21.4.9 渲染API
第22 章 Fly3D 软件开发工具包(SDK)参考
22.1 序言
22.2 全局参考
22.3 对象参考
22.3.1 类anim_mesh:public mesh
22.3.2 类base_object
22.3.3 类bezier_curve:public Base_object
22.3.4 类bezier_patch:public base_object
22.3.5 类boundbox
22.3.6 类bsp_node:public plane
22.3.7 类bsp_object:publicbase_object,particle,local_system
22.3.8 类class_desc
22.3.9 类console
22.3.10 类directX
22.3.11 类face:public plane
22.3.12 类fly_pak
22.3.13 类fly_pak_util
22.3.14 类flydll
22.3.15 类flydllgroup
22.3.16 类flyEngine
22.3.17 类light_map
22.3.18 类light_map_pic
22.3.19 类light_vertex
22.3.20 类local_system
22.3.21 类mat4*4
22.3.22 类mesh:public base_object
22.3.23 类mp_games
22.3.24 类mp_msg
22.3.25 类param_desc
22.3.26 类particle
22.3.27 类picture
22.3.28 类plane
22.3.29 类player_data
22.3.30 类render
22.3.31 类renderGL:public render
22.3.32 类sound:public base_object
22.3.33 类static_mesh:public bsp_object
22.3.34 类stripfan_mesh
22.3.35 类textcache
22.3.36 类textcacheGL:public text-cache
22.3.37 类vector
附录A Fly3D SDK教程
参考文献
猜您喜欢

读书导航