APP下载

基于物理及数据驱动的流体动画研究∗

2020-01-02

软件学报 2020年10期
关键词:流体精度网格

(上海交通大学 软件学院,上海 200240)

流体现象是在我们生活中随处可见的物理现象,而流体动画模拟在艺术与工业界也存在着广泛的应用,例如在影视特效制作、游戏模拟、灾难仿真[1]等应用场景中都有着重要的应用价值.如何逼真地模拟大规模烟雾、水流、沙流等众多自然流体现象,是计算机图形学的重要研究方向之一.但是,随着人们对电影、游戏等视觉效果要求的提高,以及工业需求及实际应用的不断深化与增长,各种传统的流体动画模拟方法面临着越来越多的挑战.

近些年来,随着业界对流体动画模拟的计算精度、模拟质量与规模的要求越来越高,所需要的计算资源也呈爆炸式增长.众多研究者也将所关注的焦点和难点集中在如何利用有限的计算资源,快速地模拟出高质量、高精度、大规模的流体动画场景上.更进一步地,在游戏和虚拟现实等实时交互应用不断深入和推广的需求这一情况下,众多用户对流体动画特效提出了前所未有的实时性要求,这在允许降低精度和质量要求的前提条件下,在流体动画模拟算法的规模和速度上提出了更高的要求.而由于高质量流体动画模拟过程耗费了大量时间,一旦模拟效果不佳,用户可能需要在调整参数后重新计算,而原有的计算结果通常不能再用,这样也会浪费大量的计算资源以及可利用的数据资源.

在传统的两大主流流体模拟算法,即拉格朗日粒子法与欧拉网格法中,拉格朗日粒子法将流体视为大量运动的流体微团,通过描述每个微团的具体位置、温度等变量随着时间的变化情况来描述流体运动.拉格朗日法的计算速度快,但存在难以保持流体的不可压缩性和难以进行液体表面重构与渲染等缺点,其主要代表为Muller 等人引入到流体动画中的SPH 方法[2].而欧拉网格法最早由Foster 等人[3]引入流体动画领域,由Stam 提出采用半拉格朗日对流法[4],建立了无条件稳定的经典模拟框架,并由Fedkiw 等人[5]加以完善和发展.该类方法在空间均匀分布观测点网格,通过描述每个时刻流体变量在这些观测点上的值的变化来描述流体的运动.拉格朗日方法和欧拉方法求解的是Navier-Stokes 方程的不同形态,而欧拉法相对于拉格朗日粒子法可更方便地进行数值分析和探索,本文将侧重于欧拉网格方法的研究和总结.

相较于传统的物理模拟方法,基于数据驱动的算法也在各个领域产生了巨大影响.随着大数据技术与机器学习众多方法的快速发展,数据驱动方法已在各个领域中广泛应用.特别是在物理建模的相关领域内,已经产生了广泛的使用场景,例如在三维物理模型转化变形[6,7]应用中、三维模型重建及表面重建[8,9]应用中、几何材料设计[10,11]应用中等.而在流体动画模拟领域内,基于数据驱动的众多算法也产生了广泛应用(第2 节将详细加以介绍).多数基于数据驱动的流体模拟算法主要的核心目标为加速流体模拟过程,利用已有的流体数据,大幅提升流体模拟速度,快速增加流体细节.尤其是在深度学习技术的驱动下,流体模拟的计算效率有了极大的提高,也是将来流体模拟算法的重要研究趋势之一.接下来,本文首先对传统的流体动画算法,特别是几类主要的流体动画模拟的加速算法进行相关总结和分析,随后,在此基础上,本文重点就基于数据驱动的各类模拟算法作进一步的讨论.

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

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

1.1 投影步加速方法

在欧拉网格法的经典框架中,一般分为对流步、外力步、投影步等步骤[4]来计算,而欧拉网格法的主要计算瓶颈在于投影步泊松方程的求解.

为了保证流体的不可压缩性(incompressibility),基于物理的流体模拟计算方法大多需要计算投影步所产生的泊松方程,具体公式为

从而得到关于求解压强场p的大型线性方程组:

其中,系数矩阵A为稀疏对称正定矩阵.公式(2)为二维情况下的泊松方程(1)的离散形式,形成了一个大型稀疏线性方程组(3).但在三维情况下,所形成的线性系统维度与网格精度为平方关系,也即:如果网格离散精度为1024×1024×1024 求解该泊松方程(1),则流体模拟所形成的线性方程组维度为10243×10243,亦即A是大小为10243×10243的矩阵.如此巨大的线性系统,需要非常有效的求解方法来处理.

投影步泊松方程(公式(3))的求解常用的预处理共轭梯度法(PCG)对于小规模计算收敛快且易于实现,但在处理大规模网格计算时,收敛速度会变慢[13].因此,很多流体模拟算法针对投影步泊松方程的求解提出了一系列的优化与改进策略.例如,McAdams 等人使用了多重网格作为共轭梯度法的预处理过程[14],场景规模较大时加速效果比较明显.同时,我们还可结合并行算法[14-16]进一步提速.而GPU 技术[17]也被用于多重网格泊松解算器中,以提高投影步的计算效率.例如:Molemaker 等人[18]结合了IOP(iterated orthogonal projection)算法与多重网格法去求解投影步方程,并利用GPU 并行将效率提高了一个数量级;Jung 等人[19]提出的基于CPU-GPU 的多重网格泊松解算器,也较为有效地提高了泊松方程的计算效率.而陈曦等人[20]利用GPU 实现了流体场景的实时模拟,并且将GPU 技术应用到带有复杂边界的三维实时流体模拟算法中[21].同样,在火焰模拟中也有GPU 并行算法[22,23]的应用.特别地,Lentine 等人[24]提出的粗网格投影方法大幅加速了泊松方程在整体流体模拟计算中的计算过程,但同时也降低了仿真精度.最近,Yang 等人[25]提出了快速迭代正交投影方法,其算法可在一定程度上减少迭代次数,使得方程计算快速收敛到所需模拟精度.而文献[26]与文献[27]均基于舒尔补(Schur complement),提出了相应的并行加速方法,较为有效地从并行层面上加速了泊松方程的求解过程(如图1 所示).

Fig.1 Parallel solver using Schur complement—Parallel Poisson solver图1 利用Schur Complement 进行并行解算——并行泊松解算

但是,不论是利用多重网格作为共轭梯度的预计算方法[14],还是利用并行加速方法[27,28],对于求解投影步中所涉及到的泊松方程的求解,也即大型稀疏线性方程组的求解,传统的方法均无法避免直接或者迭代地求解[29,30].这对于需要反复调参追求最佳流体模拟效果的动画媒体设计师来说,所需要耗费的重复计算的时间成本是巨大的.

1.2 复合网格格式方法

使用复合网格格式求解泊松方程是另一种常见的流体模拟加速方法.普通的流体仿真大多采用均匀网格或者均匀交错网格[31]的方式,例如公式(2)所依据的离散网格即为均匀网格.但无论是均匀网格还是交错网格,随着网格精度的增加,其计算耗时均呈爆炸式增长,使用复合网格则是将更多的计算资源分配在更感兴趣的区域,在保持重要细节的同时,加速计算过程.例如,Losasso 等人[32]利用八叉树数据结构创建了计算网格,在细节较多、较明显的区域使用精细网格,而在流场较稳定的区域使用稀疏网格.Feldman 等人[33]通过优化四面体网格生成来减少一定的计算量,而Klingner 等人[34]则利用动态网格(meshes)来加速泊松方程的求解过程.Irving 等人[35]通过应用非均匀自适应网格来减少计算单元个数.Chentanez 等人[36]在水体表面采用普通网格,内部使用长方体高度网格.Yu 等人[37]结合粒子法与动态四叉树技术,在大规模地形上实现了视线相关的可变尺度的江河流动效果.Zhu 等人[38]采用变步长网格,在所关注区域设置精细步长网格,其他位置设置稀疏步长网格.Da 等人[39]则主要关注流体的表面计算(如图2 所示).

但是,使用复合网格的问题在于,对于不同的流体场景鲁棒性较差,而且维护不同形状网格的过程比较复杂,同时,在计算精度上也存在不同程度的损失.

Fig.2 Fluid solvers using composite grid structures图2 流体求解的复合网格结构

1.3 降维计算方法

模型缩减法(降维)也是一类加速泊松方程的常见算法.在实现降维的过程中,浅水方程的应用较为常见.Wang 等人[40]用浅水场方程代替三维N-S 方程来模拟物体表面上的流动,而Thurey 等人[41]结合了高度场和SPH方法,实现了卷浪花的效果和浅水区域的实时模拟.而在模型缩减方法中,Treuille 等人[42]在SIGGRAPH 的论文中引入了模型缩减法,实现了大规模的实时流体模拟.其基本思想是:将原本的高维度速度场缩减到低维度的基函数子空间,然后在子空间上用缩减模型求解泊松方程.而Wicke 等人[43]则进一步通过模块化思想对场景进行分块计算,实现了场景的局部拼板式重组.文献[44]中,Kim 等人利用Cubature 方法在子空间上实现了半拉格朗日对流,在子空间上重新模拟出原数据结果.同时,人们也为流体动画的模型缩减方法提出了各种基函数,例如Legendre 多项式[45]、三角函数[46]以及能够保持无散性的拉普拉斯特征向量[47].Ando 等人[48]则提出一个新的基于集合降维技术来加速流体方程的计算过程.最近,针对模型缩减的数值耗散问题,Liu 等人[49]提出一种模型缩减的变分积分方法来改善模拟细节(如图3 所示).

Fig.3 Dimensionality reduction图3 降维计算

由于此类算法在缩减后的变量个数不依赖于空间精度,从而实现了大幅度的加速.但代价是大幅降低了模型的计算准确度,数值耗散大,在视觉效果上有很大缺失,甚至不能重现原始数据的结果,且应用场景不能变换,场景普适性仍然较差.

1.4 形态引导及细节合成方法

在流体模拟仿真的加速算法中,还有一类算法主要关注于低精度网格模拟结合细节合成算法,生成高精度结果.

1.4.1 形态引导方法

针对低精度流体模拟算法,较为典型的为流体形态引导(guiding)方法.这里,由于高-低精度网格所产生的流体动画存在着巨大的差异,即使在相同的模拟参数条件下,不同的模拟精度仍然会导出差异巨大的模拟结果.针对这一问题,Nielson 小组提出了一系列新的算法[50-52],使用低精度动画引导高精度动画,使得高精度动画结果与低精度动画的整体形态保持一致,从而分别引导烟雾和液体的高精度模拟.Huang 等人[53]随后也提出了利用预览动画的采样特征进行模拟引导的方法.Yuan 等人[54]则介绍了基于预览动画提取流体骨架特征的方法,利用这些流体骨架,驱动高精度动画模拟.文献[25]提出的基于信号处理的快速投影方法尝试着在保持流体形态的前提下进行模拟加速.Yang 等人[55]则结合路径、边界和形状引导力同时控制烟雾的形状和生成路径.Pan 等人[56]提供了一种液体模拟的直观和交互式控制方法,在液体控制上有一定的效果.Gregson 等人[57]把流体跟踪的逆问题作为一个约束流问题来处理,探讨了流体捕获、模拟和计算近似方法之间的联系.Pan 和Manocha[58]将流体控制问题作为PDE 约束的时空优化问题来考虑,并且计算局部最优控制力作为KKT 条件的稳定点,他们还提出了基于优化的运动规划算法[59],用于液体控制.杨贲[60]在其博士论文中详细阐述了形状可控的烟雾模拟.最近,Inglis 等人[61]将图像处理和机器学习领域中的原始-对偶方法引入到了流体控制当中,主要关注了流体导向和边界条件两个主要问题.

此类引导方法虽然可以使高精度模拟与低精度模拟具有相似的结果,但却丢失了高精度流体模拟的物理正确性,同时还增加了高精度模拟的开销,图4 所示为Huang 等人[53]提出的利用预览动画的采样特征进行模拟引导的方法结果,从结果图中可以看出:在物理形状和形态上,中、右(高精度-低精度引导)子图之间相差很大.

Fig.4 Shape guiding method (result from Ref.[53])图4 形态引导方法(文献[53]中的部分结果)

1.4.2 细节合成方法

在细节合成技术方面,过程化湍流方法很好地耦合了基于低精度流体动画的模拟.为了加速生成高频流体细节,人们首先利用低分辨率网格模拟,然后通过细节合成算法,达到快速的高精度流体模拟的效果.例如:Stam等人[62]提出了基于微小尺度湍流的细节增强方法;Rasmussen 等人[63]则引入了一个二、三维流体速度场组合的框架;文献[64]中,Bridson 等人将Curl 噪声应用在流体细节的产生工作中;Kim 等人[65]提出了一种基于小波湍流的流体细节生成算法,很大程度上推动了此类算法的发展;Narain 等人[66]将Kolmogorov 谱的湍流概念引入流体细节增强工作中;而在文献[67]中,Pfaff 等人基于人工边界层来合成湍流,同时,他们还进一步提出了各向异性湍流[68];Boyd 等人[69]通过在液体表面增加扰动,使一些细节能够更加明显;Zhao 等人[70]试图将变分算法集成到基本流求解器中,并产生湍流效果;He 等人[71]提出了一种自适应的涡旋参数方法,随后,他们又进一步改进了这一方法[72],保证了其算法的数值稳定性;文献[73]则提出了基于流引导纹理细节合成方法;商柳等人[74]提出了一种骨架驱动的方法以合成近岸涌浪动画.

细节合成算法可以产生一些较为精细的动画效果,如图5 所示为细节合成算法[65]的模拟结果,其合成结果是基于低精度网格模拟结果之上,利用小波湍流性质进行了细节添加,在效果上有了很大的提升.但是此类方法的结果缺少高精度网格模拟的物理正确性,不适合精确性和物理性要求较高的模拟应用.例如,图6 所展示的是利用细节合成算法[65]所产生的高分辨率合成结果(如图6(a)所示)与高分辨率结果(如图6(b)所示).虽然细节合成结果可以添加大量细节,但在总体物理形态上受限于低分辨率结果,相较于高精度差距仍然非常大.

Fig.5 Result from the detail synthesis method (wavelet turbulence)[65]图5 细节合成算法(wavelet turbulence)[65]中的部分结果

Fig.6 Result from the detail synthesis method (wavelet turbulence)[65]图6 细节合成算法(wavelet turbulence)[65]的结果

2 基于数据驱动的流体动画模拟方法及分析

下面就基于数据驱动的各种算法在流体动画模拟中的应用进行详细的讨论.本文将分如下3 类算法加以讨论,分别为基于数据的插值法、基于数据的预计算法和基于数据的深度学习法.

2.1 基于数据的插值方法

在近年来流体动画的众多优秀算法中,围绕利用预先计算好的流体数据来快速生成新的结果这一思路,学术界也涌现出一批通过预计算数据对在线模拟过程进行大幅加速的方法.

关键帧插值法就是其中一类,这类算法利用已有流体数据的方法对已有数据进行插值生成新结果,类似于传统动画的关键帧插值方法.Zhang 等人[75]利用一种时空外插函数对低精度和高精度的模拟结果进行插值,以获得新的模拟效果.而文献[76]则通过已生成的不同形态的流体表面几何数据,提出了结合时空的非刚性迭代最近点算法以寻找两帧间的对应关系,插值出中间帧的流体几何.Colin 等人[77]采用加权无震荡空间离散(WENO)方法进行插值,可达到4 阶、6 阶精度.Jeschke 和Wojtan[78]则通过插值计算波前参数模拟海洋液体.Thuerey 等人[79]在近期提出的利用隐式欧拉表示结合光流法的流体插值方法避免了人工输入等缺点,可以应用于表面细节的体积变形及拓扑变化的流体场景.但这类插值方法能够生成的新结果比较局限于原始数据,结果局限于比较相似的关键帧(如图7 所示).

Fig.7 Result from the key-frame interpolation method[79]图7 关键帧插值算法[79]的部分结果

2.2 基于数据的预计算方法

针对拉格朗日粒子法的加速,文献[80]提出了针对游戏交互中仅有少量流体状态被频繁访问的特点建立了状态图,采用SPH 方法预计算生成流体数据,当游戏运行时,访问状态图得到最匹配的流体状态,实现了在手机上的预计算加速.Jeong 等人则将SPH 方法的流体模拟过程视为一个回归问题[81](如图8 所示),在预处理步骤中,通过历史数据训练回归森林,训练完成后,输入邻域粒子的状态,然后根据回归森林快速得到当前粒子下一帧的近似速度值.在算法的运行效率上,该算法相较于传统PBF 法[82]其加速比达到了30 倍(CPU),相较于PCISPH法[83]更是达到了300 多倍的加速比.但该方法以牺牲模拟精度为代价,并且外插能力弱,对不同场景不具有普适性,仅局限于拉格朗日粒子法.

Fig.8 图8

总体来看,现有基于数据的流体模拟方法的主要缺点有两个:一是较大地牺牲了流体模拟精度,二是较大地局限了流体场景的普适性.究其根源:一是现有方法对流体数据的非线性变换关系缺乏较精确和灵活的表达方式;二是现有方法没有针对流体模拟中的主要计算瓶颈进行深入的分析,缺乏有效的快速求解方法.

2.3 基于数据深度的学习方法——神经网络

近几年来,基于深度学习的算法在各个领域内都产生了非常广泛的影响,特别是在图形图像处理领域内,专家学者们开发出了众多优秀的算法.例如,深度神经网络(deep neural network,简称DNN)包含的深度卷积神经网络(deep convolutional neural network,简称DCNN)是一种极为有效的工具[84],在人脸识别[85,86]应用中,图像、视频分类[87,88]应用中,语义分析[89,90]应用中以及在视频、图像超分辨率[91,92]应用中等都很广泛.

而随着机器学习算法的快速发展,众多深度学习算法也越来越多地被应用到流体模拟中来.首先,对于投影步计算,Yang 等人[93]提出了基于ANN 的局部速度场学习算法(如图9 所示),尝试着用机器学习(深度神经网络,简称DNN)算法代替原有的泊松方程的求解.相较于传统的PCG 迭代法,该算法达到了4 倍计算加速比.但是由于该算法基于块(patch)来预测速度场,从而无法保证预测流体的不可压缩性质.Tompson 等人[94]则利用深度卷积网络技术(CNN)来解决整个流体模拟的不可压缩问题,同时加速投影步求解速度.但其输入维度问题(固定输入的三维速度散度场、三维几何场)大大增加了其内存用量和模型参数数量以及其模型的推广性.为了更快地求解流体投影步中所产生的大型稀疏线性方程组(见公式(3)),Xiao 等人[95]巧妙地构造了一组多层分级的特征向量,用以表征全局离散欧拉网格,利用深度神经网络,直接从稀疏矩阵A中抽取输入特征,得到所求压强场.这一步骤大大提升了泊松方程的求解效率,相较于传统的PCG 方法,可以达到140 倍的计算加速比.而最近,Xiao等人[96]将机器学习中增量学习(incremental learning)技术引入到流体动画模拟中,其核心思想是:利用少量的学习样本,结合模拟场景的自身学习,达到快速求解投影步压强向量以得到目标,在一定程度上解决了神经网络模型的可推广性问题.与此同时,Wiewel 等人[97]则提出了基于LSTM(long short-term memory,简称LSTM)来预测有限时间内的压强场的变化.在利用了神经网络自编码降维技术的情况下,该算法相较于传统的压力求解器也可以达到两个数量级的计算加速比.

Fig.9 Data-driven fluid projection method[93]图9 文献[93]中基于数据驱动的流体投影步求解方法

而在细节合成方面,Sato 等人[98]将机器学习算法应用到火焰模拟中,从低分辨率流体模拟中合成高分辨率三维火焰动画.最近,Chu 等人[99]则将CNN 应用至烟雾的细节合成中,基于低精度网格模拟结果,结合训练得到的细节合成指示器(descriptor),合成高分辨率流体模拟结果(如图10 所示).在运行效率上,Chu 等人[99]相较于传统的小波湍流细节合成算法[65],可以在相同水平的模拟时间下,得到更高精度的合成结果(150×240×150,2.75s/frame[65];400×600×400,2.75s/frame[99]).Kim 等人[100]则提出一种新的卷积神经网络生成模型(generative model),该模型结合了如速度参数、时间参数等流体参数作为网络模型输入的一部分,可以较好地合成具有空间-时间连续性的速度场.随后,Xie 等人[101]更是应用基于卷积神经网络的对抗神经网络(generative adversarial networks,简称GAN)对流体的超分辨率(super-resolution)问题作了进一步的研究.他们巧妙地运用GAN 的对抗训练特性[102,103],设计了特殊的损失函数(loss function),从而完成了基于低分辨率的细节增强的高分辨率生成任务(tempoGAN),从图11 所示结果可以看出,tempoGAN 的细节增强能力比较优秀.Sato 等人[104]借鉴图像合成的风格迁移概念,提出了基于样本(example-based)的湍流风格迁移算法.在考虑流体不可压缩性的同时,用户可以直观地创建具有所需湍流运动的高分辨率流体动画.相较于传统的细节合成算法[65,67],该算法不需要进行参数试调,这也大大提高了其应用效率.

另一方面,Prantl 等人[105]结合生成神经网络(generative neural network,简称GNN)光流法(optical flow)将流体的时空变形特征加以表示,并且提供了一个基于移动端(手机)的交互式移动应用程序.而在优化水花飞溅模拟的效果上,文献[106]利用了深度学习技术(NNs),可以使液体模拟具有更多的水花细节,使得模拟效果更加真实.Ma 等人[107]提出了一种基于深度强化学习的流体与刚体耦合的二维控制系统,该控制系统可以很好地完成例如通过控制流体射速等来保持刚体平衡、驱动刚体按顺序撞击墙上的指定点等具有挑战性的任务.该方法很好地利用了卷积神经网络自编码器(auto-encoder)进行输入变量的降维.

Fig.10 Result from smoke synthesis method[99] based on CNN图10 文献[99]中基于CNN 的烟雾细节合成方法的部分结果

Fig.11 图11

2.4 基于数据驱动的流体动画模拟研究的几个关键问题及研究趋势和方向

虽然基于数据驱动的流体动画模拟在近些年来发展得非常迅速,也产生了非常多的优秀工作,例如本文第2.3 节介绍的各种深度学习算法在流体模拟中的应用,但其中仍然存在很多问题没有得到解决,还有许多方向可以作进一步的深入研究.下面,本文就数据驱动的流体动画模拟研究提出几个关键问题,并对其未来的研究趋势和方向加以进一步讨论.

2.4.1 数据集表达流体运动的复杂性

在基于数据驱动的流体动画研究中,如何更好地利用少量数据集或大量数据集来有效地表征和表达出流体运动的复杂性,仍有待进一步挖掘和研究.诸如众多传统的流体解算方法(多重网格法[14,19]、细节增强方法[65,67]等),都在乎如何有效地计算或者表现出复杂的流体现象.而很多数据驱动方法(如Yang 等人[93]、Xiao 等人[96,108]提出的方法)将目标定于计算效率上,对如何更好地表现出流体本身的运动复杂性,仍需要更多的探索和研究.例如,如何更好地利用数据驱动算法的预计算/训练数据集来预测/模拟远离数据集的更为复杂的流体现象?如何更好地利用已有数据集,从物理层面上(物理方程)表征具有特殊物理意义的复杂流体现象,如涡旋、湍流、流体细丝等?

2.4.2 基于数据驱动的算法精度

如何进一步提升基于数据驱动的模拟加速算法在精度上的表现?在传统的流体模拟加速算法中,例如多重网络加速算法[14]、基于舒尔补(Shur complement)的并行加速算法[26,27]等,都是在保证计算精度的前提下来提升算法的速度表现力.而多数基于数据驱动的流体模拟方法,包括利用ANN 和CNN 代替泊松方程的求解算法[93,94],都着重强调计算效率,而在算法结果的计算精度上都存在着一定的瑕疵.例如:在泊松方程的求解算法中,传统的迭代法求解算法PCG[5]或者ICPCG[109]与基于舒尔补的算法[14]的解算精度都可以达到1e-8 数量级,而基于神经网络的解算算法[93,94]却无法达到相同精度.而在文献[110]中,我们看到了传统的数值迭代算法(multi-grid)在机器学习中的延伸,但是该算法没有应用到流体模拟中.如何有效地结合类似的高精度机器学习算法来解决流体模拟的加速问题,也将是研究思路之一.

更进一步地,深度学习方法对于流体模拟数据的描述能力尚不清晰,如何在神经网络中保持流体的无散性、如何有效地描述边界问题等有关于算法精度的难题,都亟待着人们去解决.

2.4.3 基于数据驱动的算法的物理准确性

如何解决高-低精度流体模拟之间的物理差异?在目前众多的基于数据驱动的流体模拟算法中,普遍存在着模拟物理准确性的问题.例如,在文献[99,101]中,作者利用低精度模拟结果来实现高精度合成目标,在一定程度上与传统的细节合成算法有异曲同工之效,但并没有从本质上解决这类算法的缺点——缺乏物理准确性.如何解决高-低精度流体模拟之间的映射关系,也成为此类基于数据驱动的流体动画模拟算法应用推广的阻碍之一.

如何利用现有的深度学习技术设计特别的形态差异识别模型,建立高-低精度模拟结果的非线性关系?如何克服由低精度向高精度信息传递时的信息不对称性?如何将基于低精度形态矫正的模拟结果扩展到高精度模拟场景中去?这些问题都在未来的研究中亟待解决.

2.4.4 并行优化

并行算法设计是传统的基于物理的流体模拟加速算法的研究方向之一,例如并行泊松方程求解器[14]、基于舒尔补的多GPU 并行法[26].而对于基于数据驱动的流体动画算法,均具有优良的并行性质.例如在神经网络训练过程中,利用多核训练框架[111,112]、利用多GPU 训练与计算[113]等.而如何有效地利用流体数据进行并行计算?如何设计基于数据驱动的流体模拟的并行框架来解决流体计算中的问题,如大型线性方程组求解问题等,也是未来研究者可以关注的一点.

3 结 论

基于物理的流体动画模拟是一个应用非常广泛的研究领域,其中,针对模拟的加速算法研究更是计算机图形学中的一个热门方向.在影视特效制作、游戏制作以及最近比较热门的虚拟现实、混合现实的各种应用中具有重大的发展前景.同时,由于大数据和机器学习技术的快速发展,特别是深度学习中深度神经网络的建模能力越来越强,也为计算机流体动画模拟提供了一个高效和高质量模拟的新途径.

本文首先集中介绍了几类主要的基于物理的动画模拟加速算法,在此基础上,分析了各种算法的优势和不足,希望可以为读者在后期基于物理的流体模拟算法研究中提供一定的研究参考.同时,本文还介绍了近期较为热门的几类基于数据驱动的流体动画模拟方法,特别是基于深度学习的流体模拟算法更是体现出了非常大的发展潜力.希望本篇综述可以在基于数据驱动的流体模拟方向上提供一定的参考并做出一定的贡献.

猜你喜欢

流体精度网格
基于不同快速星历的GAMIT解算精度分析
纳米流体研究进展
热连轧机组粗轧机精度控制
网格架起连心桥 海外侨胞感温馨
山雨欲来风满楼之流体压强与流速
猿与咖啡
追逐
以工匠精神凸显“中国精度”
浅谈ProENGINEER精度设置及应用