当前: 首页 - 图书专区 - 3D游戏 卷2 动画与高级实时渲染技术
3D游戏 卷2 动画与高级实时渲染技术


  在线购买
Alan Watt, Fabio Policarpo
7-111-15776-1
59.00
415
2005年04月18日
沈一帆
计算机 > 游戏 > 游戏动画设计
Addison-Wesley
3265
简体中文
16开
3D Games, Vol 2: Animation and Advanced Real-time Rendering
教材
计算机科学丛书



1CD



本书从实践的角度出发,详细介绍3D游戏开发的高级技术,并具体描述了一个游戏引擎的构建过程。全书着重讨论三个主题:游戏开发的一般过程(构造过程、实时处理过程和软件设计);实时渲染过程;角色动画。所有主题均围绕一个具体的游戏开发系统Fly3D SDK 2.0(包含在光盘中)加以介绍。
  本书旨在为当今的三维游戏引擎技术提供一个综合的解决方案,将游戏理论技术与具体引擎代码分析相结合,使读者尽快地进入开发者角色,了解整个游戏开发过程和客户(游戏设计者)的需求,并初步具备游戏引擎开发能力。
  本书适合作为高等院校相关专业的教材,亦可供游戏及相关产业中的研究人员和从业者参考与学习。

光盘中包括:
完整的Fly3D SDK,包括引擎、前端、插件和实用程序的源代码;
演示片段;
引擎指南、参考手册和教程。

  注:光盘中包含的软件可在任何Microsoft Windows系统上运行,但需要完全支持OpenGL的三维视频卡。如果要对源代码作改动,则需要Microsoft Visual C++ 6.0。为了顺利创建场景,光盘中还包含3D Studio Max 3.x和4.x的插件。另外,在http://www.fly3d.com.br上有Fly3D SDK的文档、更新资料、新的演示、FAQ和讨论区。
这本书的目的在于介绍游戏制作中一些先进的技术。主要分为三个部分:
  (1) 一般过程,包括
构造过程――游戏系统所需要的离线处理过程
实时过程――游戏引擎执行的应用无关的过程
软件设计――如何用科学的设计把所有相关元素整合起来,如何将应用和游戏引擎结合。
  (2) 实时渲染过程。实时渲染的理论和目前已有的实践将在各自的章节中加以介绍。另一章介绍几何处理,也就是多边形网格理论中一些重要的和容易忽略的问题。
  (3) 角色动画的理论和实践。
在文章中这些问题将结合一个具体的游戏系统Fly3D SDK 2.0 加以讲述,这样做的目的是在一个实际的游戏系统中尽可能多的引出文中介绍的那些技术。由于这里考虑了理论又考虑了实践,所以我们必须选择一个特殊的设计方式。我们希望这种特殊化不会对读者理解整体原理造成较大影响。
  并不是所有文中介绍的技术都在Fly3D中得到实现,一些章节是纯理论的。然而,就是在这些理论的章节中,大多数的重要方法也已被独立的实现了。对此,我们希望感兴趣的读者能得到足够的知识,从而可以在我们提供的引擎或者他们自己的引擎上实现这些技术。
  在书写本书的时候(2002年8月),游戏与其他应用结合的潜力很大。用较低的处理代价实现较复杂的场景现在已经可行了。文中所提到的一个今后的发展目标就是编制工具用于除游戏以外的其他应用。
  引擎就是执行游戏的系统,应用程序就是像编辑器、BSP构造器等那样的工具。通过这些工具,游戏能够被设计,并进行一些必要的预处理操来为引擎实时处理准备好游戏数据。游戏引擎用来执行游戏,使用离线阶段构造好的有效数据结构。除了有效地渲染静态内容,引擎必须也能处理动态物体间的交互以及游戏与玩家间的交互。
  介绍了一个基本的游戏引擎和相关的BSP理论。文中我们还涉及了用在Fly3D第二版中的更先进的技术。这些发展体现了一种经验的演化和新的不断优化的过程。我们希望这些结果代表了游戏系统发展的现状。
系统的特性有:
-/+ 完全插件导向
-/+ 支持复杂地形和封闭环境的BSP/PVS绘制管理。BSP的一般递归。
+ 通过使用凸集的伪入口和A*算法自动的寻找路径
+ 至多有8通道的固定功能的着色器
- 多纹理支持
+ 着色器集成了硬件化的顶点编程和像素编程。
-/+ 为静态的几何结构创制带有柔和阴影的光照贴图
- 带有雾贴图的三维雾
- 考虑距离衰减的动态变色光源被用来重绘光照贴图和动态物体
+ 动态网格(带有动画混合(animation blending)的顶点变形)
+ 带有骨架的动态网格(带有动画混合(animation blending)的骨骼/皮肤)
+ 用反向动力学进行Mocap的重定位
O 支持着色器的网格文件格式(.F3D)
O 活动骨架的网格文件形式(.K3G)
+ 几种面片的类型:大面片(超过三个顶点),三角形带,三角形扇,三角形汤(tri-soup)和曲面片。
- 对于使用双二次曲面的曲面片进行动态的LOD
+ 硬件渲染选项,包括卡通/侧影轮廓线渲染
- 动态阴影—使用stencil的容积阴影。
- 采用客户/服务器架构的多用户支持(使用DirectPlay)
O 立体声和3维音效支持(使用DirectSound)
- 鼠标键盘输入(使用DirectInput)
- Intel奔腾3的矢量和矩阵算数优化
O 直接从zip文件中读取数据
+ 带有实时预览的.fly文件脚本编辑器
+ 带有实时预览的.shr文件的着色器编辑器
O 带有3D Studio Max版本2,3,4的插件,用于输出包含任意数量动画的.F3D和.K3G文件。
O 带有3D Studio Max版本3,4的插件,用于输入输出.FMP(Fly3D Map)文件。
O flyBuild map应用程序和flyBuild构造前端。
O Quake的关卡转换器,以使用与Quake3兼容的关卡编辑器

-代表在[WATT01]中描述了的部分
+代表本书涉及的部分
O代表没有涉及在文章中涉及但出现在光盘中的应用软件。

  引擎和SDK的功能列表被用来让开发者能够用尽可能低的处理代价实现高级的视觉效果。这种发展以及艺术制作工具的演化已经成为现代游戏的一种重要方面,因为它使得设计家和艺术家能够集中于创作。它也将程序员和艺术家在游戏制作过程中扮演的角色分割开来。我们将在第三章中给出典型例子。
  随着硬件的飞速发展以及更高级的管理和渲染应用的发展,更高的复杂度变得可能,为游戏引擎开发出了出了游戏之外更多潜在的应用。引擎现在已经被应用到如下领域:

  三维游戏:两种游戏类型在文中被广泛的作为例子。
  通常的第一视角射击游戏,玩家在一个复杂的场景中漫游
  -非线性的角色动画类型,主角被玩家操纵在环境中自主的漫游,并与周围的物体交互。
  三维互联网应用/游戏:提供ActiveX控制,包括Fly3D所有的功能。互联网上实时的三维模拟是非常直观的。可能的应用包括三维环境中购物,三维浏览和三维行销应用。
  三维建筑的实施漫游: 游戏引擎另一个潜在的应用是实时的建筑内部的展现。图P.1(彩图)显示了游戏引擎在购物超市和公寓的设计中被用作一个CAAD工具。
  通用的三维可视化:复杂性主要来源于几何形状的复杂和高级渲染技术的需要。我们设计了一个包含这样场景的例子—火星部分表面的多边形表示。(见图1.7)
3D Games: Animation and Advanced Real-time Rendering, Vol 2
1.1数据结构
1.1.1顶点
1.1.2面
1.1.3 包围盒
1.2构造过程
1.2.1从场景中创建BSP树
1.2.2对于路径设计的凸体系和PVS运算
1.2.3处理复杂的地形
1.2.4 BSP叶结点中的面
1.2.5寻找树叶的凸体系
1.2.6 凸体系(convex volume)和伪入口(pseudo-portals)
1.2.7潜在可视集
1.3亮度图的构造
1.3.1生成亮度图的坐标
1.3.2亮度图的打包
1.3.3阐述亮度图
1.4 BSP管理
1.4.1一般的递归方法
1.5高级静态照亮-辐射着色
附录1.1构造实践

第2章 高级游戏系统剖析II--实时处理
2.1 视见和BSP
2.1.1 生成视见约束体的面
2.1.2 远近剪裁面和视见约束体
2.3 使用BSP的基本的碰撞检测和反弹
2.3.1 碰撞和BSP遍历
2.3.2 粒子/场景检测和反弹
2.4 特殊的碰撞检测和反弹
2.4.1 AABB的定义
2.4.2 AABB类的定义和静态成员变量的定义
2.4.3 碰撞检测和碰撞反弹
2.4.4 使用AABB的伪碰撞反弹
2.4.5 使用AABB的碰撞检测
2.4.6 AABB顶点与场景面相交
2.4.7 场景顶点与AABB面相交
2.4.8 AABB边与场景边相交
2.4.9 更精确的碰撞检测
2.4.10 使用碰撞阀值
2.5 基本的路径规划(路径规划)
2.5.1 A*路径选择
附录 2.1 实时处理的演示

第3章 一个先进游戏系统的解析
3.1 应用的种类
3.1.1 插件
3.1.3 工具集(Utilities)
3.2 Fly3D引擎体系结构
3.2.1 FlyMath
3.2.2 FlyDirectX
3.2.3 FlyRender
3.2.4 FlyEngine
附录3.1 写一个插件

第4章 实时渲染
4.1 引言
4.2 顶点,像素和贴图
基本的逐像素着色
4.3 因式分解法
4.4 BRDFs和真实材料
4.5 使用BRDFs进行逐色素着色
4.5.1 实现BRDF:前滤波环境贴图
4.6 环境贴图参数化
4.6.1环境贴图参数化:立方映射
4.6.4 环境贴图—可比点
4.8 着色语言和着色器
4.8.1 着色语言:一个简单的历史回顾
4.8.2 RenderMan 着色语言

第5章 实践实时渲染
5.1 基本着色器
5.1.1 渲染状态
5.1.2 着色器排序
5.1.3 着色器类的实现
5.2 渲染状态
5.2.1 全局设定
5.2.2 局部设定
5.3 着色器实例
5.3.1 环境映射和铬映射效果----玻璃、金属和铬
5.3.2 移动发光告示牌
5.3.3 简单栅栏效果
5.3.4 高级栅栏效果
5.3.5 监视器效果
5.4实时硬件渲染
5.4.1顶点编程
5.4.2像素编程
5.4.3使用寄存结合器的像素编程
5.4.4纹理寻址编程
5.4.5纹理寻址编程——Phong映射
5.4.6顶点和像素编程以及多步着色器
5.5动态纹理
5.6 特效
5.6.1燃烧尾迹
5.6.2 加速器
5.6.3脉冲星
附录5.1 使用和探索着色器

第7章 角色的动画制作
7.1简介
7.1.2专业变形动画制作技术
7.1.3骨架的动作控制
7.1.4低级别动画制作的构成
7.1.5高级别控制
7.2 顶点的动画制作与合成
7.2.1 关键骨架的动画制作的控制
7.3 骨架动画制作
7.3.1 插值中IK的功能
7.4 动画制作的低级别管理
7.4.1  行进的路径规划
7.4.2 骨架动画制作和面向对象的动画控制
7.4.3 对障碍物的躲避
7.4.4 路径规划总结
附录7.1 用四元数描绘旋转
附录7.1.1四元数的插值法
附录7.1.2四元数空间的换进与换出
附录7.1.3球面的线性插值(slerp)
附录7.2 四元数的实现
附录7.3 对角色动画制作设计中效率的思考
附录7.3.1对齐内存的分配
附录7.3.2顶点网格动画制作中关键点的插值
附录7.3.3顶点网格动画制作中插值的合成
附录7.3.4骨架网格顶点的计算

第8章 动画成形方法
8.1 介绍
8.2 样条架构
8.3 自由形状变形
8.4 扩展自由形状变形(EEFDs)
8.5 曲线变形――铰线
8.6 皮肤控制
8.6.1 面向表面的自由形式的变形(SOFFDs)
8.6.2 骨架皮肤精致化
8.6.3 组合皮肤和形状插入
附录8.1 使用径向基函数进行离散数据插补

第9章 改进的角色动画之要素
9.1   引言—— 一种拟人的游戏界面
9.2   将语言表述转变为动画——附例子
9.2.1  IMPROV(纽约大学媒体研究实验室)
9.2.2  PAR 体系结构 (宾夕法尼亚大学人体建模和模拟中心)
9.2.3  具体化的对话界面代理(MIT多媒体实验室)
9.2.4  游戏结论
9.3  面部动画,视觉语言和跟踪
9.4  用于控制,渲染和面部网格跟踪的模型
9.4.1  基于图像的建模,渲染和跟踪
9.4.2  跟踪方法
9.4.3  参数化
9.4.4  伪肌肉模型
9.4.5  面片技术
9.5 视觉语言
9.5.1 变换的发音嘴形(发音嘴形)
9.6 面部动画和MPEG-4
9.7  渲染问题
9.8 总结和问题
9.8.1 参数化对比照片真实性
9.8.2 网格表示
9.8.3 皮肤的渲染
9.8.4 没有声音很多面部动画更好看
附录9.1  一个伪肌肉模型!执行

第10章 运动提取驱动的动画角色
10.1 引言
10.2 运动数据
10.3 骨架和MoCap——BVH格式
10.4 运动数据的基本处理
10.4.1 加速和减速运动
10.4.2 混合和时间扭曲
10.4.3 对齐运动序列
10.4.4 运动扭曲
10.5 MoCap中的插值
10.5.1 B样条表示法
10.5.2 运动混合—动词和副词
10.6 经典信号处理和MoCap
10.6.1 傅立叶理论
10.6.2 傅立叶理论和非周期数据
10.6.3  傅立叶理论和抽样数据
10.6.4  抽样和走样现象
10.6.5  反走样滤波器
10.6.6  时间域中的过滤——卷积
10.7  信号处理和MoCap数据
10.7.1 傅立叶域中的插值/外推法
10.7.2 使用拉氏算子的多主控滤波
10.8 运动编辑:基于约束的方案
10.8.1 运动的动态约束(Dynamic constraint)
10.8.2 运动中的运动学约束
10.8.3  每帧重定位法
10.8.4  时空法(Space-time methods)
Appendix 10.1 示范

第11章 逆向运动学
11.1 例子——二链臂two-link arm
11.2 雅可比矩阵
11.3 IK方法
11.3.1使用雅可比阵的微分方法
11.3.2 最优法
11.3.3 循环坐标下降法(CCD)
11.4 逆向运动学的现实方案
11.4.3防止自碰撞
IK与运动目标
索引

译 者 序
  近年来,随着数字技术突飞猛进的发展,计算机图形学(Computer Graphics,CG)作为一种图形设计的方法及工具,已在世界范围内得到了普遍的重视,成为计算机科学中最为活跃的领域之一。计算机图形学是一门建立在计算机科学、数学、物理、心理学以及艺术基础上的综合学科,它主要研究如何在计算机中表示图形,以及利用计算机进行图形计算、处理和显示的相关原理与算法。目前已被广泛地应用于娱乐、计算机辅助设计(Computer Aided Design,CAD)、科学可视化及系统可视化领域,形成了一系列新的研究方向。
  在当今世界上,在CG技术方面处于领先地位的国家分别是美国和日本。自1968年美国科学家第一次在实验室中将自己亲属的照片扫描进计算机(这也是对计算机图形学的首次尝试)开始,计算机图形学已经在美国发展了整整35年,其中1975年开始举办的SIGGRAPH(计算机图形艺术联合)展不仅极大推动了美国CG技术的发展,而且已经发展成为世界CG技术的年度展览会。同时,日本也依赖其特有的动漫文化产业的支持,为全球CG业,尤其是电子游戏及动画领域输送了大量人才,推动了各种游戏软件及硬件(如SONY最新推出的PS2)的发展。如今在这些国家,CG技术已经广泛深入到影视制作、游戏制作、个人艺术创作、多媒体教育等社会各个层面,每年给国家带来近千亿美元的经济利润。可以说,CG已经成为一种产业,深刻影响着一个国家的经济和文化发展。
  三维游戏开发是计算机图形学中一个重要的研究方向,对开发人员而言,不仅需要熟练掌握图形学中的原理和技术,同时还需具备人工智能、计算机网络等多方面的知识。随着游戏产业朝着专业化的方向发展,游戏程序的开发逐渐分离为两大块内容:开发游戏引擎和使用游戏引擎开发游戏。其中游戏引擎是针对某一类特定形式的游戏所定制的二次开发平台,它使游戏设计者可以较少地关心程序技术本身,而专心致力于游戏可玩性的设计。本书旨在为当今的三维游戏引擎技术提供一个综合的解决方案,将游戏理论技术与具体引擎代码分析相结合,使读者阅读后能够初步具备游戏引擎的开发能力。
  本书分为上下两册。上册主要从理论上探讨最新的游戏引擎技术,包括建模技术、真实感图形生成技术、实时渲染技术、动画技术,以及声音、输入输出控制和物理引擎等高级技术,力求使读者能有一个较完备的理论知识背景,在日后开发中对各方面的技术具有系统的把握能力。
  下册从实践的角度出发,具体描述了一个游戏引擎的构建过程,着重于基本开发工具的使用、软件构架、开发技巧和优化等方面,并结合具体的游戏代码详细说明,帮助读者将上册的理论付诸于实践,使读者尽快进入开发者角色。此外,下册还初步介绍了游戏设计原理和游戏引擎的使用,主要目的在于使游戏引擎开发者能够了解整个游戏开发过程和客户(游戏设计者)的需求。
  本书最后给出了一个完整的三维游戏引擎实例,该引擎采用C++语言开发,基于Windows平台运行,并且支持DirectX9。我们鼓励读者在看懂实例的基础上进一步加入自己的想法,不断完善,从而增强实际动手能力,成为一名专业的游戏引擎开发人员。
  由于时间仓促,翻译中出现的任何不妥之处还请各位读者见谅。在一年多的翻译过程中,复旦大学的领导和老师给予了大力的支持和帮助,同时我们还得到了复旦大学计算机科学与工程系高性能可视化仿真实验室多位同学的协助。在这里,特向以下协助翻译的同学表示大力感谢:金万军、顾源泓、张睿、牟涛、滕莉、陈峥、李宏宇、施荣杰、岳军、李晨佳、周斌、杨树林、陆瀛海、吴鸿智、杜浩、葛云鹏、曹杰、曹贡献、张蕊、吴若寒、雷迦吟、罗毅、陈珊珊。

译者
2004年11月
读者书评
发表评论



高级搜索
动漫专业考生宝典——速写
三维动画材质灯光设计与制作(Maya实现)
三维动画模型设计与制作(Maya实现)


版权所有© 2008 北京华章图文信息有限公司 京ICP备08102525号 京公网安备110102004606号
通信地址:北京市百万庄南街1号 邮编:100037
电话:(010)68318309, 88378998 传真:(010)68311602, 68995260