專利名稱:一種基于粒子系統(tǒng)的海面航跡并行化仿真方法
技術(shù)領(lǐng)域:
本發(fā)明屬于海洋可視化技術(shù)領(lǐng)域,具體涉及一種利用GPU并行處理的、基于粒子系統(tǒng)的海面航跡仿真方法。
背景技術(shù):
海洋可視化(Ocean Visualization)是運(yùn)用計(jì)算機(jī)圖形學(xué)技術(shù),以可視化的形式,模擬海洋表面在時(shí)間和空間上的實(shí)時(shí)變化及所呈現(xiàn)出的視覺效果。海面航跡仿真是模擬艦船在海面上航行激起的海面浪花翻滾及擴(kuò)散現(xiàn)象。從仿真效果來講,整個(gè)仿真內(nèi)容包含三部分一是航跡沒有影響到的普通的海面區(qū)域;二是航跡的翻滾和擴(kuò)散現(xiàn)象;三是航跡對正常海面的擾動(dòng)現(xiàn)象。
對于航跡沒有影響到的普通的海面區(qū)域仿真,核心問題是構(gòu)建海面隨機(jī)波動(dòng)的高度場。目前已有的逼真度最高的仿真方法是基于物理模型的方法,如郭秋雷等人采用的基于GPU構(gòu)架的平滑粒子流體動(dòng)力學(xué)(SPH)方法(郭秋雷,唐逸之,劉詩秋,李桂清.2011,一個(gè)SPH流體實(shí)時(shí)模擬的全GPU實(shí)現(xiàn)框架.計(jì)算機(jī)應(yīng)用與軟件,28(11),69-72. ) ;AzizBelmiloudi 等人米用的求解 Navier-Stokes 方程的方法(Aziz Belmiloudi, FrancoiseBrossier. 1997,Regularity Results for a Navier-Stokes Type Problem Related toOceangraphy. Acta Applicandae Mathematicaej 48, 299-316.)等。這種基于物理模型的仿真方法雖然逼真度最高,但是其內(nèi)部的物理規(guī)則運(yùn)算過于復(fù)雜,雖然經(jīng)過優(yōu)化和加速,但目前仍然無法適用于實(shí)時(shí)仿真領(lǐng)域。另一種真實(shí)度較高的方法是基于海浪頻譜模型的方法。如朱傯采用的基于Philips譜的方法(朱傯.2010,動(dòng)態(tài)海洋環(huán)境仿真中的若干關(guān)鍵技術(shù)研究.華中科技大學(xué).),梁修鋒等人采用的基于Jonswap譜的方法(梁修鋒,楊建民,李俊,肖龍飛,李欣.2011,面向海洋工程應(yīng)用的數(shù)值波浪水池.中國科學(xué)物理學(xué)力學(xué)天文學(xué),41,1123-122)等。這些方法依賴于數(shù)學(xué)模型,但相對于基于物理的方法來說運(yùn)算量較小,在采取一些優(yōu)化措施后,比較適用于大范圍的實(shí)時(shí)海面仿真。對于航跡的翻滾和擴(kuò)散現(xiàn)象仿真,核心問題是逼真模擬航跡浪花的運(yùn)動(dòng)。目前被廣泛采用的是基于Kelvin船行波理論和粒子系統(tǒng)相結(jié)合的方法,用浪花粒子模擬艦船航行中產(chǎn)生的尾跡浪花翻滾和擴(kuò)散現(xiàn)象。Michael E. Goss就采用了這種方法(MichaelE.Goss.1997, A real time particle system for display of ship wakes. ComputerGraphics and Applications, IEEE, 48:299-316.)。使用粒子系統(tǒng)能夠較為逼真地模擬水波擴(kuò)散,但隨著粒子數(shù)量的增多,系統(tǒng)的實(shí)時(shí)性受到很大影響。為了提升仿真效率,趙欣等人提出了一種LOD-GPU混合加速的方法(趙欣,李鳳霞,戰(zhàn)守義,陳宏敏.2008,基于粒子系統(tǒng)實(shí)現(xiàn)船舶航跡仿真的加速方法.大連海事大學(xué)學(xué)報(bào),34 (1),54-57.),張芹等人提出了一些減少計(jì)算復(fù)雜度的方法(張芹,張健,閔建平.2003,提高粒子系統(tǒng)實(shí)時(shí)性的方法研究·計(jì)算機(jī)工程,29 (18),46-48.)。對于航跡對正常海面的擾動(dòng)現(xiàn)象仿真,傳統(tǒng)的實(shí)現(xiàn)方式只是單純視覺效果的疊力口,如馬天等人提出的三維艦船航跡可視化方法(馬天,黃建國,王汝夯,張群飛.2011,應(yīng)用水波彌散特性的艦船航跡三維可視化新方法.西安交通大學(xué)學(xué)報(bào),45(8),49-53.)。這種方式使得海面網(wǎng)格在本質(zhì)上與艦船航跡幾乎沒有交互性,因此仿真效果不夠真實(shí)。孫慧提出了一種網(wǎng)格和粒子交互的水波實(shí)時(shí)模擬方法(孫慧.基于粒子和波的水行為模擬.2010,華東師范大學(xué).),但由其交互算法限制,在網(wǎng)格精細(xì)度增高和粒子數(shù)量增多時(shí),系統(tǒng)實(shí)時(shí)性受到嚴(yán)重影響。綜上所述,現(xiàn)有海面航跡仿真方法主要聚焦在兩個(gè)問題,一是增強(qiáng)仿真模型的真實(shí)感,二是提升仿真模型的運(yùn)算速度。已有方法的缺陷在于,一方面不能夠較為逼真地模擬航跡對正常海面的擾動(dòng)現(xiàn)象,另一方面不能夠達(dá)到真實(shí)性和實(shí)時(shí)性的良好協(xié)調(diào)。基于GPU的并行處理是提升模型運(yùn)算速度的有效方法。GPU的全稱是Programmable Graphics Processing Unit,即可編程圖形處理單兀。GPU的硬件結(jié)構(gòu)中擁有更多的ALU (Arithmetic Logic Unit,邏輯運(yùn)算單元)用于數(shù)據(jù)處理,因此非常適合對密集型數(shù)據(jù)進(jìn)行并行處理。海面航跡仿真中的網(wǎng)格運(yùn)算和粒子運(yùn)算都具有較為密集的運(yùn)算 量,而且內(nèi)部運(yùn)算法則相同,非常適合利用GPU進(jìn)行并行運(yùn)算處理。CUDA是NVIDIA公司推出的一套基于GPU的并行處理架構(gòu)。CUDA將GPU作為數(shù)據(jù)并行計(jì)算設(shè)備,在GPU通用計(jì)算方面做了顯著的改進(jìn)一是采用了統(tǒng)一處理架構(gòu),可以更加有效地利用頂點(diǎn)渲染器和像素渲染器的計(jì)算資源;二是引入了片內(nèi)共享存儲(chǔ)器,支持隨機(jī)寫入和并行線程間的通信。CUDA編程模型中,CPU稱為主機(jī)(Host ),GPU稱為設(shè)備(Device)。運(yùn)行在GPU上的CUDA并行計(jì)算函數(shù)稱為Kernel (內(nèi)核函數(shù)),Kernel是以Block為單位執(zhí)行的,但是一個(gè)Kernel可以在多個(gè)Block上并行執(zhí)行,而每個(gè)Block內(nèi)又有多個(gè)Thread并行執(zhí)行。
發(fā)明內(nèi)容
為了達(dá)到真實(shí)感和實(shí)時(shí)性的平衡協(xié)調(diào),本發(fā)明提出了一種基于粒子系統(tǒng)的海面航跡并行化仿真方法。采用網(wǎng)格為實(shí)、粒子為虛、虛實(shí)相結(jié)合的方法來生成海面航跡,基于CUDA實(shí)現(xiàn)網(wǎng)格與粒子模型的并行化運(yùn)算,結(jié)合GLSL實(shí)現(xiàn)GPU中的海面及航跡渲染。本方法將所有核心計(jì)算和渲染全部在GPU中進(jìn)行,將模型計(jì)算和渲染在GPU中構(gòu)成一個(gè)整體流程,減少了計(jì)算機(jī)內(nèi)存和顯存之間的通信,充分發(fā)揮GPU并行處理能力,在保證良好仿真效果的情況下,顯著提升仿真效率。本發(fā)明的技術(shù)方案如下一種基于粒子系統(tǒng)的海面航跡并行化仿真方法,包括以下步驟(圖I)(I)在CPU中進(jìn)行一些初始化的工作;具體包括初始化CUDA設(shè)備、申請顯存、創(chuàng)建FFT Plan、創(chuàng)建VB0、初始化粒子系統(tǒng);(2)在GPU中進(jìn)行海面網(wǎng)格的并行化運(yùn)算;具體包括求解某一特定時(shí)刻的Phillips海浪頻譜的海面高度場、執(zhí)行CUFFT求解Phillips海浪頻譜的波浪擴(kuò)散場、將計(jì)算結(jié)果輸出到顯存中的Global Memory ;(3)在GPU中進(jìn)行航跡粒子系統(tǒng)的并行化運(yùn)算;具體包括計(jì)算并更新粒子屬性、將粒子位置映射到海面網(wǎng)格坐標(biāo)點(diǎn)、計(jì)算粒子對所在位置周圍網(wǎng)格的擾動(dòng)并進(jìn)行范圍內(nèi)擾動(dòng)疊加運(yùn)算、將運(yùn)算結(jié)果輸出到Global Memory。(4)在GPU Shader中運(yùn)用GLSL對海面進(jìn)行環(huán)境、光照等渲染,形成動(dòng)態(tài)海面航跡效果。上述的各步驟中,海面網(wǎng)格的并行化運(yùn)算、航跡粒子系統(tǒng)的并行化運(yùn)算、粒子對所在位置范圍內(nèi)擾動(dòng)疊加運(yùn)算,這三者是發(fā)明人經(jīng)過艱辛的研究設(shè)計(jì)出來的,以下將詳細(xì)描述以上三者的設(shè)計(jì)方法。海面網(wǎng)格的并行化運(yùn)是在Phillips頻譜模型的基礎(chǔ)上進(jìn)行的。Phillips頻譜是經(jīng)過統(tǒng)計(jì)分析研究出的在風(fēng)力作用下的波浪頻域振幅,具備隨機(jī)性、周期性和多頻率性等海浪模型特點(diǎn)。在Phillips頻譜上加入隨機(jī)擾動(dòng)及時(shí)間驅(qū)動(dòng)變換,即可很好地模擬風(fēng)力作用下的海面波動(dòng)。變換后的頻譜函數(shù)包括T時(shí)刻海面高度場求解和整個(gè)網(wǎng)格范圍內(nèi)海浪擴(kuò)散場求解兩部分。對于T時(shí)刻海面高度場求解,每一個(gè)海面網(wǎng)格點(diǎn)都是獨(dú)立的,因此可以利用海面網(wǎng)格的二維形式進(jìn)行并行處理。假設(shè)仿真區(qū)域的網(wǎng)格密度為meshW^meshH,按照二維拆分,將Block內(nèi)的線程維度設(shè)為BlockDim (X,y, I),則拆分后的Block個(gè)數(shù)為
權(quán)利要求
1.一種基于粒子系統(tǒng)的海面航跡并行化仿真方法,其特征在于包括以下步驟 (1)在CPU中進(jìn)行一些初始化的工作具體包括初始化CUDA設(shè)備、申請顯存、創(chuàng)建FFTPlan、創(chuàng)建VBO、初始化粒子系統(tǒng); (2)在GPU中進(jìn)行海面網(wǎng)格的并行化運(yùn)算具體包括求解某一特定時(shí)刻的Phillips海浪頻譜的海面高度場、執(zhí)行CUFFT求解Phillips海浪頻譜的波浪擴(kuò)散場、將計(jì)算結(jié)果輸出到顯存中的Global Memory ; (3)在GPU中進(jìn)行航跡粒子系統(tǒng)的并行化運(yùn)算具體包括計(jì)算并更新粒子屬性、將粒子位置映射到海面網(wǎng)格坐標(biāo)點(diǎn)、計(jì)算粒子對所在位置周圍網(wǎng)格的擾動(dòng)并進(jìn)行范圍內(nèi)擾動(dòng)疊加運(yùn)算、將運(yùn)算結(jié)果輸出到Global Memory ; (4)在GPUShader中運(yùn)用GLSL對海面進(jìn)行環(huán)境、光照渲染,形成動(dòng)態(tài)海面航跡效果。
2.如權(quán)利要求I所述的基于粒子系統(tǒng)的海面航跡并行化仿真方法,其特征在于,所述步驟(I)中初始化粒子系統(tǒng)之中,粒子屬性包括一個(gè)生命值和一個(gè)死亡值,初始值都被賦予一個(gè)正數(shù)的隨機(jī)整數(shù)值。
3.如權(quán)利要求I所述的基于粒子系統(tǒng)的海面航跡并行化仿真方法,其特征在于,所述步驟(3)中的計(jì)算并更新粒子屬性的方法為 在每個(gè)粒子死亡的時(shí)候,將粒子的存活標(biāo)志設(shè)為死亡,并為其賦予一個(gè)隨機(jī)的死亡值,開始死亡計(jì)時(shí),不斷更新死亡值;當(dāng)死亡計(jì)時(shí)結(jié)束時(shí),粒子重新激活,為其賦予一個(gè)隨機(jī)的生命值,進(jìn)入一個(gè)新的生命循環(huán),粒子存活的持續(xù)時(shí)間也重新開始計(jì)時(shí)。
4.如權(quán)利要求I所述的基于粒子系統(tǒng)的海面航跡并行化仿真方法,其特征在于,所述步驟(2)中的并行化求解Phillips海浪頻譜的海面高度場的CUDA線程拆分方式為 假設(shè)仿真區(qū)域的網(wǎng)格密度為meshW*meshH,按照二維拆分,將CUDA內(nèi)核的Block內(nèi)的線程維度設(shè)為BlockDim (X,y, I),拆分后的Block個(gè)數(shù)為
5.如權(quán)利要求I所述的基于粒子系統(tǒng)的海面航跡并行化仿真方法,其特征在于,所述步驟(3)中的粒子位置映射到海面網(wǎng)格坐標(biāo)點(diǎn)方法為
6.如權(quán)利要求I所述的基于粒子系統(tǒng)的海面航跡并行化仿真方法,其特征在于,所述步驟(3)中,計(jì)算粒子對所在位置周圍網(wǎng)格的擾動(dòng)并進(jìn)行范圍內(nèi)擾動(dòng)疊加運(yùn)算的方法為對粒子系統(tǒng)并不進(jìn)行顯式繪制,而是作為模擬水波能量擴(kuò)散過程的一種虛擬媒介,最終反映在對海面網(wǎng)格高度場的擾動(dòng)上;粒子的能量由其空間位置的Z值反映,每一個(gè)粒子都能夠使其當(dāng)前所處的網(wǎng)格產(chǎn)生ΛΗ的偏離高度;隨著粒子位置的更新,其影響的網(wǎng)格和能量強(qiáng)度不斷變化,直至粒子死亡; 粒子對周圍網(wǎng)格的擾動(dòng)產(chǎn)生的偏離高度為
7.如權(quán)利要求I所述的基于粒子系統(tǒng)的海面航跡并行化仿真方法,其特征在于,所述步驟(4)中,對浪花和海面的顏色過渡渲染處理方法為FinalColor = mix(FinalColor, whiteColor, alphaXhightRate) 其中,F(xiàn)inalColor為前面渲染后的最終水面顏色,whiteColor為波浪的白顏色,alpha為透明度,hightRate為海浪的高度比例,mix O是GLSL語言內(nèi)建的混合函數(shù)。
全文摘要
本發(fā)明為一種基于粒子系統(tǒng)的海面航跡并行化仿真方法,采用網(wǎng)格為實(shí)、粒子為虛、虛實(shí)相結(jié)合的方法來生成海面航跡,基于CUDA實(shí)現(xiàn)網(wǎng)格與粒子模型的并行化運(yùn)算,結(jié)合GLSL實(shí)現(xiàn)GPU中的海面及航跡渲染。本發(fā)明將所有核心計(jì)算和渲染全部在GPU中進(jìn)行,將模型計(jì)算和渲染在GPU中構(gòu)成一個(gè)整體流程,減少了內(nèi)存和顯存之間的通信,充分發(fā)揮GPU并行處理能力。經(jīng)過發(fā)明人試驗(yàn)驗(yàn)證表明,本發(fā)明能夠在保證良好仿真效果的情況下,顯著提升仿真效率。
文檔編號(hào)G06T15/00GK102789650SQ20121025196
公開日2012年11月21日 申請日期2012年7月19日 優(yōu)先權(quán)日2012年7月19日
發(fā)明者呂品, 徐永志, 石書浩, 鄭昌文 申請人:中國科學(xué)院軟件研究所