(上海交通大學 軟件學院,上海 200240)
流體現象是在我們生活中隨處可見的物理現象,而流體動畫模擬在藝術與工業界也存在著廣泛的應用,例如在影視特效制作、游戲模擬、災難仿真[1]等應用場景中都有著重要的應用價值.如何逼真地模擬大規模煙霧、水流、沙流等眾多自然流體現象,是計算機圖形學的重要研究方向之一.但是,隨著人們對電影、游戲等視覺效果要求的提高,以及工業需求及實際應用的不斷深化與增長,各種傳統的流體動畫模擬方法面臨著越來越多的挑戰.
近些年來,隨著業界對流體動畫模擬的計算精度、模擬質量與規模的要求越來越高,所需要的計算資源也呈爆炸式增長.眾多研究者也將所關注的焦點和難點集中在如何利用有限的計算資源,快速地模擬出高質量、高精度、大規模的流體動畫場景上.更進一步地,在游戲和虛擬現實等實時交互應用不斷深入和推廣的需求這一情況下,眾多用戶對流體動畫特效提出了前所未有的實時性要求,這在允許降低精度和質量要求的前提條件下,在流體動畫模擬算法的規模和速度上提出了更高的要求.而由于高質量流體動畫模擬過程耗費了大量時間,一旦模擬效果不佳,用戶可能需要在調整參數后重新計算,而原有的計算結果通常不能再用,這樣也會浪費大量的計算資源以及可利用的數據資源.
在傳統的兩大主流流體模擬算法,即拉格朗日粒子法與歐拉網格法中,拉格朗日粒子法將流體視為大量運動的流體微團,通過描述每個微團的具體位置、溫度等變量隨著時間的變化情況來描述流體運動.拉格朗日法的計算速度快,但存在難以保持流體的不可壓縮性和難以進行液體表面重構與渲染等缺點,其主要代表為Muller 等人引入到流體動畫中的SPH 方法[2].而歐拉網格法最早由Foster 等人[3]引入流體動畫領域,由Stam 提出采用半拉格朗日對流法[4],建立了無條件穩定的經典模擬框架,并由Fedkiw 等人[5]加以完善和發展.該類方法在空間均勻分布觀測點網格,通過描述每個時刻流體變量在這些觀測點上的值的變化來描述流體的運動.拉格朗日方法和歐拉方法求解的是Navier-Stokes 方程的不同形態,而歐拉法相對于拉格朗日粒子法可更方便地進行數值分析和探索,本文將側重于歐拉網格方法的研究和總結.
相較于傳統的物理模擬方法,基于數據驅動的算法也在各個領域產生了巨大影響.隨著大數據技術與機器學習眾多方法的快速發展,數據驅動方法已在各個領域中廣泛應用.特別是在物理建模的相關領域內,已經產生了廣泛的使用場景,例如在三維物理模型轉化變形[6,7]應用中、三維模型重建及表面重建[8,9]應用中、幾何材料設計[10,11]應用中等.而在流體動畫模擬領域內,基于數據驅動的眾多算法也產生了廣泛應用(第2 節將詳細加以介紹).多數基于數據驅動的流體模擬算法主要的核心目標為加速流體模擬過程,利用已有的流體數據,大幅提升流體模擬速度,快速增加流體細節.尤其是在深度學習技術的驅動下,流體模擬的計算效率有了極大的提高,也是將來流體模擬算法的重要研究趨勢之一.接下來,本文首先對傳統的流體動畫算法,特別是幾類主要的流體動畫模擬的加速算法進行相關總結和分析,隨后,在此基礎上,本文重點就基于數據驅動的各類模擬算法作進一步的討論.
基于物理的流體動畫模擬是基于Navier-Stokes 方程(下文簡稱N-S 方程)進行求解處理的[12].由于該方程是一個描述粘性不可壓縮流體動量守恒的非線性偏微分方程,且在數學意義上還沒有精確解析解,因此目前眾多流體動畫模擬算法中采用的都是離散形式的數值解.歐拉網格法的模擬效果直接依賴于網格的精度,針對高質量、高精度、大規模的流體動畫模擬,如何有效地加速歐拉網格法的模擬過程,一直是人們面臨的挑戰.
在歐拉網格法的經典框架中,一般分為對流步、外力步、投影步等步驟[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].這對于需要反復調參追求最佳流體模擬效果的動畫媒體設計師來說,所需要耗費的重復計算的時間成本是巨大的.
使用復合網格格式求解泊松方程是另一種常見的流體模擬加速方法.普通的流體仿真大多采用均勻網格或者均勻交錯網格[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 流體求解的復合網格結構
模型縮減法(降維)也是一類加速泊松方程的常見算法.在實現降維的過程中,淺水方程的應用較為常見.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 形態引導方法
針對低精度流體模擬算法,較為典型的為流體形態引導(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]的結果
下面就基于數據驅動的各種算法在流體動畫模擬中的應用進行詳細的討論.本文將分如下3 類算法加以討論,分別為基于數據的插值法、基于數據的預計算法和基于數據的深度學習法.
在近年來流體動畫的眾多優秀算法中,圍繞利用預先計算好的流體數據來快速生成新的結果這一思路,學術界也涌現出一批通過預計算數據對在線模擬過程進行大幅加速的方法.
關鍵幀插值法就是其中一類,這類算法利用已有流體數據的方法對已有數據進行插值生成新結果,類似于傳統動畫的關鍵幀插值方法.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]的部分結果
針對拉格朗日粒子法的加速,文獻[80]提出了針對游戲交互中僅有少量流體狀態被頻繁訪問的特點建立了狀態圖,采用SPH 方法預計算生成流體數據,當游戲運行時,訪問狀態圖得到最匹配的流體狀態,實現了在手機上的預計算加速.Jeong 等人則將SPH 方法的流體模擬過程視為一個回歸問題[81](如圖8 所示),在預處理步驟中,通過歷史數據訓練回歸森林,訓練完成后,輸入鄰域粒子的狀態,然后根據回歸森林快速得到當前粒子下一幀的近似速度值.在算法的運行效率上,該算法相較于傳統PBF 法[82]其加速比達到了30 倍(CPU),相較于PCISPH法[83]更是達到了300 多倍的加速比.但該方法以犧牲模擬精度為代價,并且外插能力弱,對不同場景不具有普適性,僅局限于拉格朗日粒子法.

Fig.8 圖8
總體來看,現有基于數據的流體模擬方法的主要缺點有兩個:一是較大地犧牲了流體模擬精度,二是較大地局限了流體場景的普適性.究其根源:一是現有方法對流體數據的非線性變換關系缺乏較精確和靈活的表達方式;二是現有方法沒有針對流體模擬中的主要計算瓶頸進行深入的分析,缺乏有效的快速求解方法.
近幾年來,基于深度學習的算法在各個領域內都產生了非常廣泛的影響,特別是在圖形圖像處理領域內,專家學者們開發出了眾多優秀的算法.例如,深度神經網絡(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.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]等.而如何有效地利用流體數據進行并行計算?如何設計基于數據驅動的流體模擬的并行框架來解決流體計算中的問題,如大型線性方程組求解問題等,也是未來研究者可以關注的一點.
基于物理的流體動畫模擬是一個應用非常廣泛的研究領域,其中,針對模擬的加速算法研究更是計算機圖形學中的一個熱門方向.在影視特效制作、游戲制作以及最近比較熱門的虛擬現實、混合現實的各種應用中具有重大的發展前景.同時,由于大數據和機器學習技術的快速發展,特別是深度學習中深度神經網絡的建模能力越來越強,也為計算機流體動畫模擬提供了一個高效和高質量模擬的新途徑.
本文首先集中介紹了幾類主要的基于物理的動畫模擬加速算法,在此基礎上,分析了各種算法的優勢和不足,希望可以為讀者在后期基于物理的流體模擬算法研究中提供一定的研究參考.同時,本文還介紹了近期較為熱門的幾類基于數據驅動的流體動畫模擬方法,特別是基于深度學習的流體模擬算法更是體現出了非常大的發展潛力.希望本篇綜述可以在基于數據驅動的流體模擬方向上提供一定的參考并做出一定的貢獻.