亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種快速實(shí)時煙霧模擬算法的制作方法

文檔序號:12906896閱讀:1356來源:國知局
一種快速實(shí)時煙霧模擬算法的制作方法與工藝

本發(fā)明屬于實(shí)時流體模擬技術(shù)領(lǐng)域,涉及一種流體模擬的動態(tài)建模算法。



背景技術(shù):

煙霧模擬在游戲和影視特效等方面應(yīng)用非常廣泛,形象而逼真的煙霧能給用戶帶來良好的視覺體驗(yàn)。煙霧現(xiàn)象由于其外表并非光滑的表面,十分不規(guī)則,而且隨著時間的改變而不斷地變化,這使得煙霧的模擬具有一定的挑戰(zhàn)性。同時,在使用基于物理的方法來模擬煙霧流體時,巨大的計算量往往成為提高模擬速度的瓶頸,因此如何快速有效地進(jìn)行模擬具有十分重要的意義。

在早期的時候,受到計算機(jī)軟硬件條件的限制,人們使用簡單的數(shù)學(xué)模型來對各種流體進(jìn)行模擬,由于這些模型并不能真正的表現(xiàn)出流體的運(yùn)動規(guī)律,只能說是形似而神不似。隨后,人們又開始利用粒子系統(tǒng)、紋理映射等方法來實(shí)現(xiàn)流體的模擬,但是隨著影視特效、游戲效果對真實(shí)感的要求的提高以及科學(xué)研究的需要,這些傳統(tǒng)的方法越來越難以勝任。此時基于物理的模擬由于其真實(shí)地反映了流體的運(yùn)動規(guī)律,在模擬效果更加逼真的同時又可以表現(xiàn)出流體運(yùn)動過程中豐富的細(xì)節(jié),從而逐漸成為流體模擬研究的熱點(diǎn)。近年來,隨著虛擬現(xiàn)實(shí)、電腦游戲等行業(yè)的興起,當(dāng)前的流體模擬在實(shí)時性方面已經(jīng)難以適應(yīng)它們的要求,如何提高流體模擬的實(shí)時性,已成為一個亟需解決的問題。

渦方法作為一類重要的數(shù)值計算方法,因其計算中不需要計算網(wǎng)格且適合于數(shù)值分析大雷諾數(shù)流場,在計算過程中數(shù)值擴(kuò)展很小等優(yōu)點(diǎn)而受到人們的重視。渦方法以渦量動力學(xué)方程為基礎(chǔ),將速度的渦量場離散成渦元,然后把渦元當(dāng)作粒子,利用拉格朗日法求解渦量動力學(xué)方程。渦方法是一種在研究大雷諾數(shù)流動中極為有效的數(shù)值方法。它在展現(xiàn)湍流豐富的細(xì)節(jié)上具有出色的表現(xiàn),而且沒有其他方法所帶有的數(shù)值擴(kuò)散或是投影有關(guān)的耗散等缺陷,同時由于渦旋在視覺上的重要性,許多圖形學(xué)研究者紛紛采用渦方法進(jìn)行流體模擬。

在渦方法求解速度的過程中,將其抽象成一個個渦粒子,這些渦粒子之間不斷地相互作用,需要求解這些渦粒子之間的相互作用力。由此便可歸結(jié)為n體問題的求解。n體問題模擬在數(shù)值上近似地表示一個多體系統(tǒng)的演化過程,該系統(tǒng)中的每一個體都持續(xù)地與所有其他的體相互作用。一個相似的例子是天體物理學(xué)仿真,在該仿真中,每個體代表一個星系或者一個獨(dú)立的行星,各個體之間通過萬有引力相互吸引。在很多其他的計算機(jī)科學(xué)問題中也會出現(xiàn)n體仿真,例如,蛋白質(zhì)折疊研究就使用n體仿真計算靜電和范德華力。其他使用n體仿真的例子還有湍流流場仿真與全局光照計算等計算機(jī)圖形學(xué)中的問題。

n體問題可以準(zhǔn)確地描述如下:在一定的物理空間中,分布有一定數(shù)量的粒子,每對粒子間都存在相互作用(如萬有引力、庫侖力等)。他們初始的速度和位置是確定的,每隔一定的時間步,由于粒子間的作用,需要更新粒子的速度和位置。更新給定的粒子的速度和位移的計算很簡單,就是把另外n-1個粒子對它作用的結(jié)果疊加起來,但這導(dǎo)致了每一時間步o(n2)的計算量。

可見,在渦粒子方法中應(yīng)用n體問題時,具有兩個重要的特征:第一是計算規(guī)模大,因?yàn)榘舜罅康牡臏u粒子,粒子的規(guī)模大到數(shù)百萬、千萬。由于在系統(tǒng)中任意的兩個粒子間都存在著作用,因此直接就按粒子間的相互作用的量級就是o(n2)。第二,系統(tǒng)是動態(tài)變化的。為了反映系統(tǒng)的實(shí)時變化,要求時間步長需要足夠小。這兩個特征決定了計算機(jī)模擬時巨大的計算量,這對于任何高性能的單臺計算機(jī)來說都是一個很難突破的瓶頸。

以上所提到的n體仿真方法是一種直接方法,它計算n個體之間所有成對的相互作用。這是一種相對簡單的方法,但由于這種方法具有o(n2)的計算復(fù)雜度,因此在大系統(tǒng)的仿真中通常不能單獨(dú)使用它。由此,便衍生出了一系列在大系統(tǒng)中的n體求和算法,這種形式的快速n體算法包括barnes-hutch方法(bh)[1]、快速多級方法(fmm)[2][3],以及粒子網(wǎng)格(pm)方法[4][5]。

本發(fā)明的參考文獻(xiàn)如下:

[1]barnes,j.,andp.hut.1986.“ahierarchicalo(nlogn)forcecalculationalgorithm.”nature324。

[2]greengard,l.1987.therapidevaluationofpotentialfieldsinparticlesystems.acmpress。

[3]greengard,leslief.,andjingfanghuang.2002.“anewversionofthefastmultipolemethodforscreenedcoulombinteractionsinthreedimensions.”journalofcomputationalphysics180(2),pp.642–658。

[4]hockney,r.,andj.eastwood.1981.computersimulationusingparticles.mcgraw-hill。

[5]darden,t.,d.york,andl.pederson.1993.“particlemeshewald:annlog(n)methodforewaldsumsinlargesystems.”journalofchemicalphysics98(12),p.10089。



技術(shù)實(shí)現(xiàn)要素:

為解決現(xiàn)有技術(shù)存在的上述問題,本發(fā)明要設(shè)計一種計算量少且計算速度快的快速實(shí)時煙霧模擬算法。

為了實(shí)現(xiàn)上述目的,本發(fā)明技術(shù)方案如下:一種快速實(shí)時煙霧模擬算法,包括以下步驟:

a、設(shè)共有n個粒子,且已知第j個粒子的質(zhì)量ρj、位移xj和速度vj;

b、根據(jù)粒子位置,在整個計算空間創(chuàng)建八叉樹;所述的八叉樹為自適應(yīng)的八叉樹;

c、從下至上遍歷八叉樹,計算八叉樹中每一節(jié)點(diǎn)的總質(zhì)量ρ和中心質(zhì)量ρc,公式如下:

n為粒子個數(shù),ρj為第j個粒子質(zhì)量,vj為第j個粒子速度,x為當(dāng)前位置,xj為第j個粒子的位置;

d、每一個粒子從上至下遍歷八叉樹來計算它的受力,假定八叉樹三維空間各邊長為d,若粒子距離某一節(jié)點(diǎn)大于該邊長的一半d/2,則利用總質(zhì)量和質(zhì)量中心進(jìn)行計算,否則遍歷它的子節(jié)點(diǎn);此時的速度通過以下公式來計算:

v(xj)為第j個粒子的速度,ρc為中心質(zhì)量,x為當(dāng)前位置,xj為第j個粒子的位置,r為粒子半徑,ω(x)為粒子所攜帶的渦量;

e、更新粒子的速度和位移,轉(zhuǎn)到步驟b繼續(xù)迭代,獲得實(shí)時的煙霧效果。

本發(fā)明基于以下理論:如果粒子相互間作用力的大小隨著距離的增大下降很快時,當(dāng)一組粒子距離被作用的粒子足夠遠(yuǎn)時,它們的作用可以近似地用一個等價粒子來代替。

本發(fā)明用樹形數(shù)據(jù)結(jié)構(gòu)來代表對整個物理空間劃分形成的粒子集,在給定的精度范圍內(nèi)來近似粒子和粒子集間的相互作用。在本發(fā)明中,整個物理空間被遞歸地分成不同層次的單元格,在三維空間就是八叉樹,二維空間中是四叉樹。在最細(xì)級別的單元(分級樹的葉子)包含了粒子,較高層次的單元(節(jié)點(diǎn))代表了以它們?yōu)楦淖訕渲辛W拥募?。?chuàng)建過程大致為:首先從根節(jié)點(diǎn)開始,根節(jié)點(diǎn)代表了整個物理空間,包含了所有的粒子,將物理空間遞歸的分成8個(三維)子節(jié)點(diǎn)和4個(二維)子節(jié)點(diǎn)來形成樹的每一層次,直到最細(xì)的單元為止。

與現(xiàn)有技術(shù)比,本發(fā)明的有益效果如下:

1、本發(fā)明通過自適應(yīng)八叉樹算法,成功地將煙霧的渦粒子計算復(fù)雜度從o(n2)降至o(nlogn)量級,有效地減少了計算量,加快了求解速度。

2、本發(fā)明在104量級的粒子數(shù)情況下,計算速度比單純的直接求和計算大約提高了1.85倍。在更多的粒子數(shù)的情況,計算速度會比直接求和更快。

附圖說明

圖1是本發(fā)明所使用的自適應(yīng)八叉樹二維結(jié)構(gòu)圖。

圖2是本發(fā)明所使用的自適應(yīng)八叉樹樹型結(jié)構(gòu)圖。

圖3是本發(fā)明的求和計算示意圖中的根據(jù)樹節(jié)點(diǎn)自上而下求和。

圖4是本發(fā)明的求和計算示意圖中的求和區(qū)域(深色區(qū)域?yàn)榻虆^(qū)域,可以采用直接求和的方式,空白區(qū)域?yàn)檫h(yuǎn)程區(qū)域,求和是去其總質(zhì)量和質(zhì)量中心)。

具體實(shí)施方式

本發(fā)明中,遠(yuǎn)程一組粒子的作用通常用它們的總質(zhì)量和中心質(zhì)量來近似,并且在八叉樹的最細(xì)層次上每個單元格最多有一個粒子。在計算粒子的受力時,粒子從八叉樹的根節(jié)點(diǎn)開始遍歷八叉樹,如果節(jié)點(diǎn)和粒子間的距離大于空間邊長的一半d/2的判據(jù),則利用節(jié)點(diǎn)的總質(zhì)量來計算對粒子的作用,否則就需要細(xì)分到更細(xì)的層次來進(jìn)一步比較。這樣,可以將粒子間作用的計算時間減少到o(nlogn)量級。計算粒子間受力的精確度可以通過采用高階的近似,而不是一階的質(zhì)量中心來代替。

一種快速實(shí)時煙霧模擬算法,包括以下步驟:

a、初始化粒子的質(zhì)量、位移和速度。如果節(jié)點(diǎn)不包含渦粒子,則把新的渦粒子放入其中。如果節(jié)點(diǎn)是一個內(nèi)部節(jié)點(diǎn),就更新總質(zhì)量和質(zhì)心。遞歸地將物體插入到圖1中分叉中的某個。

b、根據(jù)粒子位置,在整個計算空間創(chuàng)建八叉樹。所述的八叉樹為自適應(yīng)的八叉樹,如圖2所示,如果節(jié)點(diǎn)是一個外部節(jié)點(diǎn),它包含有一個渦粒子,那么也就是說在一個相同的區(qū)域里包含有兩個渦粒子和。那么就把這個區(qū)域進(jìn)一步劃分成四個子區(qū)域。然后遞歸地插入渦粒子的和到對應(yīng)的分叉中。因?yàn)闇u粒子的和可能仍然位于相同的子區(qū)域中,因此在一個單獨(dú)的插入操作中可能涉及多個子區(qū)域劃分。最終更新節(jié)點(diǎn)的質(zhì)心和總質(zhì)量。

c、從下至上遍歷八叉樹,如圖3所示,計算八叉樹中每一節(jié)點(diǎn)的總質(zhì)量和質(zhì)量中心(或更高階近似)。

d、每一個渦粒子從上至下遍歷八叉樹來計算它的受力,如圖4所示,假定八叉樹三維空間各邊長為d,若粒子距離某一節(jié)點(diǎn)大于該邊長的一半d/2,則為遠(yuǎn)程區(qū)域,在圖中為空白區(qū)域,利用總質(zhì)量和質(zhì)量中心(或更高階近似)進(jìn)行計算,否則,則為近程區(qū)域,在圖中為深色區(qū)域,需要遍歷它的子節(jié)點(diǎn),并采用直接求和的方式來計算受力。如果當(dāng)前節(jié)點(diǎn)是一個外部節(jié)點(diǎn),計算當(dāng)前節(jié)點(diǎn)施加在物體上的力,并將其加到合力上。否則,計算粒子之間的距離x-xj與邊長d的商(x-xj)/d的值。

e、如果將這個內(nèi)部節(jié)點(diǎn)看成一個單獨(dú)的物體,則計算其施加在物體上的力,并將其加到的合力上,否則在當(dāng)前節(jié)點(diǎn)的每個孩子節(jié)點(diǎn)上遞歸地執(zhí)行上述步驟。該過程結(jié)束后,轉(zhuǎn)到步驟b繼續(xù)進(jìn)行迭代更新至下一幀,最終獲得煙霧的實(shí)時效果。

本發(fā)明不局限于本實(shí)施例,任何在本發(fā)明披露的技術(shù)范圍內(nèi)的等同構(gòu)思或者改變,均列為本發(fā)明的保護(hù)范圍。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1