Lecture22 Animation(cont.
- 一、单个粒子模拟
- Ordinary Differential Equation ODE 常微分方程
- ODE求解方法——欧拉方法
- 解决不稳定
- 中点法
- 改进欧拉方法
- 自适应步长
- 隐式欧拉方法
- 二、流体模拟
- 基于位置的方法
- 物质点方法
一、单个粒子模拟
- 想模拟粒子在场中的运动
Ordinary Differential Equation ODE 常微分方程
- 将粒子的位置与时间之间的关系表达为一个方程
ODE求解方法——欧拉方法
- 通过迭代的方法近似粒子的运动轨迹
- 步骤
- 初始化: 设置初始位置 x0 和时间步长 Δt。
- 迭代:
- 计算当前时间步长 t 下粒子的速度 v ( x ( t ) , t ) v(x(t), t) v(x(t),t)
- 根据速度和步长更新粒子的位置: x ( t + Δ t ) = x ( t ) + Δ t ∗ v ( x ( t ) , t ) x(t + Δt) = x(t) + Δt * v(x(t), t) x(t+Δt)=x(t)+Δt∗v(x(t),t)
- 更新时间: t = t + Δ t t = t + Δt t=t+Δt
- 重复步骤 2,直到达到所需的时间步数
- 问题
- 控制好步长 —— 误差随着时间步长的增加而增加
- 稳定性差:当时间步长较大时,容易导致模拟结果发散
解决不稳定
中点法
- 在每个时间步长内,计算当前时间步长和下一时间步长中点的速度,并用该速度更新位置
改进欧拉方法
- 计算当前时间步长和下一时间步长速度的平均值,并用该平均值更新位置
- 二次模型比一次更准确
自适应步长
- 根据误差估计来调整时间步长
- 把时间分成两部分,若结果相近符合,则不用继续分 Δ t Δt Δt,反之,继续分时间步长
隐式欧拉方法
- 使用下一时间步长的速度来更新位置
二、流体模拟
基于位置的方法
- 基本思想:将流体视为由大量不可压缩的刚性球体组成,并通过调整这些球体的位置来模拟流体的流动
- 核心假设:流体的密度保持恒定,任何密度变化都会通过调整球体位置来“纠正”
- 实现方法:计算每个粒子的密度梯度,并通过梯度下降法更新粒子的位置
- 问题:不是基于物理的,会耗散能量(误差),难以模拟复杂现象
物质点方法
- 基本思想: 结合拉格朗日(质点法)和欧拉(网格法)两种视角,使用粒子来携带材料属性,并使用网格来进行数值积分
- 实现方法:
- 拉格朗日视角:使用粒子来表示流体,每个粒子携带密度、速度等属性
- 欧拉视角:使用网格来表示流体的状态,并在网格上求解流体的运动方程
- 交互:粒子将属性传递给网格,网格进行更新,然后插值回粒子