摘 要:利用計算機(jī)虛擬現(xiàn)實技術(shù)實現(xiàn)礦井三維可視化是虛擬礦山系統(tǒng)的重點,分析了基于OpenGL開發(fā)虛擬礦山系統(tǒng)的基本原理和關(guān)鍵技術(shù),通過改進(jìn)的OpenGL選擇算法,實現(xiàn)了選擇三維圖形對象,獲取屬性信息和進(jìn)行空間查詢分析,使用OpenGL紋理映射技術(shù),使巷道的顯示更有真實感,對礦山設(shè)備分類建立了三維模型,基于此技術(shù)研究,構(gòu)建了一個小型的虛擬礦山系統(tǒng)。
關(guān)鍵詞:OpenGL;虛擬礦山;紋理映射;選擇
中圖分類號:TP311.1
虛擬現(xiàn)實技術(shù)是指利用人工智能、計算機(jī)圖形學(xué)、人機(jī)接口、多媒體、計算機(jī)網(wǎng)絡(luò)及電子、機(jī)械、視聽等高新技術(shù),模擬人在特定環(huán)境中的視、聽、動等行為的高級人機(jī)交互技術(shù)[1]。
OpenGL是由SGI公司推出的獨立于操作系統(tǒng)和硬件環(huán)境的開放式三維圖形庫,作為一種用于實時3D圖形的工業(yè)標(biāo)準(zhǔn),已經(jīng)得到廣泛的認(rèn)可和接受。OpenGL具有強(qiáng)大的圖形功能和良好的跨平臺移植能力,目前已被廣泛應(yīng)用于可視化技術(shù)、實體造型、模擬仿真等諸多領(lǐng)域[2]。
利用計算機(jī)虛擬現(xiàn)實技術(shù)實現(xiàn)礦井三維可視化是虛擬礦山系統(tǒng)的重點,本文研究分析了基于OpenGL開發(fā)虛擬礦山系統(tǒng)的基本原理和關(guān)鍵技術(shù)。
1 三維圖形對象的選擇
在基于OpenGL礦山三維可視化的基礎(chǔ)上,實現(xiàn)通過選擇三維圖形對象,獲取圖形對應(yīng)的屬性信息,進(jìn)行空間查詢和分析。
根據(jù)虛擬礦山系統(tǒng)的需求分析,需要完成以下功能:在三維顯示圖形上,煤層或地表上任一點的三維坐標(biāo)的獲取,應(yīng)力云圖上任一點的應(yīng)力值的獲取,使用鼠標(biāo)點擊巷道、工作面、設(shè)備等三維模型,可以獲得其對應(yīng)的屬性信息。關(guān)鍵是解決在已經(jīng)渲染至窗口的三維場景中,使用鼠標(biāo)選擇三維對象的問題。
OpenGL提供了選擇與反饋機(jī)制來滿足用戶使用鼠標(biāo)交互操作三維圖形的需要。選擇與反饋機(jī)制有許多缺陷,難以滿足虛擬礦山系統(tǒng)中選擇三維對象的要求,因此采用改進(jìn)的OpenGl選擇算法,其主要思想如下:
在OpenGL中,視野的邊界所圍成的幾何體是一個標(biāo)準(zhǔn)的平截頭體(Frustum),視錐的錐頂就是視點,如圖1所示,遠(yuǎn)裁剪面ABCD和近裁剪面A1B1C1D1構(gòu)成了平截頭體,加上虛線部分就是視錐,頂點O就是攝像機(jī)所在的視點。我們點擊屏幕上的某一點,也就確定了屏幕上從O點出發(fā)的射線OP,點P在遠(yuǎn)裁剪面ABCD,我們稱OP選擇射線,反映到視錐中,就是選中了所有的從點P到點P1的點,點P1在近裁剪面A1B1C1D1上。
因此根據(jù)窗口的XY坐標(biāo),只能獲得一條出發(fā)自O(shè)點的選擇射線,并不能得到用戶想要的點在這條射線上的確切位置。只有通過Z坐標(biāo),才能確定選擇的點在射線上的位置。假如用戶點擊了屏幕上的點(200,200),通過OpenGL相關(guān)的方法可求得P、P1點,即可得到射線OP,然后遍歷場景中的所有三維對象(場景中三維對象的管理采用了八叉樹數(shù)據(jù)結(jié)構(gòu),提高了遍歷速度),與射線OP求交點,如果找到一個相交的三維對象,就表示此三維對象是要選中的對象,選中點為交點,如果找到多個相交的三維對象,比較交點的z坐標(biāo),即可確定與視點的遠(yuǎn)近,選擇符合條件的作為選擇的對象,例如,選離視點最近的三維對象作為選擇的對象。
2 巷道三維渲染
2.1 巷道屬性表達(dá)
在構(gòu)建了巷道的三維模型之后,為了使巷道的漫游更真實,還需考慮煤礦巷道的具有多種空間形態(tài)和功能,即有不同的屬性。常見的巷道斷面形狀主要有直壁拱形、梯形、矩形等。采用統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)和算法對直壁拱形、梯形、矩形斷面進(jìn)行建模,這三種斷面都統(tǒng)一看作是多邊形,這樣就簡化了斷面的建模。巷道具有多種功能,例如采煤巷道、運輸巷道、儲水巷道(水倉)等,有時一條巷道有多種用途,也就具有多重功能[3]。使用OpenGL三維可視化技術(shù),可以使用紋理、顏色、光照等可視化表達(dá)屬性來顯示巷道,將可視化表達(dá)屬性與巷道的功能、支護(hù)方式等巷道屬性關(guān)聯(lián)起來。例如,可使用紋理來表達(dá)錨網(wǎng)支護(hù)和U型鋼支護(hù)的不同外觀。
2.2 巷道紋理映射
在巷道的三維顯示中,使用紋理映射技術(shù),使巷道的顯示更有真實感,并能表示出巷道的屬性,例如要模擬巷道的混凝土內(nèi)壁表面,首先,做好混凝土位圖,然后通過紋理映射覆蓋到巷道的內(nèi)壁表面,這樣巷道內(nèi)壁就變成了混凝土材質(zhì);例如要模擬巷道的錨網(wǎng)支護(hù),可以將錨網(wǎng)照片做成位圖,使用紋理映射就可以將其覆蓋到巷道的內(nèi)壁表面,這樣就可以比較真實地模擬錨網(wǎng)支護(hù)的場景。
概括地說,使用紋理映射的一般步驟為:定義紋理貼圖、控制紋理、說明紋理貼圖方式,定義紋理坐標(biāo)等。下面以使用紋理映射實現(xiàn)巷道內(nèi)壁混凝土材質(zhì)為例,說明定義紋理坐標(biāo)的過程:
使用glTexCoord2f設(shè)置紋理坐標(biāo),glTexCoord2f的第一個參數(shù)是X坐標(biāo),0.0f是紋理的左側(cè),0.5f是紋理的中點,1.0f是紋理的右側(cè)。glTexCoord2f的第二個參數(shù)是Y坐標(biāo),0.0f是紋理的底部。0.5f是紋理的中點,1.0f是紋理的頂部。一段巷道的三維模型,是由多個四邊形組成,由于巷道長度較長,紋理要沿巷道重復(fù)多次才能覆蓋組成巷道的四邊形,紋理坐標(biāo)必須根據(jù)巷道長度計算,設(shè)拱形巷道長度length,巷道側(cè)壁高度height,巷道寬度為width,設(shè)yy=1。
巷道頂面紋理坐標(biāo)計算:巷道頂面有8個四邊形組成,假設(shè)巷道的長度為設(shè)置第i(i從0到7)個四邊形4個頂點的紋理坐標(biāo)如下:
3 礦山設(shè)備三維建模
巷道內(nèi)部包含各種設(shè)備,要實現(xiàn)巷道內(nèi)漫游,必須對這些設(shè)備進(jìn)行三維建模。巷道內(nèi)設(shè)包備括軌道、傳送帶、電纜、管道、機(jī)車、采煤機(jī)等。根據(jù)巷道內(nèi)設(shè)備的位置確定和形狀,可以分為兩類:一種是線狀物,如軌道、管道、電纜等,另一類是點狀物,如機(jī)車、采煤機(jī)等。對于點狀物設(shè)備,可以先使用專門的三維建模工具軟件構(gòu)建模型,然后加載到漫游軟件中,放置到指定位置,并進(jìn)行適當(dāng)旋轉(zhuǎn),調(diào)整方位,對于線狀設(shè)備,可以類比繪制巷道體的算法進(jìn)行建模,直接使用OpenGL技術(shù)進(jìn)行繪制、渲染。如圖2所示,巷道中的管道、電纜都是線狀物,使用OpenGL直接建立三維模型。
使用OpenGL技術(shù),可以繪制、渲染任何一個三維模型。但對應(yīng)巷道內(nèi)的點狀物設(shè)備,繪制十分復(fù)雜,對于這樣的情況,使用OpenGL代碼來創(chuàng)建模型顯得即復(fù)雜又不直觀,難以調(diào)試。因此,先使用專門的建模工具M(jìn)aya創(chuàng)建模型,再將模型導(dǎo)出為特定的格式,然后在系統(tǒng)中載入這個模型。過程如下:
(1)使用建模工具M(jìn)aya創(chuàng)建模型;(2)將模型輸出為OBJ格式;(3)載入OBJ模型,在程序中放置到指定位置,并進(jìn)行適當(dāng)旋轉(zhuǎn),調(diào)整方位,渲染模型,確定模型的位置與方向是關(guān)鍵。
4 結(jié)束語
探討了基于OpenGL基于開發(fā)虛擬礦山系統(tǒng)的基本原理和一些關(guān)鍵技術(shù),如OpenGL選擇算法的改進(jìn),紋理映射技術(shù),載入Maya模型等,并基于這些技術(shù)研究,構(gòu)建了一個小型的虛擬礦山系統(tǒng),證明基于OpenGL開發(fā)虛擬礦山系統(tǒng)是可行的。
參考文獻(xiàn):
[1]吳立新.3維地學(xué)模擬與虛擬礦山系統(tǒng)[J].測繪學(xué)報,2002(31).
[2]湯彬.基于OpenGl的交互技術(shù)研究[J].上海工程技術(shù)大學(xué)學(xué)報,2006(20).
[3]王寶山,魏占營.煤礦虛擬環(huán)境的巷道3維建模研究[J].測繪學(xué)院學(xué)報,2005(22).
作者簡介:董林(1971-),男,講師,研究方向:計算機(jī)應(yīng)用技術(shù)。
作者單位:山東水利職業(yè)學(xué)院,山東日照 276826