陳姝慧
(長春工業大學電氣與電子工程學院,吉林長春 130012)
由于地下煤礦的環境和地質條件復雜多變,各種災情時有發生,直接影響著煤礦工人的人身安全,而傳統的二維地理信息系統(GIS)已經無法對地下煤礦的地質環境和災情現象進行詳細的表達和描述,為了使煤礦業的專業人員和煤礦工人都可以很容易地獲得地下煤礦的實際數據,因此,需要采用虛擬現實技術進行模擬實現[1]。透水現象是煤礦的災情之一,由于水流在隨著時間不斷地變化,是一個模糊物體,所以需要采用跨平臺、可兼容的OpenGL作為主要的開發工具,而水流則采用粒子系統來實現。
OpenGL(Open Graphics Library)是用于三維圖像(二維的亦可)的一個跨編程語言、跨平臺的專業圖形程序接口。它具有建模、變換、顏色模式設置、光照和材質設置、紋理映射、位圖顯示和圖像增強、雙緩存動畫等功能,OpenGL具有使用簡便、功能強大、調用方便等特點。
粒子系統是計算機圖形學中模擬模糊物體和現象的最成功的圖形生成技術。粒子系統在繪制不規則的對象,如火焰、水流、云彩、爆炸等方面具有獨特的優點,因此,若要使模擬物體的效果更加豐富和真實,就必須使用粒子系統。粒子系統的優點是[2]:
1)單體素和復雜物體行為的有機結合。例如,可以利用粒子系統生成火焰、噴泉等。
2)易于實現。只要提供用于粒子屬性的隨機過程的一些參數即可定義一個粒子系統。
3)粒子簡單,易于實現,而且顯示效率較高。
由于OpenGL符合光學和計算機圖形學原理,非常適合可視化的模糊物體仿真系統,并且能實現高性能的三維圖形功能,所以,此系統采用性能優越的底層3D圖形函數庫OpenGL作為煤礦透水子系統的主要開發工具。
1.1.1 建模
OpenGL除了能繪制基本的點、線、多邊形外,還可以繪制復雜的三維物體(如球、錐、多面體等)。OpenGL通常用多邊形的頂點來描述三維模型。
1.1.2 變換
OpenGL的模型觀察是通過一系列的變換實現的。OpenGL包括基本變換、投影變換、視口變換和取景變換等變換方法。這些變換方法可以減少系統的運行時間,提高圖形的顯示速度。
1.1.3 顏色模式的設定
顏色模式包括RGBA模式和顏色索引模式。在RGBA模式中,顏色由RGB(紅、綠、藍)值來設定;在顏色索引模式中,顏色值則由顏色表中的一個顏色索引值來設定。
1.1.4 光照和材質的應用
繪制有真實感的三維物體必須做光照處理,OpenGL提供了管理4種光(輻射光、環境光、鏡面光和漫反射光)的方法。另外,還可以指定模型表面的反射特性,而光的RGB分量和材質RGB分量的反射率的乘積所形成的顏色才是最后反映到人眼中的顏色。
1.1.5 圖像效果增強
OpenGL除了基本的拷貝和像素讀寫外,還提供了一系列增強三維景觀的圖像效果的函數,這些函數通過反走樣、混合和霧化來增強圖像的效果。
1.1.6 位圖顯示
OpenGL提供了專門對位圖和圖像進行操作的函數。
1.1.7 紋理映射
紋理是在計算機圖形學中,包含顏色、alpha值、亮度等數據的矩形數據組。OpenGL提供的一系列的函數可以逼真地描述物體的表面細節,可以把真實圖像貼到景物的多邊形上,從而十分逼真地繪制三維景物。
1.1.8 動畫
OpenGL的動畫功能就是雙緩存(double bu ffer)技術,雙緩存包括前臺緩存和后臺緩存兩種方式。雙緩存技術就是先在內存中生成下一幅圖像,然后把已經生成的圖像拷貝到屏幕上。
1.1.9 交互技術
在OpenGL中,用戶可以自由選擇和修改三維景觀中的物體[3]。
OpenGL基本工作流程[4]如圖1所示。

圖1 OpenGL基本工作流程
頂點數據包括幾何頂點數據和幾何像素裝配數據,在對頂點數據進行操作時,根據景物模型的要求來進行。景物模型的要求不同決定采取的操作也就不同。
流程操作到最后,在幀緩沖區內的像素值被送入到幀緩沖器中來實現模擬圖形的顯示。
OpenGL的圖形操作大致可以分為以下4個步驟:
1)建模:建立景物模型,并且對其進行數學描述。建模包括幾何建模和行為建模兩種模式;
2)設置視點:把模型放到三維空間中去,設置視點來描述觀察者的空間位置以及所感興趣的景觀;
3)計算特征:根據景物應用條件的不同來計算模型物體的環境特征;
4)光柵化:把模型的數學描述以及與模型相關的所有信息轉換為屏幕上的像素的過程。
通過OpenGL繪制出的巷道模擬效果圖如圖2和圖3所示。

圖2 煤礦巷道礦車圖

圖3 煤礦透水事故圖
粒子系統的基本思想是采用大量形狀簡單、相似而且具有“生命”的微小粒子來定義和描述一些不規則的模糊物體。這些粒子都要在系統中經歷“誕生”、“運動和生長”及“死亡”3個階段。正是由于粒子系統是個有“生命”的系統,所以才形成了動態畫面,充分模擬出了物體的隨機性和動態性[5]。
對于粒子系統的描述,傳統的方法是從粒子的3個階段進行的,現在的方法是將粒子系統的各個屬性統一放到一個集合里,而這些集合就構成了模糊物體的模型。
2.1.1 傳統的粒子方法表述
2.1.1.1 “誕生”階段粒子屬性的表述
新誕生的粒子數目

粒子的初始位置s(f0)由粒子的誕生區域決定。
粒子的初始速度v(f0)=粒子的平均速度mv+rand()*粒子的速度方差vv。
粒子的初始顏色c(f0)=粒子的平均顏色mc +rand()*粒子的顏色方差vc。
粒子的初始透明度t(f0)=粒子的平均透明度m t+rand()*粒子的透明度方差v t。
粒子的生存期l(f0)=粒子的平均生存期m l +rand()*粒子的生存期方差vl。
其中,PM(fi)PM和PV(fi)PV是第fi幀新誕生粒子數目的平均值和方差,rand()是[-1,1]上均勻分布的隨機函數,平均值和方差是用戶給定的常數。
2.1.1.2 “運動和生長”階段粒子屬性的表述
位置:

速度:

顏色:

透明度:

生存期:

式中:a,Δc,Δt ——分別為粒子的加速度、顏色變化率、透明度變化率,可定義為常數。
2.1.1.3 “死亡”階段粒子屬性的表述
粒子的生命期隨著每幀的播放而遞減,當幀數減為0時,粒子死亡,應從系統中將粒子刪除。
2.1.2 現在的粒子方法表述
粒子系統被定義成了一個在實數域上的n維向量,它囊括了粒子的所有屬性[6]。

式中:Attri1,Attri2,…,Attrii,…,Attrin——粒子的n個屬性。
一個粒子系統是由大量的基本粒子元素構成,每個粒子有一組屬性,如位置、速度、顏色和生命期,粒子的初始值由隨機過程產生。一個粒子系統是不斷進化的,在生命期的每一刻,都要完成以下工作[7]:
1)粒子源產生新粒子。粒子由位于空間的某個地方的粒子源產生;
2)賦予每一個新粒子一定的初始屬性。這是粒子系統的初始化過程,它們的初始屬性由隨機過程控制;
3)刪除“死亡”的粒子。檢查粒子的生命期,若粒子的生命期為0或者粒子的坐標超過指定的空間邊界值,則將粒子從系統中刪除;
4)更新粒子屬性。根據粒子的動態特性,更新所有粒子的屬性,在該步驟中,粒子的生命期遞減一個時間步;
5)繪制并顯示粒子。顯示粒子系統中所有處于生命期中的粒子所組成的圖形。
粒子系統運行流程如圖4所示。
粒子系統主要是烘托總體的宏觀效果,它只是從宏觀上設定粒子的參數特性和運動,所有粒子都具有類似的性質,按類似的規律運動。對粒子的操作只能通過對整個粒子系統來操作,而不能單獨編輯某一個粒子。又由于世間的自然景觀是形態萬千、變幻莫測的,所以需要多個粒子系統來描述,因此采用面向對象的思想,引入了粒子系統的概念[8]。算法在每一時刻首先確定新生的子粒子系統的數量,子粒子系統繼承父粒子系統的所有屬性。因此,在設計過程中,水粒子系統由水粒子系統層和水粒子系統組成,其系統結構如圖5所示。

圖4 粒子運行流程

圖5 水粒子系統結構
由于粒子是有“生命”的,所以隨著時間的推移,粒子的相關屬性會相應地發生變化,并且舊的粒子隨之消亡,新的粒子不斷地產生加入。在本系統中,水粒子也有一組屬性,它們分別是顏色、形狀、大小、速度、位置、生命期等。
3.2.1 水粒子的顏色
水粒子的顏色主要包括初始顏色、消隱顏色和透明度3部分。其中初始顏色是新生粒子的顏色,消隱顏色是粒子在消亡時的顏色。本系統中,水粒子的初始顏色可由下式確定:

水粒子的透明度即亮度是一個從0到1變化的實數,0表示最暗,1表示最亮。而水粒子的初始亮度為1。
3.2.2 水粒子的形狀和大小
水粒子的初始形狀和大小在系統中產生時就已經被確定下來,為最簡單的點。
3.2.3 水粒子的速度
水粒子的初始速度有一定的大小和方向,并且隨著時間相應地變化。水粒子的初始速度可由下式確定:

假設水粒子在產生時刻是沒有外力作用的,方向為向上運動,則有

3.2.4 水粒子的生命期
粒子的生命期是指粒子在系統中的存活時間,而水粒子的生命期則在粒子生成時已經由系統設定,其初值為+1.0 f。在描述上述屬性的公式中,MeanCo lor(R,G,B)和M eanSpeed是顏色和速度的平均值,VarColor(R,G,B)和VarSpeed是顏色和速度的隨機值,Rand()是在(-1.0,+1.0)上均勻分布的隨機函數,其中平均值和隨機值是由用戶給定的。
水粒子系統流程如圖6所示。

圖6 水粒子系統流程
程序按照圖6所示的系統流程圖執行,最后模擬出的透水效果如圖7所示。

圖7 模擬出的透水效果圖
在這個透水效果圖中,水是先從頂部開始一點一點地滲漏,然后側部也逐漸開始滲漏,最后形成大面積的透水。
基于粒子系統的、以OpenGL為煤礦虛擬現實系統的主要開發工具所做的設計和研究,還只是煤礦虛擬現實系統的起步階段。而自從1983年粒子系統的方法誕生以來,雖然經歷了二十幾年的發展和完善,在模擬模糊物體方面已經達到了一定的水平,但是仍然還有許多問題需要進一步解決。
總之,在國內的礦山虛擬現實系統應用中應盡快擺脫理論探討階段,加快在理論上的研究,盡快地縮短與國外的差距;在基于粒子系統方法的水模擬研究中,真實感和實時性將是今后發展、研究的重點。
[1] 趙銀花.虛擬現實與現代室內設計表現[J].長春工業大學學報:自然科學版,2010,31(5):593-595.
[2] 張芹,吳慧中,張健.基于粒子系統的建模方法研究[J].計算機科學,2003,30(8):144-146.
[3] 和平鴿工作室.OpenGL高級編程與可視化系統開發:系統開發篇[M].2版.北京:中國水利水電出版社,2006.
[4] 徐明亮,盧紅星,王琬.OpenGL游戲編程[M].北京:機械工業出版社,2008.
[5] 龐新,王相海.基于OpenGL的禮花粒子系統模擬研究[J].計算機科學,2008,35(5):216-219.
[6] 李哲,艾婷,高文舉.基于紋理映射的粒子火焰的模擬與繪制[J].長春工業大學學報:自然科學版,2009,30(2):215-218.
[7] 徐利明,姜昱明.基于粒子系統與OpenGL的實時雨雪模擬[J].計算機仿真,2005,22(7):243-245.
[8] 楊冰,魯敏.基于景物特征的粒子系統建模技術[J].計算機應用研究,2000,17(5):20-22.