Position Based Fluids
我们使用粒子法进行流体模拟时,一个很重要的因素就是如何保持流体的非压缩性。非压缩性是指,随着流体的流动,密度在空间和时间上不发生变化,比如像水这样的流体,另外,与音速相比流速足够小的空气也可以当成非压缩性流体来考虑 (接近音速的时候,空气会发生压缩,音速飞机产生的冲击波即音爆便是由空气压缩产生的)。为了保持非压缩性,学者们提出了各种各样的方法,如MPS,WCSPH,PCISPH,IISPH等, 这之中,能非常高速且稳定计算的方法便是我们这次要讲的基于位置流体法(Position Based Fluids, 以下简称PBF)[1]。
PBF是基于位置法(Position-based method)[2] 中的一种。Position-based法与以前的基于力学方法不同,是根据物体位置(空间坐标值)间的制约条件直接更新物体(传统的基于力学法则是根据支配方程,按照加速度->速度->位置的顺序逐步变更),因此不会产生在传统力学方法中由逐步积分所产生的误差积累。但是,由于这种方法中,顶点及粒子的位置关系所遵循的制约条件是属于几何学的范畴,严格意义上讲不属于物理模拟。
Position-based法介绍
这里先对基本的position-based法进行说明。首先,对于一个产生位移的点,其坐标为,是其制约条件。 正常状态下, 当粒子发生一个微小量的移动后,也满足这个条件,即 。 把这个式子泰勒展开,即
忽略掉2次以上的项,我们将得到一个关于的方程。
可以由制约条件的定义计算。现在,把当作粒子的中心坐标,在3次元空间粒子数为的条件下,需求得未知数的个数为