王 彪,胡小梅,俞 濤
(上海大學 上海市機械自動化與機器人重點實驗室;機電工程與自動化學院,上海 200072)
近年來,計算機游戲和動畫等在各種領(lǐng)域的不斷發(fā)展,要求對動態(tài)自然景物,如云、霧、地表灰塵、煙、火、水等的運動,進行模擬,這已經(jīng)成為計算機圖形學領(lǐng)域的研究熱點。由于云、霧、地表灰塵、煙、火、水等,具有不規(guī)則的幾何形狀,并且其運動還具有不確定性,容易受到周圍環(huán)境的影響而改變,動態(tài)性和隨機性非常強,進而導致很難用常用的幾何建模和數(shù)學建模的方法,來對其進行有效的模擬[1]。
1983年由W.T.Reeves等首次系統(tǒng)地提出了粒子系統(tǒng)方法[2]。此方法被認為是迄今為止模擬不規(guī)則模糊物體,最為成功的一種圖形生成算法。在計算機虛擬仿真領(lǐng)域,應用粒子系統(tǒng)模擬不規(guī)則模糊物體的方法,已經(jīng)得到了廣泛應用。
本文通過對粒子系統(tǒng)的闡述、研究現(xiàn)狀、建模及仿真以及對模型的優(yōu)化,有了一個詳細地描述,從而使大家對粒子系統(tǒng)的研究現(xiàn)狀,有了更為直接的了解,最后通過分析現(xiàn)有粒子系統(tǒng)研究現(xiàn)狀的不足,對于粒子系統(tǒng)的進一步研究,提出了自己的看法。
一個粒子系統(tǒng),是由大量稱為粒子的簡單圖元構(gòu)成的,其基本思想是把物體定義為由成千上萬個運動的、不規(guī)則的、隨機分布的粒子組成的粒子集,每個粒子都有一組屬性,如形狀、大小、顏色、透明度、位置、速度和生命期等。而一個粒子需要被賦予哪些屬性,主要取決于被模擬對象。
粒子系統(tǒng)從研究現(xiàn)狀上,可以大致分為4類[3]:
(1)隨機粒子系統(tǒng)。主要通過可控制的隨機過程,控制粒子屬性的變化。1983年Reeves首次系統(tǒng)地提出了應用粒子系統(tǒng),模擬虛擬場景中不規(guī)則物體的方法,模擬出煙花綻放的過程,并在電影Star Trek 1中繪制了星系爆炸的場面。從那之后,人們對粒子系統(tǒng)使用范圍進行了進一步的拓展,使得粒子系統(tǒng)能夠模擬火焰、煙花[4~5]、煙霧[6~10]、飛機飛行的特效[11]、噴泉,甚至是水中航行的船只的航行軌跡[12~13]。
(2)流體粒子系統(tǒng)。粒子的運動軌跡受流體力學的影響。比如,模擬地下煤礦礦井內(nèi)氣流,可以描述礦井發(fā)生火災時火焰的擴散情況[14],類似的還有陶瓷輥道窯內(nèi)進行陶瓷燒制時火焰軌跡的建模[15~16]。粒子系統(tǒng)也能夠?qū)σ后w進行建模,Liu Xue-mei用粒子系統(tǒng)模擬外科手術(shù)出血情況[17]。粒子系統(tǒng)甚至能夠在高密度、高粘度、高壓力、高溫度等極端的條件下,模擬出了巖漿流動的情況[18]。
(3)方向粒子系統(tǒng)??紤]粒子間的相互影響,粒子除了具有速度和位置等動態(tài)屬性外,還必須有方向?qū)傩?。這樣的粒子系統(tǒng),主要模擬織物、可變形物體和剛體等。1987年,Reynolds把粒子系統(tǒng)看成是一組相互影響的粒子組成的,每一個粒子的具體位置,受與其相關(guān)粒子的影響。在這個理論基礎(chǔ)上Olaf Etzmuss通過對連續(xù)介質(zhì)的小改動,得到了耦合粒子系統(tǒng),這個粒子系統(tǒng)中的粒子是相互關(guān)聯(lián)的,并用以此來模擬變形的物體[19]。Bernhard Eberhardt,基于耦合粒子系統(tǒng)系統(tǒng)理論,對紡織物進行了建模。同時,Szeliski和Richard提出基于粒子系統(tǒng)的模擬彈性表面的方法,也可以對紡織物進行建模。
(4)結(jié)構(gòu)化粒子系統(tǒng),主要用來模擬具有一定結(jié)構(gòu)的物體或現(xiàn)象。1985年,Reeves發(fā)展了粒子系統(tǒng),他們用“Volume filling”基本單元,去生成隨時間改變形狀但又基本保持不變的實體,如隨風飄動的花草樹葉[20]。袁琪在2007年利用粒子系統(tǒng)虛擬作物器官[21]。Rhys Goldstein在生物學醫(yī)藥領(lǐng)域,用粒子系統(tǒng)來模擬神經(jīng)元末梢,并且取得了很好的效果[22]。法國的Eric Galin用粒子系統(tǒng)模擬出吊燈、雕塑品等具有隱性曲面造型的物體。
粒子系統(tǒng)是一個動態(tài)的模型,粒子在系統(tǒng)中要經(jīng)過“產(chǎn)生”、“運動”和“消亡”這3個階段。隨著時間的推移,系統(tǒng)中舊的粒子不斷消失,新的粒子不斷加入。系統(tǒng)中“存活”的粒子,其位置及生命值亦隨時間變化而變化,其正常運行的關(guān)鍵,是確定粒子的初始屬性、粒子的變化規(guī)律和繪制等因素[23]。
在粒子生命期的每一刻,都要完成以下5步工作[24]:
(1)粒子源產(chǎn)生新粒子,并賦予粒子屬性后加入系統(tǒng)中;
(2)根據(jù)粒子的動態(tài)屬性,對粒子進行移動和變換,同時更新粒子屬性;
(3)判斷粒子的生命值;
(4)刪除那些已經(jīng)超過其生命周期的粒子;
(5)繪制并顯示由有生命的粒子組成的圖形。
粒子的產(chǎn)生,采用隨機過程函數(shù)來控制。每一幀產(chǎn)生的粒子數(shù)目,直接影響到畫面的效果,常使用下面兩種方法來進行定義[25]:
(1)第fn幀產(chǎn)生新粒子數(shù)目NParts(fn)定義為
其中,
Rand是在區(qū)間為[-1.0,1.0]上均勻分布的隨機函數(shù);
MeanPartsf是新產(chǎn)生粒子的平均值;
VarPartsf是新產(chǎn)生粒子的方差。
(2)為了有效控制粒子的層次細節(jié)和繪制效率,還可以根據(jù)單位屏幕面積所具有的平均粒子數(shù)和方差,來確定進入粒子系統(tǒng)的粒子數(shù),則式(1)可以修改為
其中,
MeanPartssaf和VarPartssaf分別表示第f幀每單位屏幕面積上產(chǎn)生粒子數(shù)目的平均值和方差,
ScreenArea是粒子系統(tǒng)的屏幕面積。
在式(2)中,能夠有效地避免用大量粒子來模擬在屏幕上投影面積很小的景物,因而大大提高了算法的繪制效率。
為了能夠使粒子系統(tǒng)在強度上增加或者減少,設計者一般采用線性函數(shù)公式,使得每一時刻每幀中平均粒子的數(shù)量不同
或者
其中,
f是現(xiàn)在的幀數(shù);
f0是粒子系統(tǒng)中最初的幀數(shù);
InitialMeanParts是粒子系統(tǒng)最初幀中的平均粒子數(shù);
DeltaMeanPartssa是粒子數(shù)的變化率。
因而,為了控制粒子系統(tǒng)中粒子的產(chǎn)生,設計者只 要 指 定 f0或 者 InitialMeanParts,DeltaMeanParts,Varparts 或 者 InitialMeanPartssa,DeltaMeanPartssa,Varpartssa的參數(shù)即可。
任何新產(chǎn)生的粒子,都必須賦予它們一定的初始屬性。粒子的初始屬性,可以進行如下描述:
(1)初始位置;
(2)初始速度(速率和方向);
(3)初始大??;
(4)初始顏色;
(5)初始透明度;
(6)形狀;
(7)生命期。
粒子一旦產(chǎn)生,并具有一定的初始屬性之后,它們便開始運動。粒子需要在初始運動屬性的基礎(chǔ)上,推導出其他時刻的運動屬性。
粒子繪制的技術(shù)主要有
(1)點粒子的繪制;
(2)面粒子的繪制;
(3)線性粒子的繪制;
(4)隨機形狀粒子的繪制。
實現(xiàn)粒子渲染的手段,主要采用光照、陰影、濃淡以及消隱處理技術(shù)。有些情況下,粒子被認為是光源,此時可以忽略消隱,簡化濃淡處理,只以粒子的灰度或者顏色,來加亮相應的象素。
當粒子一旦產(chǎn)生之后,就被賦予了生存期,一般都是用幀來計算粒子的生存期,其隨著粒子的運動而遞減。當遞減到零時,粒子“死亡”。此時,當從系統(tǒng)中將該“死亡”粒子刪除。
在實際的應用中,也可以采用其他的方式來度量粒子的死亡。例如,當粒子的顏色和透明度低于系統(tǒng)設定值,或者粒子的運動超出了規(guī)定的區(qū)域,這些情形都可以根據(jù)實際的要求,認為粒子已經(jīng)死亡[27]。
隨著圖像處理的硬件和軟件的發(fā)展,實現(xiàn)粒子系統(tǒng)的技術(shù)也獲得了進一步的發(fā)展,主要反映在處理器、開發(fā)平臺、渲染軟件和數(shù)據(jù)存儲等方面。
(1)影響粒子系統(tǒng)實時性能的瓶頸,就CPU的通訊以及CPU的并行處理能力,而在最新計算機系統(tǒng)中,由于實現(xiàn)了CPU和GPU的合理分工,數(shù)據(jù)和指令存儲交換的場所也由系統(tǒng)內(nèi)存,擴展至GPU顯存,同時數(shù)據(jù)交換總線發(fā)展到PCI Express總線,并利用GPU的多通道處理性能,可以很方便地實現(xiàn)大量的并行計算,這使得計算機系統(tǒng)的實時處理能力,大幅度提高[28]。
(2)粒子系統(tǒng)進行開發(fā)的通用平臺是Visual Studio[29~30],也有專門的仿真可視化平臺,比如Vega Prime、3D Studio Max[31]。
(3)粒子系統(tǒng)中的粒子渲染的工具很多,高速OpenGL渲染引擎,具有相當?shù)撵`活性和可擴展性[32~33],能夠滿足在普通PC機上模擬不規(guī)則的自然景物的需求。其次是DirectDraw,DirectDraw允許用戶直接訪問圖形硬件,管理用于顯示的內(nèi)存,提供高速圖形和頁面切換動畫。
(4)吳繼承設計出粒子系統(tǒng)的API,采用合理的數(shù)據(jù)結(jié)構(gòu),設計了一套高效的粒子生成、管理方法,并采用高速OpenGL渲染引擎,使用了粒子組管理粒子,使之能夠滿足在普通PC機上模擬大數(shù)據(jù)量動態(tài)場景的需求[34]。
粒子系統(tǒng)涉及的計算量相當龐大和復雜,所以粒子系統(tǒng)優(yōu)化研究也越來越受重視,因為這樣可以節(jié)省計算資源,提高計算效率。一般來說有以下幾種優(yōu)化的技術(shù):
粒子系統(tǒng)運行的最終結(jié)果,是在屏幕上繪制每個粒子形態(tài)這個過程,需要一定的時間,影響了系統(tǒng)的實時性。繪制效率優(yōu)化,就是采用特定方法,減少粒子繪制時間,進而提高速度。
優(yōu)化包括系統(tǒng)級和代碼級兩種:系統(tǒng)級主要采用高速緩存保存編譯過的繪圖代碼,使用時不需再次編譯;代碼級主要基于人眼分辨率限制,少繪制或不繪制人眼不敏感或看不到的區(qū)域。
繪制效率優(yōu)繪制效率的優(yōu)化包括為:
(1)顯示列表;
(2)公告板技術(shù);
(3)幾何形體優(yōu)化;
(4)多級粒子系統(tǒng)。
粒子系統(tǒng)運行過程中需要大量計算,如碰撞檢測、速度調(diào)整、內(nèi)存分配、算術(shù)運算、循環(huán)判斷等。這些計算消耗系統(tǒng)資源,間接表示時間復雜度大小,對系統(tǒng)實時性影響比較大,處理不好將嚴重影響系統(tǒng)速度。
在計算復雜度的優(yōu)化方面主要有:
(1)碰撞檢測與處理優(yōu)化;
(2)存儲方式優(yōu)化;
(3)運動過程優(yōu)化;
(4)線性表;
(5)局部力場。
粒子數(shù)量優(yōu)化,就是在不影響系統(tǒng)真實感的前提下,盡可能地減少粒子數(shù)量,減少空間復雜度。粒子數(shù)量的優(yōu)化我們主要采用的技術(shù)包括:
(1)結(jié)構(gòu)化粒子;
(2)LOD技術(shù);
(3)偽粒子系統(tǒng)。
粒子系統(tǒng)可以在各種各樣的環(huán)境下,對很多模糊的或者是隱性曲面、彈性曲面的物體,進行建模仿真。目前基于粒子系統(tǒng)仿真研究,主要局限于計算機圖形的模擬,雖然在粒子仿真的圖形中加入了重力和風力的作用,但這種外力并不是使用傳統(tǒng)實驗方法計算出來的,而是為了烘托模擬出來的圖像效果,是用外力的。
另外,由于對自然現(xiàn)象等大規(guī)模場景進行實時仿真渲染,需要高性能設備支撐,因此在實際仿真時,往往以犧牲場景的真實感作為代價。
為了使基于粒子系統(tǒng)的仿真,在更大的范圍內(nèi)進行應用,在粒子系統(tǒng)建模時,考慮加入一些特定環(huán)境下的空氣動力學的影響因素,結(jié)合風力和重力的專業(yè)計算數(shù)據(jù),建立相應的逼近函數(shù),作用于粒子系統(tǒng)仿真中,使得仿真結(jié)果更具真實性。
為了解決真實感仿真與實時仿真的矛盾,可以使用并行仿真計算方法,解決單個設備計算能力和渲染能力不足,使得粒子系統(tǒng)動態(tài)演變過程實時可視化仿真成為可能。
[1]龐 新,王相海.基于OpenGL的禮花粒子系統(tǒng)模擬研究[J].計算機科學,2008,35(5):216-219.
[2]Reeves W T.Particle System-a Technique for Modeling a Class of Fuzzy Object[J].ACM Computer Graphics(SIGGRAPH’83)(S0730-0301),1983,17(3):359-376.
[3]徐陽東.基于粒子系統(tǒng)不規(guī)則景物建模研究[D].濟南:山東師范大學,2009.
[4]He Xiao,Chunlin He.Real-time Simulation of Fireworks Based on GPU and Particle System[C].ETCS 2009,United States:IEEE Computer Society,2009,(1):14-17.
[5]Shihui Zhang.Fireworks Simulation Based on Particle System[C].2009 2nd International Conference on Information and Computing Science,United States:IEEE Computer Society,2009,(1):187-190.
[6]ZHOU Shumin,SUN Yamin,LU Ling,CHEN Zhifeng.Fire Simulation Model Based on Particle System and Its Application in Virtual Reality[C].Proceedings 16th International Conference on Artificial Reality and Telexistence-Workshops,United States:IEEE Computer Society,2006,642-64.
[7]Zhou Shumin,Zhang Tiantai,Qin hua.The Fire Emergency Response Plan Simulation Based on Particle System[C].Proceedings-The 1st International Conference on Intelligent Networks and Intelligent Systems,United States:IEEE Computer Society,2008,384-387.
[8]張海山,吳家鑄.基于粒子系統(tǒng)的火箭發(fā)射煙霧特效實現(xiàn)[J].微計算機信息(管控一體化卷),2008,24(12-3):248-249.
[9]趙春霞,張 艷,戰(zhàn)守義.基于粒子系統(tǒng)方法的三維火焰模擬[J].計算機工程與應用,2004,40(28):73-75.
[10]Neng Wen Zhuo,Yunbo Rao.Real Time Dense Smoke Simulation Based Particle System Proceedings[C].2nd 2008 International Symposium on Intelligent Information Technology Application Workshop,United States:IEEE Computer Society,2008,809-813.
[11]Junli Chen,Weifeng Xu,Bing Huang,Wanggen Wan.Simulation of Flight Special Effects Based on Particle System[C].Proceedings of 2010 International Conference on Audio,Language and Image Processing,United States:IEEE Computer Society,2010,333-337.
[12]Mu-Yuan Wang,NaeyaoZhang,Xin-Yu Du.Real-time animation of CAD-MF system using simplified particle system and fast translation algorithms[C].Proceedings of 2002 International Conference on Machine Learning and Cybernetics,United States:IEEE Computer Society,2002,1614-1618.
[13]趙 欣,李鳳霞,戰(zhàn)守義,陳宏敏.基于粒子系統(tǒng)實現(xiàn)船舶航跡仿真的加速方法[J].大連海事大學學報,2008,34(1):54-57.
[14]Qiu-qin LU,Guang-qiu HUANG,Ya-fei GE.Simulation of Fire Spreading in Underground Mine Based on Cellular Automata and Particle System[C].2009 International Conference on Industrial Mechatronics and Automation,United States:IEEE Computer Society,2009,180-183.
[15]Zhihua Wei,Weixia Shi,Zhen Li,Wenbi Rao.Dynamic Flame Simulation of Ceramic Roller Kiln Based on Particle System[C].11th IEEE International Conference on Computer-Aided Design and Computer Graphics,United States:IEEE Computer Society,2009,268-273.
[16]楊 青,杜淑幸.基于粒子系統(tǒng)的動態(tài)模擬真實感研究與實現(xiàn)[D].西安:西安電子科技大學,2010.
[17]Liu Xue-mei,Hao Ai-min,Zhao Qin-ping,Liu Xue-mei,Chen Chun-yan.Bleeding Simulation Based Particle System for Surgical Simulator[C].2009 Pacific-Asia Conference on Knowledge Engineering and Software Engineering,United States:IEEE Computer Society,2009:151-154.
[18]Emir M Husni,Khairul Hamdi,Tunggal Mardiono.Particle System Implementation Using smoothed Particle Hydrodynamics(SPH)For Lava Flow Simulation[C].Proceedings of the 2009 International Conference on Electrical Engineering and Informatics,United States:IEEE Computer Society,2009,216-221.
[19]Olaf Etzmuss,Joachim Gross and Wolfgang Strasser.Deriving a Particle System from Continuum Mechanics for the Animation of Deformable Objects[J].IEEE Transactions On Visualization And Computer Graphics,2003,9(4):538-550.
[20]Revees W T,Blau.Approximate and probabilistic algorithms for shading and render structured particle system.Computer Graphics[J].1985,19(3):313-322.
[21]袁 琪,周淑秋,郭新宇.粒子系統(tǒng)在虛擬作物生長中的應用研究[J].微計算機信息(管控一體化卷),2007,23(21):262-264.
[22]Rhys Goldstein and Gabriel Wainer.Simulation of a Presynaptic Nerve Terminal with a Tethered Particle System Mode[C].proceedings of the 31st Annual International Conference of the IEEE Engineering in Medicine and Biology Society:Engineering the Future of Biomedicine,United States:IEEE Computer Society,2009,3877-3880.
[23]汪繼文,張妍妍,陸和軍.一種基于改進的粒子系統(tǒng)的煙花模擬[J].電腦知識與技術(shù),2009,(12):9805-9807.
[24]劉巧紅,單 貴.粒子系統(tǒng)在虛擬校園中的應用研究[J].計算機技術(shù)與發(fā)展,2011,(2):246-249.
[25]石祥濱,田蘇昕,王 越.一種基于感知的大規(guī)模場景粒子系統(tǒng)繪制方法[J].沈陽航空工業(yè)學院學報,2009,26(3):49-53.
[26]張 芹,吳慧中,張 健.基于粒子系統(tǒng)的建模方法研究[J].計算機科學,2003,30(8):144-146.
[27]梁 速,朱晟仁.淺析粒子系統(tǒng)及其在游戲中的應用[J].電腦知識與技術(shù),2007,(2):1110-1111.
[28]許 楠,郝愛民,王莉莉.一種基于GPU的粒子系統(tǒng)[J].計算機工程與應用,2006,(19):77-79.
[29]汪繼文,鄭 鋒.基于OpenGL與粒子系統(tǒng)的噴泉模擬實現(xiàn)[J].計算機技術(shù)與發(fā)展,2011,21(8):161-164.
[30]雷 曉,胡 倩.基于Direct3D的粒子系統(tǒng)設計[J].微計算機信息(觀測自動化),2010,26(11-1):152-158
[31]況 揚.3D Studio MAX中粒子系統(tǒng)的研究[J].科技廣場,2009,(3):112-113.
[32]羅 勇,文建國.面向?qū)ο蟮耐ㄓ昧W酉到y(tǒng)設計及其在火焰 模 擬 中 的 應 用 [J].科 學 技 術(shù) 與 工 程 ,2008,(15):4174-4178.
[33]羅 軍,王 玲.基于GPU的粒子系統(tǒng)的實現(xiàn)技術(shù)[J].微計算機信息,2008,24(2-1):273-275.
[34]吳繼承,江 南.虛擬現(xiàn)實中粒子系統(tǒng)的設計與應用[J].計算機仿真,21(11):2004,137-140.
[35]王功明,郭新宇,趙春江,王紀華.粒子系統(tǒng)的優(yōu)化技術(shù)研究[J].計算機應用研究,2008,25(2):495-500.