《電子技術應用》
您所在的位置:首頁 > 其他 > 设计应用 > 面向对象的通用参数化粒子系统架构设计
面向对象的通用参数化粒子系统架构设计
王静秋
摘要: 结合面向对象的分析和设计方法,提出了面向对象的、参数化的通用粒子系统模型和架构设计。
Abstract:
Key words :

  摘  要: 結合面向對象的分析和設計方法,提出了面向對象的、參數化的通用粒子系統(tǒng)模型和架構設計。
  關鍵詞: 粒子系統(tǒng)  自然模擬  面向對象  參數化

   自1983年W.T.Reeves將粒子系統(tǒng)引入到計算機圖形領域后,國內外有關粒子系統(tǒng)的研究和應用已經比較廣泛。粒子系統(tǒng)比較適合對模糊自然景物的模擬,如云、雨、雪、閃電、火焰、爆炸等。
  粒子系統(tǒng)基本思想包括:自然景物可以認為由有限的、離散的空間粒子(particle)組成;粒子具有一些自然屬性(空間位置、速度、加速度、亮度、溫度等);粒子是有一定壽命的,具有產生、變化、滅亡的過程;在不同應用中,粒子的屬性變化大多遵循一定的規(guī)律,這種規(guī)律可以采用準確或近似的數學模型來描述。
    以往的研究通常是針對某種具體的模擬對象進行基于粒子系統(tǒng)方法的建模及解決計算機模擬實現中的算法或性能問題。本文通過研究粒子系統(tǒng)的原理,分析一些典型粒子系統(tǒng)應用的建模特點,提出一種通用的、參數化的粒子系統(tǒng)模型,并采用面向對象的設計方法給出了架構分析設計;并給出了用在解決真實感計算問題上的輕量級粒子的設計方法。
1  面向對象的參數化粒子系統(tǒng)建模
1.1 粒子、粒子系統(tǒng)、粒子系統(tǒng)應用

  在粒子系統(tǒng)理論中,被模擬的對象由空間中離散的粒子構成。粒子可以是空間中的一個點,也可以是一個有特定形狀的圖形單元。
  粒子系統(tǒng)應用(Particle System Aplication)是指采用粒子系統(tǒng)的方法,對模糊自然景物或對象進行的計算機圖形模擬應用。在一個粒子系統(tǒng)應用中往往包含了一個或多個粒子系統(tǒng)。例如瀑布模擬,整個系統(tǒng)可以分成二個粒子系統(tǒng)。其中一個模擬下瀉的瀑布(瀑布系統(tǒng)),另一個用來模擬瀑布下水花四濺、漣漪遍布的水面(水面系統(tǒng))。這二個粒子系統(tǒng)具有獨立性,例如它們所模擬的粒子是不同的,粒子屬性的變化規(guī)律是不同的,其粒子的圖形顯示也是不同的;同時這二個粒子系統(tǒng)又存在一些關聯(lián)性,如瀑布系統(tǒng)中的粒子在到達水面后將從瀑布系統(tǒng)中消失(死亡),但同時給水面系統(tǒng)增加了一個新的粒子。
1.2 粒子的屬性
  在粒子系統(tǒng)中,粒子一般具有空間位置、速度、加速度、大小尺寸、顏色、亮度、熱度、形狀、生存期等屬性。例如在采用粒子系統(tǒng)進行雪景模擬中,粒子就代表了一個實際的雪花,粒子的屬性就模擬了一個真實雪花的物理屬性,其屬性的變化模擬了真實雪花的變化。
1.3 粒子的產生
  在粒子系統(tǒng)中,粒子是不斷產生、變化和滅亡的。在某個時刻(Ti),新產生的粒子數量可以用以下公式描述:
   NP(Ti)=MNP(Ti)+Rand( )*VNP(Ti)
  其中:MNP(Ti)為在Ti時刻新產生粒子數目的平均值;VNP(Ti)為在Ti時刻新產生粒子數目的方差;NP(Ti)為在Ti時刻新產生的粒子數目;Rand( )為在[-1.0,1.0]上均勻分布的隨機函數。
平均值和方差可以是常量,也可以是基于Ti的變量。
  在粒子系統(tǒng)中,對于新產生的粒子,其初始屬性可以根據不同的模擬對象特點進行賦值。例如可以按以下公式賦值:
  Property(Ti)=MProperty(Ti)+Rand( *VProperty(Ti)
  公式中:MProperty是該屬性的均值,VProperty是該屬性的方差。以雪花系統(tǒng)為例,粒子的初始位置可以將空間一個平面(或三維空間)作為基準,隨機分布。再例如煙花模擬中,煙花的各個粒子在某個時刻誕生在空間一個點(或者非常小的空間內),并且速度的絕對值和方向矢量可以用上述公式來表示。
1.4 粒子更新
  在自然景物模擬中,粒子的屬性將隨時間發(fā)生變化。變化的類型大致分為以下幾種:
  (1)力學作用。如重力、風力、浮力等,將對粒子的位置、速度、加速度等屬性產生影響。
  (2)熱作用。如自然冷卻、化學作用、熱傳遞等,將影響溫度、亮度、透明度等屬性。
  (3)形狀變化。如爆炸、分裂等,導致粒子增多或影響到粒子尺寸、形狀、質量等屬性。
對于力學作用,基本可以采用牛頓定律來描述。在具體應用中,根據實際情況還可以采用近似簡化的表示。例如在雨景、雪景的模擬中,模擬空間范圍時,可以認為粒子的下落在達到一定速度后,是按勻速運動的(VP(Ti)=VP(Ti-1))。
  對于熱能相關的變化,可以認為其爆炸、獲得能量、散熱的過程按不同的速率曲線進行。例如在焰火模擬中,有些粒子可以認為是瞬間充分燃燒,能量獲得最大值,然后按線性或非線性的散熱曲線冷卻。而有些粒子先在一個相對長的時間內逐漸獲得熱能,然后再按某種下降曲線冷卻(變暗)。對于通用的參數化粒子系統(tǒng), 就需要設計滿足不同需要的模型結構,在應用時只要通過參數選擇不同的熱能變化類型即可。
  對于形狀變化,往往涉及到新粒子的產生或消亡。例如焰火的爆炸,可以理解成一個粒子在消亡的同時有一批粒子產生并同時發(fā)生能量的變化。再如大片的雪花自然分成二片,意味著一個粒子的消失,二個新粒子的產生。
1.5 粒子死亡
  既然有粒子的產生和變化,必然就有粒子的消亡。
  粒子的消亡有以下幾種類型:
  (1)空間位置靜止。例如在雪景模擬的粒子系統(tǒng)中,當雪花降落到地面后,雪花的空間位置不再變化,此時它自身的視覺效果可以通過地面的其他方法來模擬,代表雪花的粒子就沒有存在的必要了。
  (2)視覺效果消亡。例如在煙火、火焰模擬的粒子系統(tǒng)中,粒子有速度、熱能、溫度。粒子在運動的過程中,不斷地散發(fā)熱能,其亮度因此也在變化。當其亮度小于一定的閾值時,雖然粒子可能還在空間運動,但相對其背景已經影響不到視覺模擬。在這種情況下,該粒子對模擬已經沒有價值,可以消亡。
  (3)生存期結束而消亡。有些粒子系統(tǒng)中,粒子有一個生存期屬性。在到達生存期后,粒子也就可以死亡。生存期條件的采用又分二種情況:一種是在物理模擬中,本身就存在比較嚴格的生存期條件,例如生物對象;另一類是在物理系統(tǒng)的建模中,抽象出一個生存期的屬性來作為一種簡化、相對準確的描述。例如在焰火模擬中,以定義生存期的方式來簡化模擬粒子的熱能變化、亮度變化、時間變化。
  (4)超出視界的消亡。因為考慮到粒子系統(tǒng)的用途,在粒子超出觀察范圍后,也可以消亡。
2  面向對象的參數化粒子系統(tǒng)架構
  通過對粒子系統(tǒng)的理論分析并考慮到不同粒子系統(tǒng)應用的特點,有可能建立一種比較通用的粒子系統(tǒng)模型。這個粒子系統(tǒng)模型首先要實現一個通用的架構,將粒子系統(tǒng)分割成各個獨立組件;其次要將粒子系統(tǒng)中常用到的結構、算法、組件實現參數化設計。這樣在系統(tǒng)基礎上,通過定制具體結構、算法、組件參數,滿足各類不同需求的粒子系統(tǒng)應用。
  結合面向對象的分析和設計方法,本文提出了這種通用參數化粒子系統(tǒng)模型和架構設計?;诖思軜嬁蓪崿F通用參數化粒子系統(tǒng)庫。
  系統(tǒng)架構如圖1所示,PartSystem表示一個完整的粒子系統(tǒng)(類)。PartSystem包含三大部分:PartManager(粒子數據管理器)、PartRender(粒子圖形渲染器)、 Container(粒子容器)。其中Container是用于存儲粒子數據,PartManager用于維護粒子的產生、變化、消亡,PartRender則根據不同粒子的屬性和類別,采用不同的圖形顯示。

 


  PartManager對象包含了三個子對象:PartGenerator表示粒子產生器,可以模擬粒子的產生,可以定制粒子產生的平均值(可以是常數,或者是時間或其他參數的函數)、粒子產生的方差、粒子的初始位置(點、平面、空間參數)、粒子的初始速度(均值、方差、角度特點)等。對于一個PartManager(也就是一個PartSystem),可以有多個PartGenerator以表示多個粒子源。PartUpdator表示粒子更新器,一個PartSystem對象可以有多個PartUpdator。PartCleaner表示粒子消亡器,在PartCleaner中可以定制本文1.5節(jié)中提到的各種粒子消亡條件。
  一個粒子系統(tǒng)模塊可以有多個粒子發(fā)生器、粒子更新器、粒子消亡器,亦即在一個粒子系統(tǒng)中,可以有多處粒子源、多個更新變化條件、多個粒子消亡條件。同時從圖1中可以看到,粒子發(fā)生器、粒子更新器、粒子消亡器從基類中派生出很多子類,代表了已定制的不同類型的以上組件。例如,要從粒子消亡器基類中派生出基于空間位置條件的消亡器(SpaceCleaner),只要定制其條件位置參數即可;還有熱能溫度條件消亡器(HeatCleaner),只要定制其溫度門限值即可自動將符合條件的粒子從Container中清除。

  PartRender類被設計用于圖形顯示,從中可以派生出不同的Render,如基于OpenGL或其他渲染器。此處PartRender可以設計成靜態(tài)對象。針對不同的粒子(如雪花、雨滴、火花等),常用的顯示參數、顯示特性可以定制在PartRender模塊中。
3 真實感計算和輕量級粒子
  在粒子系統(tǒng)實現中,常常會遇到實時計算開銷過大的問題。產生這個問題的主要原因是:(1)粒子數量眾多;(2)為了真實模擬粒子狀態(tài),粒子系統(tǒng)往往采用計算復雜度高的數學模型;(3)圖形顯示計算開銷。
  解決以上問題的主要思路是:(1)減少粒子數量;(2)簡化系統(tǒng)模型,降低計算復雜度,或在系統(tǒng)模型不變的情況下優(yōu)化算法;(3)減少圖形顯示計算開銷。
  針對第(2)種解決思路,可以采用優(yōu)化建模的方法或者采用近似算法。例如三角函數可以通過查表法獲得,從而避免進行三角運算。
  針對第(1)種思路,可以采用輕量級粒子(Flyweight Particle)的設計方法。在粒子系統(tǒng)中,有少部分粒子是真實粒子(Concrete Particle),其他粒子可以是一種輕量級粒子。每一個輕量級粒子其私有屬性的數據很少,其他大部分屬性數據可以索引到一個真實粒子上。這樣在粒子數據更新運算的時候,只需要計算這少部分真實粒子的數據;在圖形顯示的時候,可以根據輕量級粒子和其索引的真實粒子數據進行圖形顯示。因此輕量級粒子的存儲開銷和計算開銷都大大減少。這可以理解為在計算數據時只有少量的粒子,但在需要圖形顯示時仍有大量的粒子數據。
  設計中,在真實粒子上標記了鏈接在其上的輕量級粒子的數量。只要這個值大于1,則這個真實粒子即使達到了消亡條件也不能被清除。
  根據本文提出的面向對象的、通用的、參數化粒子系統(tǒng)架構,實現了通用粒子系統(tǒng)庫。在此基礎上,實現了幾種典型的自然景象模擬。
參考文獻
1   Reeves W T.Particlesystems——A technique for modeling a class of fuzzy objects.Computer Graphics,1983;17(3)
2   宋萬壽,賴建偉.基于粒子系統(tǒng)方法的焰火及樹木模擬.計算機輔助設計與圖形學,1996;8(4)
3   楊子華,劉宏芳.基于粒子系統(tǒng)模型的自然景物生成技術應用研究.計算技術與自動化,1998;17(3)
4   張芹.基于粒子系統(tǒng)的火焰模型及其生成方法研究.計算機輔助設計和圖形學學報,2001;13(1)

此內容為AET網站原創(chuàng),未經授權禁止轉載。