游戏物理引擎开发
2013-12-31
清华大学出版社
[美] Ian Millington
徐明亮,李强,宋伟
无
《游戏物理引擎开发》详细阐述了与游戏物理引擎相关的高效解决方案及相应的数据结构和算法,主要包括粒子数学、运动定律、粒子物理引擎、合力、弹力、硬约束条件、质体物理引擎、旋转操作的数学知识、刚体运算定律、刚体物理引擎、碰撞检测、生成碰撞、碰撞处理方案、静态接触和摩擦力、稳定性和优化问题、整合方案以及其他物理引擎等内容。此外,本书还提供了相应的算法、代码以及伪代码,以帮助读者进一步理解相关方案的实现过程。
《游戏物理引擎开发》适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学教材和参考手册。
《游戏物理引擎开发》
第1章 概述
1.1 游戏物理
1.2 物理引擎
1.2.1 物理引擎的优点
1.2.2 物理引擎的缺点
1.3 物理引擎的实现方案
1.3.1 对象类型
1.3.2 碰撞处理方案
1.3.3 冲量和作用力
1.3.4 构建内容
1.4 物理引擎中的数学
1.4.1 必备的数学知识
1.4.2 数学知识回顾
1.4.3 本书引入的数学概念
1.5 本书源代码
1.6 本书组织方式
第1部分 粒 子 物 理
第2章 粒子数学
2.1 向量
.2.1.1 左手空间和右手空间
2.1.2 向量和方向
2.1.3 标量和向量的乘法运算
2.1.4 向量的加法和减法运算
2.1.5 向量乘法
2.1.6 分量积
2.1.7 标量积
2.1.8 向量积
2.1.9 正交基向量
2.2 积分运算
2.2.1 微分学
2.2.2 积分运算
2.3 本章小结
第3章 运动定律
3.1 粒子
3.2 运动定律
3.2.1 牛顿第一定律
3.2.2 牛顿第二定律
3.2.3 力学方程
3.2.4 向粒子添加质量
3.2.5 动量和速度
3.2.6 重力
3.3 积分算式
3.3.1 更新方程
3.3.2 完整的积分算式
3.4 本章小结
第4章 粒子物理引擎
4.1 弹道轨迹
4.1.1 设置发射对象属性
4.1.2 实现方法
4.2 焰火效果
4.2.1 焰火数据
4.2.2 焰火效果规则集
4.2.3 实现方法
4.3 本章小结
第2部分 质量集合体物理
第5章 合力
5.1 d'alembert定理
5.2 作用力发生器
5.2.1 接口和多态
5.2.2 实现方法
5.2.3 重力发生器
5.2.4 阻力发生器
5.3 内建重力和阻尼机制
5.4 本章小结
第6章 弹力
6.1 胡克定律
6.1.1 弹力限制条件
6.1.2 弹性材质
6.2 弹力发生器
6.2.1 基础型弹力发生器
6.2.2 固定弹簧发生器
6.2.3 弹性橡皮筋
6.2.4 浮力发生器
6.3 硬质弹簧
6.3.1 硬质弹簧产生的问题
6.3.2 仿硬质弹簧
6.4 本章小结
第7章 硬约束条件
7.1 简单的碰撞解决方案
7.1.1 闭合速度
7.1.2 回弹系数
7.1.3 碰撞法向和碰撞法线
7.1.4 冲量
7.2 碰撞处理方案
7.2.1 碰撞检测
7.2.2 处理相交对象
7.2.3 静态碰撞
7.3 碰撞处理算法
7.3.1 处理顺序
7.3.2 时分引擎
7.4 类碰撞材质
7.4.1 绳索
7.4.2 连杆
7.5 本章小结
第8章 质体物理引擎
8.1 引擎概述
8.2 使用物理引擎
8.2.1 索桥和线缆
8.2.2 摩擦力
8.2.3 blob游戏
8.3 本章小结
第3部分 刚体物理系统
第9章 旋转操作的数学知识
9.1 二维环境下的旋转对象
9.1.2 角速度
9.1.3 原点和质心
9.2 三维环境中的方向
9.2.1 欧拉角
9.2.2 轴-角
9.2.3 旋转矩阵
9.2.4 四元数
9.3 角速度和加速度
9.3.1 点速度
9.3.2 角加速度
9.4 实现方案
9.4.1 矩阵类
9.4.2 矩阵乘法
9.4.3 逆矩阵和转置矩阵
9.4.4 将四元数转换为矩阵
9.4.5 转换向量
9.4.6 调整矩阵中的基向量
9.4.7 四元数类
9.4.8 四元数的标准化操作
9.4.9 四元数组合操作
9.4.10 旋转
9.4.11 基于角速度的更新操作
9.5 本章小结
第10章 刚体运算定律
10.1 刚体
10.2 基于旋转的牛顿第二定律
10.3 转矩
10.3.1 转动惯量
10.3.2 世界坐标系中的惯性张量
10.4 基于旋转的d'alembert定理
10.5 刚体积分运算
10.6 本章小结
第11章 刚体物理引擎
11.1 引擎概述
11.2 物理引擎应用
11.2.1 飞行模拟器
11.2.2 帆船模拟器
11.3 本章小结
第4部分 碰撞检测系统
第12章 碰撞检测
12.1 碰撞检测管线
12.2 粗略碰撞检测
12.3 包围体
12.3.1 层次结构
12.3.2 构造层次结构
12.3.3 子对象层次结构
12.4 空间数据结构
12.4.1 二分空间划分
12.4.2 八叉树和四叉树
12.4.3 网格方案
12.4.4 多分辨率图
12.5 本章小结
第13章 生成碰撞
13.1 碰撞几何体
13.1.1 图元组装
13.1.2 生成碰撞几何体
13.2 碰撞生成过程
13.2.1 碰撞数据
13.2.2 点-面碰撞
13.2.3 边-边碰撞
13.2.4 边-面碰撞
13.2.5 面-面碰撞
13.2.6 前期退出
13.3 图元碰撞算法
13.3.1 球体间的碰撞
13.3.2 球体和平面之间的碰撞
13.3.3 盒体与平面之间的碰撞
13.3.4 球体与盒体之间的碰撞
13.3.5 盒体间的碰撞
13.3.6 效率和通用多面体
13.4 本章小结
第5部分 接触型物理系统
第14章 碰撞处理方案
14.1 冲量和冲击转矩
14.1.1 冲击转矩
14.1.2 旋转碰撞
14.1.3 处理旋转碰撞
14.2 碰撞冲量
14.2.1 调整碰撞坐标系
14.2.2 基于冲量的速度变化
14.2.3 基于速度的冲量变化
14.2.4 计算期望速度变化
14.2.5 冲量计算
14.2.6 冲量应用
14.3 处理相交行为
14.3.1 方案选取
14.3.2 实现非线性投影
14.3.3 避免过度的旋转
14.4 碰撞处理过程
14.4.1 碰撞处理管线
14.4.2 预置碰撞数据
14.4.3 处理相交问题
14.4.4 处理速度
14.4.5 更新算法的替代方案
14.5 本章小结
第15章 静态接触和摩擦力
15.1 静态作用力
15.2 微碰撞
15.2.1 移除速度
15.2.2 减少复原
15.2.3 计算最新速度
15.3 摩擦力类型
15.3.1 静态摩擦力和动态摩擦力
15.3.2 各向同性摩擦力和各向异性摩擦力
15.4 摩擦力实现方案
15.4.1 基于冲量的摩擦力
15.4.2 调整速度处理算法
15.4.3 整合方案
15.5 碰撞和连续碰撞处理
15.6 本章小结
第16章 稳定性和优化问题
16.1 稳定性
16.1.1 四元数漂移
16.1.2 斜面上的相交
16.1.3 积分稳定性
16.1.4 保守碰撞检测的优点
16.1.5 调整数学精确度
16.2 优化操作
16.2.1 休眠机制
16.2.2 相交和速度误差处理
16.2.3 碰撞(接触)分组机制
16.2.4 代码优化
16.3 本章小结
第17章 整合方案
17.1 引擎综述
17.2 物理引擎应用
17.2.1 布娃娃系统
17.2.2 断裂物理学
17.2.3 爆炸物理学
17.3 引擎的局限性
17.3.1 堆砌型对象
17.3.2 反作用力摩擦力
17.3.3 关节组装
17.3.4 硬质弹簧
17.4 本章小结
第6部分 扩 展 引 擎
第18章 其他物理引擎
18.1 同步碰撞处理
18.1.1 jacobian方案
18.1.2 线性互补问题
18.2 约化坐标方案
18.3 本章小结
参考文献
附录a 常见惯性能量
a.1 离散质体
a.2 连续质体
a.3 常见形状
a.3.1 长方体
a.3.2 球体
a.3.3 圆柱体
a.3.4 圆锥体
附录b 游戏中常见的摩擦系数
附录c 其他程序设计语言
c.1 c语言
c.2 java语言
c.3 公共语言运行库(.net)
c.4 lua语言
附录d 数学背景知识
d.1 向量
d.2 四元数
d.3 矩阵
d.4 积分运算
d.5 物理运算
d.6 其他公式
无