白云菲
(中南民族大學(xué)計算機科學(xué)學(xué)院 湖北 武漢 430074)
在高質(zhì)量圖形的實時生成要求下,如何從軟件方面著手減少圖形畫面的復(fù)雜度,已成為VR圖形生成的主要目標。研究人員提出多種圖形生成加速方法,細節(jié)層次(Levers of Detail,LOD)模型就是其中一種主要方法。傳統(tǒng)幾何建模中,一般的LOD技術(shù)的原理是根據(jù)物體距離視點的遠近來決定所建模型的頂點數(shù)目[2]。對于粒子系統(tǒng),我們可以結(jié)合LOD技術(shù),進行物體模擬,即當(dāng)視點較近時,每次產(chǎn)生較多的粒子,視點較遠時,則可以產(chǎn)生較少的粒子,從而對粒子模擬進行簡化,減少系統(tǒng)計算量,提高繪制效率。丁強等人提出的基于LOD技術(shù)的火焰模擬[3],能夠在減少計算量的基礎(chǔ)上,對火焰進行較好地模擬,但是,簡化后的圖像并沒有根據(jù)視覺特征效果對粒子系統(tǒng)進行精簡,據(jù)此,本文基于火焰幾何模型中粒子的視覺重要度,對該技術(shù)進行了改進,在模擬火焰燃燒方面,能夠達到更好的效果。
對粒子屬性的初始化設(shè)置一般可以通過簡化的隨機過程來控制[4],對于每一個屬性首先確定其變化范圍,然后在該范圍內(nèi)隨機地確定它的值,隨機性效果可以通過具有一定的概率分布隨機函數(shù)來產(chǎn)生,進而影響粒子系統(tǒng)的整體外觀輪廓,屬性的變化范圍則由給定的平均期望值和最大方差來確定,其基本表達式為:
(1)式中Value為任意一個需要隨機確定的粒子屬性值;MeanVlaue為該屬性的平均值;Rand()為[-1,1]中的隨機數(shù)函數(shù);VarValue為方差,即屬性在平均值附近的變化范圍。在火焰粒子系統(tǒng)中初始的位置、初始的運動速度、受力都可以由式(1)式來直接生成。
粒子的屬性變化構(gòu)成了粒子的運動變化,對于透明度和顏色、生命值、粒子大小等屬性,通過式(2)[5]進行控制:
式中,ValueStart為粒子系統(tǒng)該屬性的初始值,ValueEnd為此粒子終止時的屬性值,LifeTime為粒子的壽命值,TimeDelta則為此幀與上一幀的時間跨度值。某一幀粒子的位置可以由其速度和上一幀的位置得到。
(3)(4)式中P為位置,V為速度,A為加速度。計算粒子系統(tǒng)的總體受力算法[6]如下:
I:計算當(dāng)前粒子各個方向受力情況;
II:根據(jù)受力求出加速度;
III:利用(3)(4)式求出速度與位置的改變。
在粒子生成步驟中,結(jié)合LOD(層次細節(jié))模型,對粒子系統(tǒng)產(chǎn)生新粒子的數(shù)目值設(shè)置為:
上式中,N0表示沒有進行簡化的原始幾何模型的頂點數(shù),Nm表示第m級簡化模型的頂點數(shù)。粒子系統(tǒng)中,在距離Lm產(chǎn)生的粒子數(shù)均值作為Nm。即當(dāng)視點較近時,每次產(chǎn)生較多的粒子,視點較遠時,則產(chǎn)生數(shù)量線性較少的粒子,這樣就降低了很多計算機處理的時間,提高了系統(tǒng)的繪制效率。
上述方法實現(xiàn)了計算量的降低,但是,并沒有對粒子的視覺重要程度進行判斷,只是線性地根據(jù)距離減少粒子的生成數(shù)量。頂點視覺重要度決定了頂點的凹凸幾何特性,在三維場景渲染中,凹凸性高的點更多能夠決定場景的真實度[7]。
頂點的視覺重要度的確定由頂點視覺特征因子和頂點曲度特征因子共同決定[8],根據(jù)法曲率可以計算頂點曲度特征因子,法曲率反映了曲面在一點處沿指定方向的彎曲程度和彎曲方向,可以對曲面在一點處沿任意方向的彎曲性量化。高斯曲率和平均曲率共同確定法曲率,進而確定了頂點曲度特征因子。
通過對頂點視覺重要度的計算,在粒子系統(tǒng)更新時可根據(jù)視覺重要度為零的點進行剔除,可以使頂點的重要視覺特征得以最大保持,并最大程度地降低系統(tǒng)的渲染時間。即在粒子系統(tǒng)中首次渲染場景時,對粒子進行掃描并記錄每個粒子的視覺重要程度,在后續(xù)的更新粒子過程中,對記錄中平坦點位置的粒子不進行渲染,以減少渲染量。
利用OpenGL圖形開發(fā)庫,在VC++6.0環(huán)境下,對火焰粒子系統(tǒng)進行模擬,并將粒子的LOD簡化策略及平坦點剔除加入了火焰粒子系統(tǒng)的實現(xiàn)。系統(tǒng)中采用的幀率為32,即每幀所用渲染時間為0.03125s,設(shè)置初始L0=50,N0=10;采用線性LOD簡化模型。
由實驗數(shù)據(jù)可知,引入平坦點剔除后,為達到相同的視覺效果,系統(tǒng)產(chǎn)生新粒子數(shù)量減少約20%-25%左右,即在引用LOD技術(shù)進行線性降低粒子發(fā)射量的基礎(chǔ)上,結(jié)合考慮粒子系統(tǒng)中每個粒子的視覺重要程度,對視覺凹凸性低的點予以剔除,能夠在保持視覺效果的基礎(chǔ)上,給系統(tǒng)減少計算負擔(dān),提高渲染效率。
[1]Revees W T.Particle Systems:A Technique for Modeling a Class of Fuzzy Objects[C]∥Proc of ACM SIGGRAPH’83,1983,17(3):359-376.
[2]郭陽明,翟正軍,陸艷紅.虛擬場景生成中的LOD技術(shù)綜述[J].計算機仿真,2005,12(22):180-185.
[3]丁強,陳青林,左福強.基于 LOD的火焰粒子生成技術(shù)[J].計算機應(yīng)用,2005(25):257-258.
[4]彭群生,鮑虎軍,金小剛.計算機真實感圖形的算法基礎(chǔ)[M].北京:科學(xué)出版社,2003.
[5]陳志偉,馬小虎.基于粒子系統(tǒng)和紋理繪制的火焰模擬[J].計算機工程與科學(xué).2010,1(32):71-73.
[6]DANIEL SANCHEZ2CRESPO DALMAU.游戲核心算法編程內(nèi)幕[M].邱仲潘,譯.北京:中國環(huán)境科學(xué)出版社,2004.
[7]Frutuoso G M.Silva NSA simplification algorithm.Geometrical vs.visual quality[C].5th International Conference on Computational Science and Applications,2007.