董前林 蔣樣明 劉赟 蔡將軍 李衛(wèi)東
摘 要:筆者選擇OGRE 3D作為數(shù)字煤礦三維可視化渲染引擎,提出了基于OGRE 3D的煤層三維建模流程方法和煤層精細(xì)紋理的制作方法。其中,煤層模型構(gòu)建的流程是:對于煤層,首先根據(jù)煤層底板等值線、斷層、陷落柱和邊界數(shù)據(jù),采用基于線狀信息源的分區(qū)綜合插值法得到煤層底板的GRID文件,再加上煤厚數(shù)據(jù),分塊生成包含煤層體6個面的XML文件(每個XML文件存儲的都是不規(guī)則三角網(wǎng)數(shù)據(jù)),然后生成可供OGRE 3D使用的包含層次細(xì)節(jié)信息的Mesh模型,最終通過OGRE 3D渲染生成模擬煤層。
關(guān)鍵詞:數(shù)字煤礦;三維渲染引擎OGRE 3D;Mesh模型;不規(guī)則三角網(wǎng)
中圖分類號:P208文獻(xiàn)標(biāo)識碼:A文章編號:1003-5168(2018)26-0079-03
1 研究背景
煤礦的三維可視化系統(tǒng)是指采用計(jì)算機(jī)軟件和相應(yīng)的硬件設(shè)備,根據(jù)煤礦的實(shí)際地層數(shù)據(jù)、煤層數(shù)據(jù)、巷道數(shù)據(jù)、鉆孔數(shù)據(jù)和地表工業(yè)廣場數(shù)據(jù)模擬煤礦的實(shí)際生產(chǎn)的三維空間[1]。在煤礦的三維可視化系統(tǒng)中,用戶可以身臨其境煤礦設(shè)計(jì)、開采等過程,并能對相應(yīng)的過程進(jìn)行重現(xiàn)或跟蹤。因此,構(gòu)建煤礦三維可視化系統(tǒng)對實(shí)現(xiàn)煤礦的現(xiàn)代化管理、安全高效生產(chǎn)及提高整個行業(yè)的科技發(fā)展水平具有非常重要的意義。
開源三維引擎的優(yōu)點(diǎn)是可以充分利用成熟的游戲級的三維渲染引擎類,減少引擎開發(fā)的時間,從而把主要精力用于數(shù)字煤礦三維模型的構(gòu)建。開源三維引擎的種類繁多。常見的3D引擎有:Unreal、LithTech、OGRE等,其中開源免費(fèi)的有:Fly3D、G3D、OGRE 3D等。OGRE 3D是全面支持跨平臺的最主要的開源三維渲染引擎之一,能方便地插入到已有的應(yīng)用程序框架中。OGRE 3D在免費(fèi)、開源的引擎中評價最高:第一,其圖形渲染質(zhì)量較好;第二,其設(shè)計(jì)模式較為清晰;第三,其速度也不錯。鑒于OGRE 3D具有上述優(yōu)點(diǎn),本文采用OGRE 3D作為煤礦三維開發(fā)引擎。
2 煤層三維建模流程
2.1 原始數(shù)據(jù)介紹
試驗(yàn)煤礦采煤層的基礎(chǔ)數(shù)據(jù)分為5號、9號、15號三種。本文以5號煤層為例,介紹煤層模型的構(gòu)建。煤層的數(shù)據(jù)范圍是64km2,X:654 300~662 300m,Y:3 947 500~3 955 500m。基礎(chǔ)數(shù)據(jù)包括:5號煤層(以下簡稱為“5”或“5煤”)底板等值線、5m煤厚等值線、5m陷落柱、5m斷層等。這些數(shù)據(jù)都是以tab格式存儲的。由于煤層的數(shù)據(jù)量較大,為了便于對煤層數(shù)據(jù)進(jìn)行分析、處理和管理,本文將原始數(shù)據(jù)按500m×500m單元格網(wǎng)分為(16×16)塊。
2.2 生成煤層GRID文件
本文中,GRID文件主要是根據(jù)煤層頂板、底板等值線運(yùn)用線狀信息源分區(qū)綜合插值法[2]生成。所謂分區(qū)綜合插值法,是根據(jù)線條包圍區(qū)的不同情況,采用不同的方法進(jìn)行插值推斷。該方法可以充分利用煤礦實(shí)際生產(chǎn)中積累的大量地質(zhì)資料,繪制精細(xì)的、準(zhǔn)確度高的地質(zhì)曲面圖形。線狀信息源分區(qū)綜合插值法根據(jù)某地層的等值線、斷層線、邊界線等線狀信息,將整個圖形轉(zhuǎn)換區(qū)劃分成若干個小區(qū),使整個圖形轉(zhuǎn)換區(qū)都劃分為由邊界線、斷層線、等值線、陷落柱包圍的若干局部區(qū)域,充分利用了這些信息,可以得到較精細(xì)的地層曲面圖形[3]。本文采用綜合插值法對5m底板、5m煤厚、5m陷落柱和5m斷層數(shù)據(jù)進(jìn)行插值,得到5m底板GRID文件(5m_2.grd)和3m厚度GRID文件(5mh_2.grd)。
2.3 生成煤層XML文件
生成煤層XML文件的過程是:采用已有的算法把2.2節(jié)中生成的GRID文件轉(zhuǎn)化成不規(guī)則的三角形,然后按照規(guī)定的XML文件格式進(jìn)行存儲,分為下面兩個主要的步驟。
2.3.1 讀入GRID和DAT文件。Surfer的GS ASCⅡ[.GRD]文件的記錄格式如下:
第一行為大寫的DSAA,是ASCⅡ格網(wǎng)文件的標(biāo)志;
第二行為兩個整形數(shù),分別表示格網(wǎng)數(shù)據(jù)的列數(shù)和行數(shù);
第三行為兩個浮點(diǎn)數(shù),分別表示格網(wǎng)區(qū)中像素X坐標(biāo)的最小值和最大值;
第四行為兩個浮點(diǎn)數(shù),分別表示格網(wǎng)區(qū)中像素Y坐標(biāo)的最小值和最大值;
第五行為兩個浮點(diǎn)數(shù),分別表示格網(wǎng)區(qū)中像素Z值的最小值和最大值;
從第六行開始是以浮點(diǎn)數(shù)存儲的數(shù)據(jù)。假設(shè)格網(wǎng)區(qū)分為M行N列,依次存放的是第M行第一列的數(shù)據(jù)、第M行第二列的數(shù)據(jù)……,直到第M行的第N列數(shù)據(jù)。然后另起一行存儲第M-1行的數(shù)據(jù),格式同前,依次類推直到第一行第N列數(shù)據(jù)。
Surfer還有一種常用的ASCⅡ XYZ格式的[.DAT]文件,該文件在A列中為X坐標(biāo),B列中為Y坐標(biāo)和在C列中為Z值。
本文三維建模采用的數(shù)據(jù)包括3煤2m分辨率的底板GRID文件(5m_2.grd)、5煤底板邊界的DAT文件(5mdbbj.dat)。根據(jù)GRID、DAT文件的不同格式分別讀入5m_2.grd,5mh_2.grd,5mdbbj.dat。
2.3.2 生成不規(guī)則三角形并存儲。煤層頂板的高度等于煤層底板的高度加上煤層的厚度。由于數(shù)據(jù)量較大,把已分塊的煤層在Y方向(左下角為坐標(biāo)原點(diǎn),向右為X軸正方向,向上為Y軸正方向)上分為2段。煤層底板存在陷落柱,對陷落柱(空白值)的點(diǎn)確定一個假定的Z值:第一點(diǎn)為空白點(diǎn)時,從右邊最靠近的非空白點(diǎn)取值;最后點(diǎn)為空白點(diǎn)時,從左邊最靠近的非空白點(diǎn)取值;中間點(diǎn)為空白點(diǎn)時,從左右兩邊各取最靠近的非空白點(diǎn)后加權(quán)取值。根據(jù)2.3.1部分讀入的數(shù)據(jù)按照由后向前、由左至右,上下層分別逐點(diǎn)組合生成三角面。每一點(diǎn)只考慮右上象限,只考慮4點(diǎn)都可用的情況。假定上下層可用點(diǎn)相同。對于生成的三角面片需要計(jì)算其法線,而頂點(diǎn)法線采用各有關(guān)三角面法線相加后再正規(guī)化的算法進(jìn)行計(jì)算。
XML文件存儲的信息包括:煤層Mesh模型材質(zhì)的名稱,不規(guī)則三角形的頂點(diǎn)信息以及每個不規(guī)則三角形頂點(diǎn)的坐標(biāo)、法線和紋理坐標(biāo)。通過執(zhí)行編譯后程序GRD-Mesh_A.exe,生成XML文件。
2.4 生成煤層模型
通過OgreXMLConverter程序可以把2.3中生成的XML文件轉(zhuǎn)換為Mesh模型。該程序是一個對調(diào)試網(wǎng)格數(shù)據(jù)內(nèi)容或者進(jìn)行簡單網(wǎng)格數(shù)據(jù)交換非常有用的工具,其可以將二進(jìn)制在.Mesh、.Skeleton文件與XML文件之間進(jìn)行轉(zhuǎn)換。OgreXMLConverter可以很容易地把XML文件轉(zhuǎn)換成二進(jìn)制文件。同時,其還可以為網(wǎng)格數(shù)據(jù)的生成附加信息,如邊界區(qū)域(bounding region)和層次細(xì)節(jié)信息(level-of-detail)。層次細(xì)節(jié)是指對于同一個場景中的對象,可以通過不同的細(xì)節(jié)描述來得到不同層次的模型。在實(shí)際渲染中,是根據(jù)被渲染的實(shí)體與觀察點(diǎn)(攝像機(jī))的距離來選擇不同細(xì)節(jié)。一般情況下,與觀察點(diǎn)距離較遠(yuǎn)時,具有更廣的視覺空間,看到的實(shí)體比較多,但實(shí)體紋理比較模糊;相反,看到的實(shí)體較多,但實(shí)體的紋理較清晰。所以,為了節(jié)約計(jì)算機(jī)資源,提高渲染效率,距離較遠(yuǎn)的實(shí)體,渲染較少的紋理細(xì)節(jié)。這可以通過設(shè)定實(shí)體與觀察點(diǎn)的距離閾值來實(shí)現(xiàn)。根據(jù)不同的閾值設(shè)置不同紋理細(xì)節(jié)。
3 煤層三維可視化
3.1 ORGE 3D渲染的關(guān)鍵技術(shù)
ORGE 3D渲染的關(guān)鍵技術(shù)主要有以下幾方面。①場景管理器。OGRE 3D是通過場景管理器來創(chuàng)建和操作場景中的對象、燈光、攝影機(jī)和實(shí)體等。在通過場景管理器操縱整個場景之前,要建立一個場景管理器的實(shí)例,然后至少還要構(gòu)建一個攝像機(jī),并執(zhí)行“放置一個實(shí)體到場景中”的操作。②場景管理器。攝像機(jī)的概念和真實(shí)世界中的一樣,為場景進(jìn)行“拍攝”每一幀的工作。攝像機(jī)既可以掛在場景節(jié)點(diǎn)上,也可以直接放到空間中。③燈光。燈光都會被綁定到某些場景節(jié)點(diǎn)上,用來產(chǎn)生特殊的效果,可以認(rèn)為任何能夠照亮場景的東西都是燈光。在場景中,燈光擁有其類型、位置及強(qiáng)度的屬性。④天空面。天空面就是一個用來模擬現(xiàn)實(shí)世界中天空的一個平面。通常而言,其只是一個平面;不過如果需要,也可以把它當(dāng)成“彎曲的”平面。當(dāng)天空面彎曲時,類似穹頂所產(chǎn)生的效果,不過仍需要運(yùn)用一些云霧的效果來掩飾其中的不足。
3.2 煤層三維模型的渲染
場景節(jié)點(diǎn)是在場景中實(shí)際移動變換的基本單元,其有自己的關(guān)聯(lián)層次(可以有父節(jié)點(diǎn)或者子節(jié)點(diǎn))。節(jié)點(diǎn)的操作支持三種不同的坐標(biāo)系空間,即世界坐標(biāo)空間、父節(jié)點(diǎn)空間和自身空間。在進(jìn)行移動、縮放、旋轉(zhuǎn)時,可以自由選擇使用的坐標(biāo)空間。場景節(jié)點(diǎn)將持續(xù)跟蹤與其關(guān)聯(lián)的實(shí)體的方位。當(dāng)創(chuàng)建了一個實(shí)體以后,其直到與一個場景節(jié)點(diǎn)關(guān)聯(lián)后才會被渲染。同樣,一個場景節(jié)點(diǎn)也不能單獨(dú)在屏幕上顯示出來,只有與一個實(shí)體綁定后才能在屏幕上顯示。本文是通過LoadCoalMesh函數(shù)實(shí)現(xiàn)煤礦三維模型的渲染,可以通過兩種方式獲取需要渲染的模型文件:①讀取事先配置好的XML文件;②使用打開菜單選擇渲染模型。文中規(guī)定為每個實(shí)體創(chuàng)建唯一的場景節(jié)點(diǎn),并且場景節(jié)點(diǎn)和實(shí)體具有相同的名稱。煤層三維模型的渲染結(jié)果如圖1和圖2所示。
4 煤礦三維空間查詢
煤礦的三維空間查詢包括以下兩方面。①三維屬性查詢——由對象查詢屬性。OGRE 3D支持的Mesh模型,是一種網(wǎng)格模型,其無法存儲對象的屬性,即無法直接通過煤層或巷道的Mesh模型來獲取煤層的厚度、巷道長度等信息,這需要進(jìn)行額外處理。本文的實(shí)現(xiàn)方式是:把煤層和巷道的屬性信息存放在Access數(shù)據(jù)庫中,通過Mesh模型的名稱來關(guān)聯(lián)和查詢所對應(yīng)的屬性信息。首先通過鼠標(biāo)選擇實(shí)體對象,然后通過對象的名稱檢索所在的數(shù)據(jù)庫表,在數(shù)據(jù)庫表中使用對象的名稱,就可以查詢到該對象的屬性信息。②三維空間查詢——由屬性查詢對象。三維空間查詢即通過屬性查詢對象,并居中、高亮顯示符合條件的對象。實(shí)現(xiàn)的基本原理是:首先,通過屬性獲取對象的名稱(模型的名稱),再獲取對象對應(yīng)的實(shí)體的名稱,然后,獲取該實(shí)體綁定的場景節(jié)點(diǎn),通過場景節(jié)點(diǎn)的_getWorldAABB()方法獲取場景節(jié)點(diǎn)的位置A,最后把攝像機(jī)移動到與該位置具有一定距離的位置B,并讓攝像機(jī)朝向位置A。
5 結(jié)論
本文基于開源引擎對煤礦三維可視化進(jìn)行研究。對于煤層數(shù)據(jù),首先根據(jù)煤層底板等值線、斷層、陷落柱和邊界數(shù)據(jù),采用基于線狀信息源的分區(qū)綜合插值法得到煤層底板的GRID文件,再加上煤厚數(shù)據(jù),分塊生成包含煤層體6個面的不規(guī)則三角網(wǎng)的XML文件,然后生成可供OGRE 3D使用的包含層次細(xì)節(jié)信息的Mesh模型,最終得到了較好的煤礦三維顯示效果。在實(shí)現(xiàn)煤礦三維顯示的同時,還實(shí)現(xiàn)了煤礦數(shù)據(jù)的三維空間和屬性查詢。
參考文獻(xiàn):
[1]韓瑞棟.煤礦三維可視化系統(tǒng)關(guān)鍵技術(shù)研究與實(shí)現(xiàn)[D].青島:山東科技大學(xué),2007.
[2]Sirayanone S. Comparative Studies of Kriging, Multiquadric-biharmonic, and other Methods for Solving mineral Resource Problems [D].Ames:Lowa State University,1988.
[3]曾坤.數(shù)字礦山插值方法研究[D].北京:中國礦業(yè)大學(xué)(北京),2007.