特效模擬:SPH流體模擬及液面重構問題
這裏是關於特效模擬算法的一些敘述,主要是流體模擬部分的研究。
目前動畫領域內的流體模擬主要是拉格朗日法無網格法和歐拉網格法,兩種方法更有利弊。
我研究的主要是拉格朗日法中的SPH模型,即光滑粒子流體動力學模型。
粒子方法非常適合模擬大形變流體、液滴飛濺等復雜場景。
現今SPH算法已經有了很多改進,包括對流體真實感、時間復雜度以及並行方案的改進等,在去年的SIGGRAPH,清華大學發表了一篇關於SPH流固耦合的文章,時至今日SPH已經在很多領域進行了研究和應用。
我準備實現的是PCISPH(Predictive-Corrective Incompressible SPH),但是,在此之前,先進行了WCSPH(Weakly compressible SPH for free surface flows)的實現。
實現過程參考論文:Weakly compressible SPH for free surface flows . Markus Becker Matthias Teschner . 2007
算法如下(出自PCISPH論文):
SPH算法主要在於計算每個粒子的狀態,如密度、壓力、粘性力等,然後根據計算的合力以及牛頓第二定律推出粒子加速度,進而求出粒子在當前時間步下的位移。
由於粒子是離散的,流體是連續的,所以SPH使用插值核函數進行粒子狀態的估算,針對不同參數可以選擇適合的核函數:
對於密度可以使用poly6核函數:
壓強使用spiky核函數及其梯度方程:
粘性力使用polynomial核函數及其拉普拉斯形式:
WCSPH在實現時需要註意時間步長,如果過大會導致粒子爆炸。
在實現時,可以使用OpenGL進行視圖的顯示,效果如下:
PCISPH對WCSPH的最大根據就是叠代的時間步,其總體計算效率可以高出WCSPH一個數量級。
這裏關於SPH進行了一些簡單敘述,不過僅僅作為筆記,以備之後的深入研究。
液面重構部分會在之後提及。
特效模擬:SPH流體模擬及液面重構問題