02流体模拟(sph)

247 阅读2分钟

基本原理

这里的流体模拟主要是使用光滑粒子法(SPH),模拟粒子的运动。通过求解纳维-斯托克斯方程,计算出每一个粒子的速度,然后再一次计算出位置的模拟方法。(【物理引擎基础】一个实时流体模拟和渲染的实现过程 - 知乎 (zhihu.com))

SPH

基本理论

sph只是通过空间划分,平均粒子运动的方法,和模拟实际上没有关系,关于sph的分析,网上有很多,这里只给出结果:

图片8.png

在一般情况下,我们只需要计算密度,这也是最特殊的:

图片9.png

其中W是核函数,可以直接理解为一个权重量,下面会详细介绍:

核函数

核函数就是权重函数,其优点是只需要对于核函数求导即可:

图片10.png

本文选用三次样条核函数:

图片11.png

其对应的梯度为:

图片12.png

纳维-斯托克斯方程(Navier-Stokes Eq. )

标准的NS方程极为复杂,一般情况下只讨论不可压缩流体的NS方程,如下:

图片13.png

采用牛顿第二运动定律,计算加速度:

图片15.png

在计算加速度的过程,可以发现需要速度的速度的二阶梯度,压强的一阶梯度,和当前的密度,并且压强的计算也依赖于密度,下面分别计算这些量:
密度:

图片16.png

压力:

图片17.png

粘滞力:

图片18.png

在这个公式中涉及到了二阶梯度,在三次样条核函数中还可以利用一阶梯度近似:

图片19.png

压强的加速度:

图片20.png

欧拉积分更新:

图片21.png

空间哈希