0%

【Games 101】Lec 22:动画(续)

Lecture 22:Animation (cont.)

1 单个粒子模拟(Single Particle Simulation)

1.1 单个粒子的运动

首先研究一个粒子的运动然后泛化到大多数粒子。

我们线认为粒子的运动由速度场(velocity vector field)决定,这个速度场就是一个位置和时间的函数:v(x,t)

知道粒子的位置和时间,就知道它的速度;(这个函数我们现在是已知的)

那么,计算粒子的位置(随时间变化)需要解一个一阶的常微分方程(不存在对其他变量的微分或导数First-order意味着只存在一阶导数):

1.2 欧拉方法(Euler’s Method)

1.2.1 概述

欧拉方法是一种简单的迭代方法经常被使用不准确、大多数都不稳定

可以使用欧拉方法对给定初始位置和速度场的点求解经过时间t后所处的位置。

1.2.2 误差

使用数值计算的方法积分,误差会累计,最后的Euler积分结果会很差。

1.2.3 欧拉方法的不稳定性(Instability of the Euler Method)

如下图,粒子的轨迹始终不能沿着圆形或指定的轨迹。

即欧拉方法有两个关键的问题:

  • 误差随着时间步长 Δt 的增加而增加。
  • 不稳定性是一个普遍且严重的问题,它能造成模拟 diverge。

1.2.4 Errors 和 Instability

用有限差分数值积分法求解
导致两个问题:
Errors

  • 每个时间步的误差累积。精度随着模拟的进行而降低
  • 在图形应用中,准确性可能不是关键

Instability

  • 错误可以复合,导致模拟甚至发散当底层系统没有
  • 缺乏稳定性是模拟中的一个基本问题不容忽视

1.3 克服不稳定性的方法

1.3.1 概述

  • 中点法/修正欧拉法
    • 起点和终点的平均速度
  • 自适应步长
    • 递归地比较一步和两个半步,直到可以接受错误
  • 隐式方法
    • 使用下一个时间步骤的速度(硬)
  • 基于位置/ Verlet的集成
    • 在时间步长后约束粒子的位置和速度

1.3.2 中点法(Midpoint Method)

  • 使用欧拉方法计算,点到达A( a )。
  • 使用欧拉方法计算上一步起始点与A点的导数( b )。
  • 使用中点的导数来重新更新位置( c )。

中点法比欧拉方法多了一个二次的项。

1.3.3 自适应步长法(Adaptive Step Size)

  • 使用步长为T计算一个欧拉步骤来获得 X(T)
  • 计算两个欧拉步骤,步长为T/2,获得 X(T/2)
  • 计算error ∣∣ X(T) − X(T/2) ∣∣
  • If ( error > threshold ) 减少步长并重复上面的步骤。

Adaptive 是基于 error 估计选择步长的方法,非常实用,但可能得到的步长会很小。

1.3.3 隐式欧拉方法

也被称作后向方法,使用下一时间的导数来计算当前的步骤。

定义与量化 “stability” (稳定性)的方法

  • 使用局部截断误差(每个Δ \DeltaΔ的误差)/ 总截断累积误差(整体累加后的误差)来研究稳定性。
  • 研究数的大小无意义,有意义的事研究它们的阶。
  • 隐式欧拉方法的阶数为1,意味着局部截断误差为 O(h^2) 且全局阶段误差为 O(h)(h就是步长,定义为 Δt)。
  • O(h)的理解:如果将 h 减半,预期误差也会减半。

1.3.4 Runge-Kutta Families

Runge-Kutta方法是一系列用于求解 ODE 的高级方法。

特点

  • 擅长处理非线性问题。
  • 它的四阶版是使用最广泛的,又名 RK4。

h就是步长,也就是 Δt

1.3.5 Position-Based / Verlet Integration

这是一种不基于物理的方法,通过调整物体的位置使物体满足某种性质。

思想:

  • 在修改欧拉前步(forward-step)之后,约束粒子的位置以防止divergent、不稳定的现象。
  • 使用约束位置计算速度。
  • 这两种思想都会耗散能量,使其具有稳定性。

特点:

  • 快速又简单。
  • 不是基于物理模拟的,不满足能量守恒。

2 刚体模拟(Rigid Body Simulation)

刚体模拟与模拟单个粒子相似,只需额外考虑一些属性(角度,角速度)

3 流体模拟(Fluid Simulation)

3.1 基于位置的简单流体模拟方法

关键思想

  • 认为水是由刚体小球组成的。
  • 认为水是不可压缩的。
  • 只要某处的密度海绵,就需要通过改变粒子的位置来“纠正”。
  • 需要知道任何位置的密度的梯度。
  • 使用梯度下降法来进行更新。

3.2 质点法和网络法(Eulerian vs. Lagrangian)

3.3 Material Point Method (MPM)

MPM 是一种混合的(Hybrid),结合 Eulerian 和 Lagrangian 的方法。

  • Lagrangian:认为粒子带有材质属性。
  • Eulerian:使用网格来做数值积分。
  • lnteraction:粒子将属性传递给网格,网格执行更新,然后插值回粒子。

参考

图形学笔记(二十)粒子、刚体、流体的模拟—— 欧拉方法、Errors 和 Instability、中点法、自适应步长、隐式欧拉方法、Runge-Kutta方法、刚体与流体模拟(质点法、网格法、MPM)_隐式mpm-CSDN博客

结束,下面把作业做一做,然后打算做个玩具渲染器(当作毕设了…)

欢迎关注我的其它发布渠道