天天看點

osg粒子

粒子系統(osgParticle::ParticleSystem)- 維護并管理一系列粒子的生成,更新,渲染和銷毀。粒子系統類繼承自Drawable類。粒子的渲染控制是以與其它Drawable對象的渲染類似:控制其渲染屬性StateAttribute即可。OSG提供了一個友善的函數以允許使用者控制三個常用的渲染狀态屬性。方法setDefaultAttributes可以用于指定材質(或者指定為NULL以禁用材質),允許/禁止附加的圖像融合,允許/禁止光照。

粒子(osgParticle::Particle)- 粒子系統的基本單元。粒子類同時具有實體屬性和圖像屬性。它的形狀可以是任意的點(POINT),四邊形(QUAD),四邊形帶(QUAD_TRIPSTRIP),六角形(HEXAGON)或者線(LINE)。每個粒子都有自己的生命周期。生命周期也就是每個粒子可以存活的秒數。(生命周期為負數的粒子可以存活無限長時間)所有的粒子都具有大小(SIZE),ALPHA值和顔色(COLOR)屬性。每一組粒子都可以指定其最大和最小值。為了便于粒子生命周期的管理,粒子系統通過改變生命周期的最大和最小值來控制單個粒子的渲染。(根據已經消耗的時間,在最小和最大值之間進行線性插值)

程式員也可以自行指定最小到最大值的插值方法。

放置器(osgParticle::Placer)- 設定粒子的初始位置。使用者可以使用預定義的放置器或者定義自己的放置器。已定義的放置器包括:點放置器PointPlacer(所有的粒子從同一點出生),扇面放置器SectorPlacer(所有的粒子從一個指定中心點,半徑範圍和角度範圍的扇面出生),以及多段放置器MultiSegmentPlacer(使用者指定一系列的點,粒子沿着這些點定義的線段出生)。

發射器(osgParticle::Shooter)- 指定粒子的初始速度。RadialShooter類允許使用者指定一個速度範圍(米/秒)以及弧度值表示的方向。方向由兩個角度指定:theta角 - 與Z軸夾角,phi角 - 與XY平面夾角。

計數器(osgParticle::Counter)- 控制每一幀産生的粒子數。RandomRateCounter類允許使用者指定每幀産生粒子的最大和最小數目。

标準放射極(osgParticle::ModularEmitter)- 一個标準放射極包括一個計數器,一個放置器和一個發射器。它為使用者控制粒子系統中多個元素提供了一個标準機制。

粒子系統更新器(osgParticle::ParticleSystemUpdater)- 用于自動更新粒子。将其置于場景中時,它會在揀選周遊中調用所有“存活”粒子的更新方法。

标準程式設計器(osgParticle::ModularProgram)- 在單個粒子的生命周期中,使用者可以使用ModularProgram執行個體控制粒子的位置。ModularProgram需要與Operator對象組合使用。

電腦(osgParticle::Operator)- 提供了控制粒子在其生命周期中的運動特性的方法。使用者可以改變現有Operator類執行個體的參數,或者定義自己的Operator類。OSG提供的Operator類包括:AccelOperator(應用常加速度),AngularAccelOperator(應用常角加速度),FluidFrictionOperator(基于指定密度和粘性的流體運動進行計算),以及ForceOperator(應用常力)。

繼續閱讀