流体控制总结笔记

流体控制总结

流体控制主要方面

  1. 生成控制粒子

    为了得到用于流体控制的控制粒子采用已有的体素化方法对网格模型进行采样

    对被采样网格模型的细节保留较好,同时算法效率较高。但是,对于流体模型形变问题,不仅需要采样出控制粒子需要考虑源控制粒子和目标控制粒子的对应关系

    创建控制粒子的最简单方法是使用给定的Foster N, Metaxas D. Controlling fluid animation[C]. computer graphics international, 1997: 178-188. & Foster N, Fedkiw R. Practical animation of liquids[C]. international conference on computer graphics and interactive techniques, 2001: 23-30.中所述的预先计算功能。为了执行具有给定目标形状的流体模拟,首先要对初始三角形网格进行定期采样。然后,如Ju T, Schaefer S, Warren J, et al. Mean value coordinates for closed triangular meshes[C]. international conference on computer graphics and interactive techniques, 2005, 24(3): 561-566.中所述,使用平均值网格坐标为动画序列的每个网格移动控制粒子。

    控制粒子也可以从其他可能更粗略的流体模拟中生成。在LBM模拟中,可以在流体速度场中跟踪无质量的示踪粒子。然后将其位置用作第二次模拟遍历中的控制粒子。这样的控制仿真通常可能非常粗糙,甚至可能实时运行以将即时反馈提供给动画师。同样可以控制它产生期望的结果。

    通过流体模拟生成的控制粒子集可用于轻松控制大量流体。

  2. 控制力

    在基于控制粒子的流体控制方法中,控制能量是指由控制粒子对流体粒子做产生的作用力的集合,流体粒子由于控制能量的作用才能形成特性的目标形状。

    粗控制能量Thurey N, Keiser R, Pauly M, et al. Detail-preserving fluid control[C]. symposium on computer animation, 2006: 7-12.

    粗控制能量用来吸引控制粒子构成目标形状;控制力是指控制粒子对流体粒子粗糙的吸引力和速度修正力,用控制粒子的控制力吸引其控 制半径hh 内的流体粒子向其流动,达到流体的粗控制效果。

    fa(j)=waiaipipjpipjW(xij,H)f_{a}(j)=w_{a} \sum_{i} a_{i} \frac{p_{i}-p_{j}}{\left\|p_{i}-p_{j}\right\|} W\left(x_{i j}, H\right)

    fv(j)=wvi(vivj)W(xij,H)f_{v}(j)=w_{v} \sum_{i}\left(v_{i}-v_{j}\right) W\left(x_{i j}, H\right)

    弹簧约束能量Zhang S, Yang X, Wu Z, et al. Position-based fluid control[J]. interactive 3d graphics and games, 2015: 61-68.

    弹簧约束能量用来修正控制粒子运动过快时流体粒子脱离控制问题

    流体粒子和控制粒子的距离作为关键参数,即找到距离当前流体粒子最近的控制粒子,当流体粒子正在远离控制粒子时,控制粒子会对其有一个拉力,使得回到其控制范围内。当流体粒子距离控制粒子太近时,控制粒子会对其有一个推力。弹簧约束公式如下:

    f(d)=11+eγδdf(d)=\frac{1}{1+e^{\gamma-\delta d}}

    式中:d 为流体粒子到控制粒子的距离,γ\gammaδ\delta为调整弹簧力的可变参数,则弹簧约束能量

    Es(j)=ψf(rjqj)rjqjrjqjE_{s}(j)=\psi f\left(\left|r_{j}-q_{j}\right|\right) \frac{r_{j}-q_{j}}{\left|r_{j}-q_{j}\right|}

    ψ\psi被用来调整弹簧约束的强度, rjr_j 表示 第jj个流体粒子的位置, qjq_j表示与rjr_j距离最近的控制粒子的位置

    速度约束能量Cornelis J, Ihmsen M, Peer A, et al. Liquid boundaries for implicit incompressible SPH[J]. Computers & Graphics, 2015: 72-78.

    速度约束能量用来约束被控制粒子的粘性,调整流体模型表面僵硬度。在某些场景中,用户需要实现流体在不同僵硬度下的运动特效。所以,需要引入速度约束来约束流体的流动性。Liquid boundaries for implicit incompressible SPH中提到的速度约束可以使流体粒子在向目标形状运动时联系更紧密。首先,针对每一个流体粒子,利用与它临近的所有控制粒子进行插值得到它的速度约束,用Δvj\Delta v_j 表示第jj个流体粒子所受的速度约束:

    Δvj=iviW(xij,h)iW(xij,h)\Delta v_{j}=\frac{\sum_{i} v_{i} W\left(x_{i j}, h\right)}{\sum_{i} W\left(x_{i j}, h\right)}

    viv_i 表示第 ii个控制粒子的速度,vjv _j 表示流体粒子的速度。速度约束的能量为:

    Ev(j)=η(Δvjvj)E_v(j)=\eta (\Delta v_j -v_j)

    η\eta是比例因子,用来控制速度约束的强度

细节保持控制

另外有基于目标驱动的控制

Fattal R, Lischinski D. Target-driven smoke animation[M]//ACM SIGGRAPH 2004 Papers. 2004: 441-448.

Madill J, Mould D. Target particle control of smoke simulation[M]//Proceedings of Graphics Interface 2013. 2013: 125-132.

对于流体控制,由于固有的数值耗散产生的湍流损失会导致流体细节不够真实

Thurey N, Keiser R, Pauly M, et al. Detail-preserving fluid control[C]. symposium on computer animation, 2006: 7-12.Rasmussen N, Enright D, Nguyen D, et al. Directable photorealistic liquids[C]//Proceedings of the 2004 ACM SIGGRAPH/Eurographics symposium on Computer animation. 2004: 193-202.提出的基于控制粒子的控制方法,通过控制粒子来调整液体的流速,粘度和其它性能,以达到控制流体的目的。 但该方法无法实现流体在形状控制过程中动态效果,并且填充效率不够高。此外,这种基于控制粒子的控制方法缺少目标驱动控制,在目标形状差异较大时不能有效地实现流体形状的平滑形变。

Liquid boundaries for implicit incompressible SPHRen B, Li C F, Lin M C, et al. Flow field modulation[J]. IEEE transactions on visualization and computer graphics, 2013, 19(10): 1708-1719.在流体细节保持上做了有效的拓展,但是这些方法在流体控制上跟 Thürey 方法类似,缺乏特定目标形状的控制。