Page 276 - 《软件学报》2020年第10期
P. 276

3252                                  Journal of Software  软件学报 Vol.31, No.10, October 2020

         高精度、大规模的流体动画场景上.更进一步地,在游戏和虚拟现实等实时交互应用不断深入和推广的需求这
         一情况下,众多用户对流体动画特效提出了前所未有的实时性要求,这在允许降低精度和质量要求的前提条件
         下,在流体动画模拟算法的规模和速度上提出了更高的要求.而由于高质量流体动画模拟过程耗费了大量时间,
         一旦模拟效果不佳,用户可能需要在调整参数后重新计算,而原有的计算结果通常不能再用,这样也会浪费大量
         的计算资源以及可利用的数据资源.
             在传统的两大主流流体模拟算法,即拉格朗日粒子法与欧拉网格法中,拉格朗日粒子法将流体视为大量运
         动的流体微团,通过描述每个微团的具体位置、温度等变量随着时间的变化情况来描述流体运动.拉格朗日法
         的计算速度快,但存在难以保持流体的不可压缩性和难以进行液体表面重构与渲染等缺点,其主要代表为
                                           [2]
                                                                       [3]
         Muller 等人引入到流体动画中的 SPH 方法 .而欧拉网格法最早由 Foster 等人 引入流体动画领域,由 Stam 提
                              [4]
                                                                          [5]
         出采用半拉格朗日对流法 ,建立了无条件稳定的经典模拟框架,并由 Fedkiw 等人 加以完善和发展.该类方法
         在空间均匀分布观测点网格,通过描述每个时刻流体变量在这些观测点上的值的变化来描述流体的运动.拉格
         朗日方法和欧拉方法求解的是 Navier-Stokes 方程的不同形态,而欧拉法相对于拉格朗日粒子法可更方便地进
         行数值分析和探索,本文将侧重于欧拉网格方法的研究和总结.
             相较于传统的物理模拟方法,基于数据驱动的算法也在各个领域产生了巨大影响.随着大数据技术与机器
         学习众多方法的快速发展,数据驱动方法已在各个领域中广泛应用.特别是在物理建模的相关领域内,已经产生
         了广泛的使用场景,例如在三维物理模型转化变形                  [6,7] 应用中、三维模型重建及表面重建         [8,9] 应用中、几何材料
         设计  [10,11] 应用中等.而在流体动画模拟领域内,基于数据驱动的众多算法也产生了广泛应用(第 2 节将详细加以
         介绍).多数基于数据驱动的流体模拟算法主要的核心目标为加速流体模拟过程,利用已有的流体数据,大幅提
         升流体模拟速度,快速增加流体细节.尤其是在深度学习技术的驱动下,流体模拟的计算效率有了极大的提高,
         也是将来流体模拟算法的重要研究趋势之一.接下来,本文首先对传统的流体动画算法,特别是几类主要的流体
         动画模拟的加速算法进行相关总结和分析,随后,在此基础上,本文重点就基于数据驱动的各类模拟算法作进一
         步的讨论.

         1    基于物理的流体动画模拟方法及分析

             基于物理的流体动画模拟是基于 Navier-Stokes 方程(下文简称 N-S 方程)进行求解处理的                   [12] .由于该方程是
         一个描述粘性不可压缩流体动量守恒的非线性偏微分方程,且在数学意义上还没有精确解析解,因此目前众多
         流体动画模拟算法中采用的都是离散形式的数值解.欧拉网格法的模拟效果直接依赖于网格的精度,针对高质
         量、高精度、大规模的流体动画模拟,如何有效地加速欧拉网格法的模拟过程,一直是人们面临的挑战.
         1.1   投影步加速方法

                                                                     [4]
             在欧拉网格法的经典框架中,一般分为对流步、外力步、投影步等步骤 来计算,而欧拉网格法的主要计算
         瓶颈在于投影步泊松方程的求解.
             为了保证流体的不可压缩性(incompressibility),基于物理的流体模拟计算方法大多需要计算投影步所产生
         的泊松方程,具体公式为
                                                n+ 1  t    1
                                             u  =  u −  t Δ  ∇  p                             (1)
                                                       ρ
                n+ 1  t
         其中, u   与 u 分别表示第 n+1 帧速度场与中间速度场,一般为外力计算后的速度场中间量.通过计算公式(1),
                              n
         结合不可压缩条件,即 ∇⋅       u =  0, 二维情况下离散化得到算式:
                          t Δ  4p − ⎛  , ij  p i+  1, j  −  p i−  1, j  −  p  , ij+  1  −  p  , ij−  1 ⎞  u i+  1, j  − ⎛  u i−  1, j  u  , ij+  1  −  u  , ij−  1 ⎞
                           ⎜                         ⎟  =− ⎜       +          ⎟               (2)
                         ρ ⎝           Δ  x 2        ⎠   ⎝   2 xΔ       2 xΔ  ⎠
             从而得到关于求解压强场 p 的大型线性方程组:
                                                  Ap=d                                        (3)
         其中,系数矩阵 A 为稀疏对称正定矩阵.公式(2)为二维情况下的泊松方程(1)的离散形式,形成了一个大型稀疏线
   271   272   273   274   275   276   277   278   279   280   281