三維流體物理動畫引擎的實現(xiàn)方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種三維流體物理動畫引擎的實現(xiàn)方法及裝置,其中,該方法包括:利用并行空間粒子搜索算法搜索流體中每一粒子的鄰居粒子,并計算所述每一粒子的狀態(tài);利用復雜邊界查找算法計算流體所處容器的邊界,根據(jù)所述每一粒子的狀態(tài)并基于碰撞機制計算與調節(jié)所述每一粒子與邊界的碰撞強度;根據(jù)碰撞后的粒子分布情況并基于流體表面重構算法對流體表面重構,或者基于屏幕空間的表面重構算法對流體表面重構,獲得流體表面。通過采用本發(fā)明公開的方法及裝置提高了運行速度及工作效率。
【專利說明】三維流體物理動畫引擎的實現(xiàn)方法及裝置
【技術領域】
[0001]本發(fā)明涉及基于物理學的計算機動畫領域,尤其涉及一種三維流體物理動畫引擎的實現(xiàn)方法及裝置。
【背景技術】
[0002]SPH (Smoothed Particle Hydrodynamics,光滑粒子動力學)方法是一種典型的拉格朗日方法,在模擬流體時它是將連續(xù)的流體用相互作用的質點組描述,各個質點上承載各種物理量,包括質量、速度、密度等,通過求解質點組的動力學偏微分方程組和跟蹤每個質點的運動,求得整個系統(tǒng)的力學行為。SPH方法使用核函數(shù)對密度、壓力、粘力項進行離散化,得到Navier-Stokes (納維葉一斯托克斯)方程組的離散化計算形式,從而在每步迭代過程近似解出各個物理量,模擬流體運動。SPH方法是由Lucy、Monaghan及Gingold等人于1977年提出用來解決天體物理學中的行星運動問題,后來被引入到計算流體力學領域。
[0003]SPH方法模擬流體具有自適應性特性。SPH方法的這種自適應性是通過在每個時間步長計算其周圍的其他粒子分布近似地獲得的。由于SPH方法的這種特性,SPH方法不受粒子分布的影響。因此,SPH方法能夠很好的處理具有劇烈形變問題。這是SPH方法最弓I起人們感興趣的特性。另外SPH方法還克服了高維拉氏方法中網(wǎng)格纏繞的問題和隨著維數(shù)、網(wǎng)格數(shù)增加其復雜度急劇上升的問題。
[0004]發(fā)明人在進行發(fā)明創(chuàng)造的過程中發(fā)現(xiàn),現(xiàn)有技術中,SPH方法模擬流體的計算量較大,運行速度較慢,工作效率較低,因此,如何提高三維流體物理動畫的運行速度及工作效率成為現(xiàn)今的研究重點。
【發(fā)明內容】
[0005]本發(fā)明的目的是提供一種三維流體物理動畫引擎的實現(xiàn)方法及裝置,提高了運行速度及工作效率。
[0006]本發(fā)明的目的是通過以下技術方案實現(xiàn)的:
[0007]三維流體物理動畫引擎的實現(xiàn)方法,該方法包括:
[0008]利用并行空間粒子搜索算法搜索流體中每一粒子的鄰居粒子,并計算所述每一粒子的狀態(tài);
[0009]利用復雜邊界查找算法計算流體所處容器的邊界,根據(jù)所述每一粒子的狀態(tài)并基于碰撞機制計算與調節(jié)所述每一粒子與邊界的碰撞強度;
[0010]根據(jù)碰撞后的粒子分布情況并基于流體表面重構算法對流體表面重構,或者基于屏幕空間的表面重構算法對流體表面重構,獲得流體表面。
[0011]設計多種流體光學效應的計算方法,力求在增強流體的可視化效果同時消耗較小的系統(tǒng)資源。
[0012]三維流體物理動畫引擎的實現(xiàn)裝置,該裝置包括:
[0013]并行處理單元,用于計算流體中每一粒子的狀態(tài),并利用并行空間粒子搜索算法搜索所述每一粒子的鄰居粒子;
[0014]碰撞強度控制單元,用于利用復雜邊界查找算法計算流體所處容器的邊界,根據(jù)所述每一粒子的狀態(tài)并基于碰撞機制計算與調節(jié)所述每一粒子與邊界的碰撞強度;
[0015]流體表面獲取單元,用于根據(jù)碰撞后的粒子分布情況并基于流體表面重構算法對流體表面重構,或者基于屏幕空間的表面重構算法對流體表面重構,獲得流體表面。
[0016]由上述本發(fā)明提供的技術方案可以看出,通過并行化處理粒子狀態(tài)更新,并對粒子的鄰居粒子進行搜索,使得系統(tǒng)能快速、高效的進行大規(guī)模粒子的查找;通過利用復雜邊界查找算法,使得系統(tǒng)能在大規(guī)模復雜邊界的條件下流體的仿真模擬仍然能夠保持較高的幀率;另外,通過針對應用場景的不同,選擇不同的表面重構算法,能夠準確計算流體密度場和重構流體表面,并能夠快速實時重構表面。
【專利附圖】
【附圖說明】
[0017]為了更清楚地說明本發(fā)明實施例的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域的普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他附圖。
[0018]圖1為本發(fā)明實施例一提供的一種三維流體物理動畫引擎的實現(xiàn)方法的流程圖;
[0019]圖2為本發(fā)明實施例一提供的流體厚度與觀察者關系的示意圖;
[0020]圖3為本發(fā)明實施例一提供的焦散效應形成原理的示意圖;
[0021]圖4為本發(fā)明實施例一提供的一種焦散效應的示意圖;
[0022]圖5為本發(fā)明實施例二提供的一種三維流體物理動畫引擎的實現(xiàn)裝置的示意圖。
【具體實施方式】
[0023]下面結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明的保護范圍。
[0024]實施例一
[0025]圖1為本發(fā)明實施例一提供的一種三維流體物理動畫引擎的實現(xiàn)方法的流程圖。如圖1所示,該方法主要包括如下步驟:
[0026]步驟11、利用并行空間粒子搜索算法搜索流體中每一粒子的鄰居粒子,并計算所述每一粒子的狀態(tài)。
[0027]由于拉格朗日方法需要利用支持域內的鄰居粒子,因此,本發(fā)明實施例通過對鄰居粒子物理量的加權平均來計算當前粒子所承載的相應物理量。
[0028]本發(fā)明實施例中可以使用CUDA (統(tǒng)一計算設備架構)并行化處理粒子狀態(tài)更新計算,具體的:對流體中每一粒子進行三維空間上的哈希操作,實現(xiàn)當前粒子位置到存儲地址的映射,并查到找到預設的核函數(shù)半徑內所述當前粒子的所有鄰居粒子;將所述核函鄰居粒子的狀數(shù)半徑內所述當前粒子的所有態(tài)帶入至Navier-Stokes (納維葉一斯托克斯)方程組離散對稱形式中,并使用多項式函數(shù)作為核函數(shù),計算所述當前粒子的密度、壓力及粘力等物理狀態(tài),獲得所述當前粒子的加速度;使用蛙跳式更新方法計算所述當前粒子的速度和位置狀態(tài)。
[0029]示例性的,本發(fā)明實施例中利用一 6次多項式核函數(shù)對密度求解,其公式為:
[0030]
【權利要求】
1.三維流體物理動畫引擎的實現(xiàn)方法,其特征在于,該方法包括: 利用并行空間粒子搜索算法搜索流體中每一粒子的鄰居粒子,并計算所述每一粒子的狀態(tài); 利用復雜邊界查找算法計算流體所處容器的邊界,根據(jù)所述每一粒子的狀態(tài)并基于碰撞機制計算與調節(jié)所述每一粒子與邊界的碰撞強度; 根據(jù)碰撞后的粒子分布情況并基于流體表面重構算法對流體表面重構,或者基于屏幕空間的表面重構算法對流體表面重構,獲得流體表面。
2.根據(jù)權利要求1所述的方法,其特征在于,所述利用并行空間粒子搜索算法搜索流體中每一粒子的鄰居粒子,并計算所述每一粒子的狀態(tài)包括: 對流體中每一粒子進行三維空間上的哈希操作,實現(xiàn)當前粒子位置到存儲地址的映射,并查到找到預設的核函數(shù)半徑內所述當前粒子的所有鄰居粒子;將所述核函鄰居粒子的狀數(shù)半徑內所述當前粒子的所有態(tài)帶入至Navier-Stokes方程組離散對稱形式中,并使用多項式函數(shù)作為核函數(shù),計算所述當前粒子的密度、壓力及粘力,獲得所述當前粒子的加速度;使用蛙跳式更新方法計算所述當前粒子的速度和位置狀態(tài); 其中,搜索所述每一粒子的鄰居粒子包括: 哈希映射處理:對流體中的粒子i的位置Pi使用空間哈希操作,得到三維坐標Ai (Ai.χ, Ai.y, Ai.z),其計算公式為:
3.根據(jù)權利要求1所述的方法,其特征在于, 計算所述流體所處容器的邊界之前,進行預處理,具體的包括:將所述容器的邊界模型化為點和法向表示的理想平面;對所述理想平面進行離散采樣,再進行哈希映射,以確保所述理想平面經(jīng)過單元格區(qū)域; 所述碰撞機制包括:Ui = U1-(l+cE) (Ui.η)η,其中,ui為粒子i的速度,η為平面法向量,cE為動量損失系數(shù);通過調節(jié)動量損失系數(shù)來控制粒子與邊界碰撞強度。
4.根據(jù)權利要求1所述的方法,其特征在于, 所述根據(jù)碰撞后的粒子分布情況并基于流體表面重構算法對流體表面重構包括:根據(jù)所述流體中的粒子搜索局部SPH粒子,并根據(jù)所述局部SPH粒子的位置計算所述流體中粒子分布的各向異性和大??;將所述流體中粒子分布的各向異性和大小作為核函數(shù)系數(shù)計算每一粒子局部密度場分布,并疊加所有粒子密度場,獲得全局密度場分布,再使用移動立方體Marching Cube算法抽取等值面,獲得流體表面; 其中,在使用Marching Cube算法抽取等值面之前還包括:匹配立方體有效性掃描的步驟,且包括:標記,掃描全局密度場中的所用體素,得到體素的標記數(shù)組T[k],0<k<M-l,M為密度場體素個數(shù);建立映射關系,對所述數(shù)組T[k]的前綴和進行計算獲得數(shù)組T’ [k],則數(shù)組T[k]中被標記的總個數(shù)為B=T’ [M-1]+T[M-1];建立長度為B的數(shù)組V[j],其中,O ≤ j ≤ N-1,且 V[T’ [i]]=k ; 所述基于屏幕空間的表面重構算法對流體表面重構包括:將所述流體中的粒子替換為球體;利用計算機圖形學中的仿射變換原理,在圖像空間下計算表面像素的深度與法向;再對計算得到的所述表面像素的深度與法向進行低通濾波。
5.根據(jù)權利要求1或4所述的方法,其特征在于,在獲得所述流體表面之后還包括:光學效應計算;所述光學效應包括:包括光照、折射與反射、光線穿透的厚度、焦散和陰影; 其中,折射與反射系數(shù)的計算公式為: r = fb+fs.(1.0+1.G)fp ; r = min (1.0, r'); s = l.0-r ; 其中,I為入射光線單位矢量,G為頂點處的法線,fb、fs與fp表示與流體介質相關的多項式系數(shù),r為反射系數(shù),s為折射系數(shù); 計算所述光線穿透的厚度之前計算所述流體的厚度,其計算公式為:
6.三維流體物理動畫引擎的實現(xiàn)裝置,其特征在于,該裝置包括: 并行處理單元,用于利用并行空間粒子搜索算法搜索流體中每一粒子的鄰居粒子,并計算所述每一粒子的狀態(tài); 碰撞強度控制單元,用于利用復雜邊界查找算法計算流體所處容器的邊界,根據(jù)所述每一粒子的狀態(tài)并基于碰撞機制計算與調節(jié)所述每一粒子與邊界的碰撞強度; 流體表面獲取單元,用于根據(jù)碰撞后的粒子分布情況并基于流體表面重構算法對流體表面重構,或者基于屏幕空間的表面重構算法對流體表面重構,獲得流體表面。
7.根據(jù)權利要求6所述的裝置,其特征在于,所述并行處理單元包括: 粒子狀態(tài)計算單元,用于對流體中每一粒子進行三維空間上的哈希操作,實現(xiàn)當前粒子位置到存儲地址的映射,并查到找到預設的核函數(shù)半徑內所述當前粒子的所有鄰居粒子;將所述核函鄰居粒子的狀數(shù)半徑內所述當前粒子的所有態(tài)帶入至Navier-Stokes方程組離散對稱形式中,并使用多項式函數(shù)作為核函數(shù),計算所述當前粒子的密度、壓力及粘力,獲得所述當前粒子的加速度;使用蛙跳式更新方法計算所述當前粒子的速度和位置狀態(tài); 搜索單元,用于搜索所述每一粒子的鄰居粒子,且該單元包括: 哈希映射處理單元,用于對流體中的粒子i的位置Pi使用空間哈希操作,得到三維坐標Ai (Ai.χ, Ai.y, Ai.z),其計算公式為:
8.根據(jù)權利要求6所述的裝置,其特征在于,所述碰撞強度控制單元包括: 預處理單元,用于在計算所述流體所處容器的邊界之前,進行預處理,具體的包括:將所述容器的邊界模型化為點和法向表示的理想平面;對所述理想平面進行離散采樣,再進行哈希映射,以確保所述理想平面經(jīng)過單元格區(qū)域; 所述碰撞機制包括:? = U1-(l+cE) (Ui.η)η,其中,ui為粒子i的速度,η為平面法向量,cE為動量損失系數(shù); 通過調節(jié)動量損失系數(shù)來控制粒子與邊界碰撞強度。
9.根據(jù)權利要求6所述的裝置,其特征在于,所述流體表面獲取單元包括: 第一流體表面重構單元,用于根據(jù)碰撞后的粒子分布情況并基于流體表面重構算法對流體表面重構包括:根據(jù)所述流體中的粒子搜索局部SPH粒子,并根據(jù)所述局部SPH粒子的位置計算所述流體中粒子分布的各向異性和大?。粚⑺隽黧w中粒子分布的各向異性和大小作為核函數(shù)系數(shù)計算每一粒子局部密度場分布,并疊加所有粒子密度場,獲得全局密度場分布,再使用移動立方體Marching Cube算法抽取等值面,獲得流體表面; 且所述第一流體表面重構單元還包括:匹配立方體有效性掃描單元,用于在使用Marching Cube算法抽取等值面之前進行匹配立方體有效性掃描,且該單元包括:標記單元,用于掃描全局密度場中的所用體素,得到體素的標記數(shù)組T [k],O≤k≤M-1,M為密度場體素個數(shù);映射關系建立單元,用于對所述數(shù)組T[k]的前綴和進行計算獲得數(shù)組T’ [k],則數(shù)組T[k]中被標記的總個數(shù)為B=T’ [M-1]+T[M-1];建立長度為B的數(shù)組V[j],其中,O^ j ^ N-1,且 V[T,[i]]=k ; 第二流體表面重構單元,用于基于屏幕空間的表面重構算法對流體表面重構包括:將所述流體中的粒子替換為球體;利用計算機圖形學中的仿射變換原理,在圖像空間下計算表面像素的深度與法向;再對計算得到的所述表面像素的深度與法向進行低通濾波。
10.根據(jù)權利要求6或9所述的裝置,其特征在于,該裝置還包括:光學效應計算單元;所述光學效應包括:包括光照、折射與反射、光線穿透的厚度、焦散和陰影; 所述光學效應計算單元;還包括: 折射與反射系數(shù)計算單元,其計算公式為: r = fb+fs.(1.0+1.G)fp ; r = min (1.0, r'); s = l.0-r ;其中,I為入射光線單位矢量,G為頂點處的法線,fb、fs與fp表示與流體介質相關的多項式系數(shù),r為反射系數(shù),s為折射系數(shù); 流體厚度計算單元,用于計算所述光線穿透的厚度之前計算所述流體的厚度,其計算公式為:
【文檔編號】G06T13/20GK103617593SQ201310654810
【公開日】2014年3月5日 申請日期:2013年12月5日 優(yōu)先權日:2013年12月5日
【發(fā)明者】董蘭芳, 汪錦想 申請人:中國科學技術大學