Lec22 Animation (count.) 动画仿真(计算方式)
单粒子模拟
- 已知例子前后位置
- 很好求,直接插值
- 在速度场中
-
任何一个位置,就能知道这个粒子在这个位置这个时刻的速度
-
所以可以得到一个一阶常微分方程
-
已知起始位置 x 0 x_0 x0,求时间t之后他在什么位置
-
欧拉方法
-
不断地迭代
-
每一次跨一个小时间 t 的步长
-
但是非常不准,会迅速的变得不稳定
- 理论上,分的越细,模拟应该越准
-
误差和不稳定性
- 一切用数值方法解微分方程就会有误差
- 步长可以一定程度上降低误差,但是不能避免
- 不稳定性才是最重要的问题
稳定性和改进
-
中点法(midpoint method)
-
用中点的速度来给初始位置应用欧拉方法计算延后位置
-
比欧拉方法多了一个二次的项,模拟出了一个抛物线的轨迹
-
自适应步长
- 应用一个时间的dt,得到xt,时间减半,得到xt / 2,比较两个结果,看差异大不大,大的话再继续分
-
隐式欧拉方法(反向方法)
-
通过方程组去解位置
-
可以用每一步的误差,和总误差来评估稳定性
-
Runge-Kutta Families 龙格库塔方法群
- 常用来解决常微分方程
- 用的最多的叫RK4
- 数值分析
-
非物理
- Position-Based / Verlet Integration
刚体模拟
- 不会发生形变
- 内部所有点按照同一方式移动
流体模拟
- Position-Based
-
通过模拟水体的小球的位置,来模拟水体
-
水,在任何地方都是不可压缩的,即在任何地方密度都是一样的
-
给任意时刻,任何小球的分布都能知道任何一个方向的密度,如果不一样,就需要修正过来(通过移动小球)
-
梯度下降
-
模拟思路
- 拉格朗日方法(质点法)
- 欧拉方法(如何看待一系列物体)(网格法)
- 拆分空间,考虑空间内每个格子的密度变化
- 物质点方法(Material Point Method)(MPM)