基于物理的建模与动画
第1部分 基础
第1章 导论
1.1 什么是基于物理的动画
1.2 动态模拟与离散事件模拟
1.3 数学记法约定
1.4 工具包及商用软件
1.5 本书结构
第2章 模拟的基础
2.1 模型及模拟
2.2 牛顿运动定律
查看完整
第1章 导论
1.1 什么是基于物理的动画
1.2 动态模拟与离散事件模拟
1.3 数学记法约定
1.4 工具包及商用软件
1.5 本书结构
第2章 模拟的基础
2.1 模型及模拟
2.2 牛顿运动定律
查看完整
Donald H. House是美国南卡罗来纳州克莱姆森大学计算机学院视觉计算系的教授和主席。他在马萨诸塞大学阿姆赫斯特分校获得计算机和信息科学博士学位,在伦斯勒大学获得电气工程硕士学位,以及他在联合大学的数学学士学位。他早期的研究领域是布料模拟和基于物理的动画。最近,他的重点是在不确定性下视觉化的认知和知觉优化。John C.Keyser是美国德克萨斯州A&M大学计算机科学与工程系的教授和副系主任,他在北卡罗莱纳大学获得计算机科学博士学位,在阿比林获得应用数学、工程物理和计算机科学学士学位基督教大学。他的研究跨越了计算机图形学的一系列主题,特别强调基于物理的模拟和实体建模。
叶劲峰(Milo Yip),从小自习编程,并爱好计算机图形学。上中学时兼职开发策略RPG《王子传奇》,该游戏在1995年于台湾发行。其后他获取了香港大学认知科学学士、香港中文大学系统工程及工程管理哲学硕士。毕业后在香港理工大学设计学院从事游戏引擎…
查看完整
叶劲峰(Milo Yip),从小自习编程,并爱好计算机图形学。上中学时兼职开发策略RPG《王子传奇》,该游戏在1995年于台湾发行。其后他获取了香港大学认知科学学士、香港中文大学系统工程及工程管理哲学硕士。毕业后在香港理工大学设计学院从事游戏引擎…
查看完整
本书覆盖基于物理的建模和动画的核心内容,旨在成为这一领域研究、从业者及相关专业师生必备参考书。本书内容扎实,可帮助读者直接用代码实现动画项目,或使用现成物理模拟套件编写代码,抑或是掌握流行动画软件中的物理引擎等专业工具。本书知识丰富,深入剖析各种相关软件背后背后的运行机理,也不依赖任何编程语言或图形 API。
第1部分 基础
第1章 导论
1.1 什么是基于物理的动画
1.2 动态模拟与离散事件模拟
1.3 数学记法约定
1.4 工具包及商用软件
1.5 本书结构
第2章 模拟的基础
2.1 模型及模拟
2.2 牛顿运动定律
2.3 在一维中落下一个球
2.4 运动的微分方程
2.5 基本的模拟循环
2.6 数值近似方法
2.7 空气中的三维运动
2.7.1 跟踪三个维度
2.7.2 空气阻力
2.7.3 风
2.8 总结
第3章 追踪弹跳球
3.1 与平面碰撞
3.1.1 碰撞检测
3.1.2 碰撞测定
3.1.3 更改模拟循环
3.2 碰撞响应
3.2.1 弹性
3.2.2 摩擦力
3.2.3 把所有结合起来
3.3 实现弹跳球
3.3.1 数值精度
3.3.2 静止条件
3.4 多边形的几何学
3.5 点与多边形的碰撞
3.6 特例:三角形相交
3.7 总结
第2部分 基于粒子的模型
第4章 粒子系统
4.1 什么是粒子系统
4.2 随机数、随机矢量及随机点
4.3 粒子生成器
4.4 粒子模拟
4.4.1 运算的编排
4.4.2 撤销粒子
4.4.3 碰撞
4.4.4 几何
4.4.5 高效的随机数
4.5 粒子渲染
4.5.1 点及划痕
4.5.2 精灵
4.5.3 几何图形
4.5.4 体积渲染
4.6 总结
第5章 粒子编排
5.1 加速度操作
5.1.1 引力吸引器
5.1.2 随机加速度
5.1.3 拖拽与反拖拽
5.1.4 速度限制器
5.2 速度操作
5.2.1 仿射速度操作
5.2.2 旋涡
5.3 避障
5.3.1 势场
5.3.2 操控
5.4 总结
第6章 交互粒子系统
6.1 状态向量
6.1.1 单一粒子的状态向量
6.1.2 交互粒子的状态向量
6.1.3 实现
6.2 扩展状态的概念
6.3 空间数据结构
6.3.1 均匀空间网格
6.3.2 八叉树
6.3.3 kd树
6.4 天文模拟
6.4.1 聚簇
6.4.2 一个采用均匀空间网格的简单算法
6.4.3 一个采用八叉树的自适应算法
6.5 群集系统
6.5.1 核心算法
6.5.2 距离与视域
6.5.3 加速度的优先级
6.5.4 绕过障碍
6.5.5 转向与侧飞
6.6 总结
第7章 数值积分
7.1 级数展开与积分
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 积分的精度和稳定性
7.5.1 指数衰减和正弦振荡
7.5.2 指数衰减的积分
7.5.3 正弦振荡的积分
7.5.4 RK方法的性能
7.5.5 阻尼与稳定性
7.6 自适应时步
7.7 隐式积分
7.7.1 直接求解隐式积分
7.7.2 雅克比和线性化函数
7.7.3 求根法求解隐式积分
7.7.4 隐式公式的精度和稳定性
7.8 总结
第8章 可形变弹性网格
8.1 阻尼弹性连接件
8.1.1 阻尼弹簧的数学原理
8.2 弹性网格
8.2.1 支撑杆——一种弹性网格的三维结构元素
8.2.2 用支撑杆构造一个弹性网格
8.2.3 空气阻力与风
8.2.4 弹性网格的模拟
8.2.5 结构刚度
8.3 扭转弹簧
8.3.1 力矩
8.3.2 根据扭转弹簧计算力矩
8.3.3 根据扭转弹簧计算顶点受力
8.3.4 带有扭转弹簧的网格的模拟
8.4 选择好的参数
8.5 碰撞
8.5.1 碰撞的类型
8.5.2 碰撞确定
8.5.3 弹性物体的碰撞响应
8.6 晶格形变器
8.7 布料建模
8.8 总结
第3部分 刚体动力学与约束动力学
第9章 刚体动力学
9.1 刚体状态
9.2 刚体属性
9.2.1 质心
9.2.2 惯性张量
9.3 刚体运动
9.3.1 力矩
9.3.2 更新刚体状态
9.3.3 四元数表示法
9.4 实现
9.5 总结
第10章 刚体的碰撞与接触
10.1 刚体碰撞
10.1.1 与静态物体的无摩擦碰撞
10.1.2 两个运动物体间的无摩擦碰撞
10.2 碰撞检测
10.2.1 包围体
10.2.2 粗略碰撞检测
10.2.3 精确碰撞检测
10.3 线性互补问题
10.3.1 处理多个接触刚体
10.3.2 作为LCP的多个碰撞与静止接触
10.3.3 摩擦力转为LCP
10.4 总结
第11章 约束
11.1 罚函数
11.1.1 P(比例)控制器
11.1.2 PD(比例微分)控制器
11.1.3 PID(比例积分微分)控制器
11.2 约束动力学
11.2.1 单约束
11.2.2 多约束
11.3 约化坐标
11.3.1 广义坐标和广义速度
11.3.2 动能、功和势能
11.3.3 拉格朗日量与拉格朗日方程
11.3.4 落球的例子
11.3.5 钟摆的例子
11.3.6 线上运动的珠子的例子
11.4 总结
第12章 铰接体
12.1 铰接体的结构
12.2 铰接体的动态状态
12.3 空间代数
12.3.1 空间速度与加速度
12.3.2 空间变换
12.3.3 空间力
12.3.4 空间转置
12.3.5 空间内积
12.3.6 空间叉积
12.4 空间代数记号下速度和加速度的传递
12.5 空间孤立量
12.6 第一次循环
12.7 计算空间铰接量
12.8 计算构件加速度
12.9 推广到树状铰接体
12.10 总结
第4部分 流体动力学
第13章 流体动力学基础
13.1 拉格朗日模拟与欧拉模拟
13.2 流体模拟的数学背景知识
13.2.1 标量场和矢量场
13.2.2 梯度
13.2.3 散度
13.2.4 旋度
13.2.5 拉普拉斯算符
13.3 纳维–斯托克斯方程
13.4 势流场
13.5 总结
第14章 光滑粒子流体动力学
14.1 空间采样和重构
14.2 粒子加速度计算
14.2.1 压强梯度
14.2.2 扩散
14.2.3 外部加速度和碰撞
14.3 核函数
14.4 流体表面和表面张力
14.5 模拟算法
14.6 总结
第15章 有限差分算法
15.1 有限差分
15.1.1 数值微分
15.1.2 微分算符
15.1.3 采样和插值
15.1.4 CFL条件
15.2 半拉格朗日法
15.2.1 w1增加外部加速度
15.2.2 w2用回溯法实现拉格朗日对流
15.2.3 w3速度扩散的隐式积分
15.2.4 w4得到一个无散速度场
15.2.5 烟模拟计算的结构
15.2.6 水模拟计算的结构
15.3 FLIP
15.4 总结
附录A 矢量
附录B 矩阵代数
附录C 仿射变换
附录D 坐标系统
附录E 四元数
附录F 重心坐标
索引
^ 收 起
第1章 导论
1.1 什么是基于物理的动画
1.2 动态模拟与离散事件模拟
1.3 数学记法约定
1.4 工具包及商用软件
1.5 本书结构
第2章 模拟的基础
2.1 模型及模拟
2.2 牛顿运动定律
2.3 在一维中落下一个球
2.4 运动的微分方程
2.5 基本的模拟循环
2.6 数值近似方法
2.7 空气中的三维运动
2.7.1 跟踪三个维度
2.7.2 空气阻力
2.7.3 风
2.8 总结
第3章 追踪弹跳球
3.1 与平面碰撞
3.1.1 碰撞检测
3.1.2 碰撞测定
3.1.3 更改模拟循环
3.2 碰撞响应
3.2.1 弹性
3.2.2 摩擦力
3.2.3 把所有结合起来
3.3 实现弹跳球
3.3.1 数值精度
3.3.2 静止条件
3.4 多边形的几何学
3.5 点与多边形的碰撞
3.6 特例:三角形相交
3.7 总结
第2部分 基于粒子的模型
第4章 粒子系统
4.1 什么是粒子系统
4.2 随机数、随机矢量及随机点
4.3 粒子生成器
4.4 粒子模拟
4.4.1 运算的编排
4.4.2 撤销粒子
4.4.3 碰撞
4.4.4 几何
4.4.5 高效的随机数
4.5 粒子渲染
4.5.1 点及划痕
4.5.2 精灵
4.5.3 几何图形
4.5.4 体积渲染
4.6 总结
第5章 粒子编排
5.1 加速度操作
5.1.1 引力吸引器
5.1.2 随机加速度
5.1.3 拖拽与反拖拽
5.1.4 速度限制器
5.2 速度操作
5.2.1 仿射速度操作
5.2.2 旋涡
5.3 避障
5.3.1 势场
5.3.2 操控
5.4 总结
第6章 交互粒子系统
6.1 状态向量
6.1.1 单一粒子的状态向量
6.1.2 交互粒子的状态向量
6.1.3 实现
6.2 扩展状态的概念
6.3 空间数据结构
6.3.1 均匀空间网格
6.3.2 八叉树
6.3.3 kd树
6.4 天文模拟
6.4.1 聚簇
6.4.2 一个采用均匀空间网格的简单算法
6.4.3 一个采用八叉树的自适应算法
6.5 群集系统
6.5.1 核心算法
6.5.2 距离与视域
6.5.3 加速度的优先级
6.5.4 绕过障碍
6.5.5 转向与侧飞
6.6 总结
第7章 数值积分
7.1 级数展开与积分
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 积分的精度和稳定性
7.5.1 指数衰减和正弦振荡
7.5.2 指数衰减的积分
7.5.3 正弦振荡的积分
7.5.4 RK方法的性能
7.5.5 阻尼与稳定性
7.6 自适应时步
7.7 隐式积分
7.7.1 直接求解隐式积分
7.7.2 雅克比和线性化函数
7.7.3 求根法求解隐式积分
7.7.4 隐式公式的精度和稳定性
7.8 总结
第8章 可形变弹性网格
8.1 阻尼弹性连接件
8.1.1 阻尼弹簧的数学原理
8.2 弹性网格
8.2.1 支撑杆——一种弹性网格的三维结构元素
8.2.2 用支撑杆构造一个弹性网格
8.2.3 空气阻力与风
8.2.4 弹性网格的模拟
8.2.5 结构刚度
8.3 扭转弹簧
8.3.1 力矩
8.3.2 根据扭转弹簧计算力矩
8.3.3 根据扭转弹簧计算顶点受力
8.3.4 带有扭转弹簧的网格的模拟
8.4 选择好的参数
8.5 碰撞
8.5.1 碰撞的类型
8.5.2 碰撞确定
8.5.3 弹性物体的碰撞响应
8.6 晶格形变器
8.7 布料建模
8.8 总结
第3部分 刚体动力学与约束动力学
第9章 刚体动力学
9.1 刚体状态
9.2 刚体属性
9.2.1 质心
9.2.2 惯性张量
9.3 刚体运动
9.3.1 力矩
9.3.2 更新刚体状态
9.3.3 四元数表示法
9.4 实现
9.5 总结
第10章 刚体的碰撞与接触
10.1 刚体碰撞
10.1.1 与静态物体的无摩擦碰撞
10.1.2 两个运动物体间的无摩擦碰撞
10.2 碰撞检测
10.2.1 包围体
10.2.2 粗略碰撞检测
10.2.3 精确碰撞检测
10.3 线性互补问题
10.3.1 处理多个接触刚体
10.3.2 作为LCP的多个碰撞与静止接触
10.3.3 摩擦力转为LCP
10.4 总结
第11章 约束
11.1 罚函数
11.1.1 P(比例)控制器
11.1.2 PD(比例微分)控制器
11.1.3 PID(比例积分微分)控制器
11.2 约束动力学
11.2.1 单约束
11.2.2 多约束
11.3 约化坐标
11.3.1 广义坐标和广义速度
11.3.2 动能、功和势能
11.3.3 拉格朗日量与拉格朗日方程
11.3.4 落球的例子
11.3.5 钟摆的例子
11.3.6 线上运动的珠子的例子
11.4 总结
第12章 铰接体
12.1 铰接体的结构
12.2 铰接体的动态状态
12.3 空间代数
12.3.1 空间速度与加速度
12.3.2 空间变换
12.3.3 空间力
12.3.4 空间转置
12.3.5 空间内积
12.3.6 空间叉积
12.4 空间代数记号下速度和加速度的传递
12.5 空间孤立量
12.6 第一次循环
12.7 计算空间铰接量
12.8 计算构件加速度
12.9 推广到树状铰接体
12.10 总结
第4部分 流体动力学
第13章 流体动力学基础
13.1 拉格朗日模拟与欧拉模拟
13.2 流体模拟的数学背景知识
13.2.1 标量场和矢量场
13.2.2 梯度
13.2.3 散度
13.2.4 旋度
13.2.5 拉普拉斯算符
13.3 纳维–斯托克斯方程
13.4 势流场
13.5 总结
第14章 光滑粒子流体动力学
14.1 空间采样和重构
14.2 粒子加速度计算
14.2.1 压强梯度
14.2.2 扩散
14.2.3 外部加速度和碰撞
14.3 核函数
14.4 流体表面和表面张力
14.5 模拟算法
14.6 总结
第15章 有限差分算法
15.1 有限差分
15.1.1 数值微分
15.1.2 微分算符
15.1.3 采样和插值
15.1.4 CFL条件
15.2 半拉格朗日法
15.2.1 w1增加外部加速度
15.2.2 w2用回溯法实现拉格朗日对流
15.2.3 w3速度扩散的隐式积分
15.2.4 w4得到一个无散速度场
15.2.5 烟模拟计算的结构
15.2.6 水模拟计算的结构
15.3 FLIP
15.4 总结
附录A 矢量
附录B 矩阵代数
附录C 仿射变换
附录D 坐标系统
附录E 四元数
附录F 重心坐标
索引
^ 收 起
Donald H. House是美国南卡罗来纳州克莱姆森大学计算机学院视觉计算系的教授和主席。他在马萨诸塞大学阿姆赫斯特分校获得计算机和信息科学博士学位,在伦斯勒大学获得电气工程硕士学位,以及他在联合大学的数学学士学位。他早期的研究领域是布料模拟和基于物理的动画。最近,他的重点是在不确定性下视觉化的认知和知觉优化。John C.Keyser是美国德克萨斯州A&M大学计算机科学与工程系的教授和副系主任,他在北卡罗莱纳大学获得计算机科学博士学位,在阿比林获得应用数学、工程物理和计算机科学学士学位基督教大学。他的研究跨越了计算机图形学的一系列主题,特别强调基于物理的模拟和实体建模。
叶劲峰(Milo Yip),从小自习编程,并爱好计算机图形学。上中学时兼职开发策略RPG《王子传奇》,该游戏在1995年于台湾发行。其后他获取了香港大学认知科学学士、香港中文大学系统工程及工程管理哲学硕士。毕业后在香港理工大学设计学院从事游戏引擎及相关技术的研发,职至项目主任。除发表学术文章外,也曾合著《DirectX9游戏编程实务》。2008年往上海育碧担任引擎工程师开发《美食从天而降(Cloudy with a Chance of Meatballs)》Xbox360/PS3/Wii/PC,2009年起于麻辣马开发《爱丽丝:疯狂回归(Alice: Madness Returns)》Xbox360/PS3/PC,2011年加入腾讯互动娱乐引擎技术中心担任专家工程师,所研发的技术已用于《斗战神》、《天涯明月刀》、《众神争霸》等项目中。
^ 收 起
叶劲峰(Milo Yip),从小自习编程,并爱好计算机图形学。上中学时兼职开发策略RPG《王子传奇》,该游戏在1995年于台湾发行。其后他获取了香港大学认知科学学士、香港中文大学系统工程及工程管理哲学硕士。毕业后在香港理工大学设计学院从事游戏引擎及相关技术的研发,职至项目主任。除发表学术文章外,也曾合著《DirectX9游戏编程实务》。2008年往上海育碧担任引擎工程师开发《美食从天而降(Cloudy with a Chance of Meatballs)》Xbox360/PS3/Wii/PC,2009年起于麻辣马开发《爱丽丝:疯狂回归(Alice: Madness Returns)》Xbox360/PS3/PC,2011年加入腾讯互动娱乐引擎技术中心担任专家工程师,所研发的技术已用于《斗战神》、《天涯明月刀》、《众神争霸》等项目中。
^ 收 起
本书覆盖基于物理的建模和动画的核心内容,旨在成为这一领域研究、从业者及相关专业师生必备参考书。本书内容扎实,可帮助读者直接用代码实现动画项目,或使用现成物理模拟套件编写代码,抑或是掌握流行动画软件中的物理引擎等专业工具。本书知识丰富,深入剖析各种相关软件背后背后的运行机理,也不依赖任何编程语言或图形 API。
比价列表