張思卿,譚同德
(1.鄭州科技學(xué)院 信息工程學(xué)院,鄭州450064;2.鄭州大學(xué) 信息工程學(xué)院,鄭州450001)
隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,信息化逐漸成為全球各個(gè)行業(yè)的發(fā)展趨勢(shì)。鎢礦開發(fā)是礦山開發(fā)的重要組成部分,礦山信息化在我國有相當(dāng)廣闊的應(yīng)用前景。
鎢礦山的主要組成部分是巷道,地下巷道錯(cuò)綜復(fù)雜、縱橫交錯(cuò),如何能夠多方位地、直觀地、形象地、準(zhǔn)確地表現(xiàn)井下巷道,是鎢礦安全生產(chǎn)、高效和合理開發(fā)的重要保障,是構(gòu)建數(shù)字礦山的基礎(chǔ)。研究和開發(fā)三維巷道系統(tǒng)在礦山生產(chǎn)方面有很大的積極意義,例如鎢礦山的安全生產(chǎn)、礦井設(shè)計(jì)的優(yōu)化,并能夠提高鎢礦的現(xiàn)代化管理水平。
實(shí)現(xiàn)鎢礦山三維巷道模型的動(dòng)態(tài)模擬,可以使開采和設(shè)計(jì)人員有一種身臨其境的感覺,使他們對(duì)巷道有一個(gè)全面的認(rèn)識(shí),可以在采礦生產(chǎn)中確保巷道掘進(jìn)的合理性以及安全性,因此建立三維巷道模擬系統(tǒng),使地下巷道數(shù)字化,通過展示礦區(qū)整個(gè)地下巷道的三維模型,可以直觀地反映地下巷道的變化,并能夠顯示巷道與地表或者礦體的位置關(guān)系,從而大大提高鎢礦開采工作的安全性以及提高開采工作的效率[1]。
本文基于 VR技術(shù),在 Visual C++6.0集成開發(fā)環(huán)境下,設(shè)計(jì)實(shí)現(xiàn)了三維巷道仿真系統(tǒng),解決了其中關(guān)鍵技術(shù)問題,可以模擬巷道外部全景以及巷道內(nèi)部情況,最后通過貼圖使巷道具有真實(shí)感。巷道的三維可視化對(duì)鎢礦后續(xù)安全生產(chǎn)有重要意義。
1)平巷設(shè)計(jì)
礦山平巷包括平硐、石門、運(yùn)輸平巷、出礦通道等[2]。這些巷道最常見的斷面形狀有自然拱形、梯形、圓拱形、半圓拱形和圓形,如圖1所示,當(dāng)然在特殊情況下,也有馬蹄形、橢圓形等。
圖1 巷道斷面Fig.1 Section of roadways
平巷斷面形狀主要由以下三個(gè)方面來決定[2]:
(1)巷道周圍的地質(zhì)環(huán)境以及地壓的大小和壓力的方向;
(2)巷道的用途以及工作年限;
(3)支護(hù)方式,施工的難易度等。
經(jīng)過綜合考慮,梯形斷面利用率高,而拱形斷面的穩(wěn)定性較好,承載能力較大,所以設(shè)計(jì)時(shí)一般采用這兩種形狀的斷面,而本次實(shí)驗(yàn)主要是為了實(shí)現(xiàn)三維巷道的模擬,所以采用統(tǒng)一的半圓拱形斷面進(jìn)行仿真。礦井生產(chǎn)中,井下巷道按要求應(yīng)該是互相連接的,于是就會(huì)出現(xiàn)巷道相交或者有分叉的地方,這種情況下的巷道就稱之為巷道交叉點(diǎn)。
根據(jù)交叉點(diǎn)支護(hù)方式的不同,交叉點(diǎn)可以分為簡易交叉點(diǎn)和碹叉,而碹叉按其結(jié)構(gòu)的不同又分為牛鼻子交叉點(diǎn)和穿尖交叉點(diǎn)[2],如圖2所示。
圖2 交叉點(diǎn)類型Fig.2 Intersection types
2)豎井設(shè)計(jì)
豎井是地下鎢礦山工程中的主要井巷之一,其主要作用是在礦山生產(chǎn)時(shí)提升礦石、上下工作人員和器材、排水及通風(fēng)。一般圓形斷面的井筒多采用混凝土或者噴錨支護(hù),另外在地質(zhì)條件復(fù)雜的情況下也有鋼筋混凝土。圓形斷面具有承壓性能好、受壓均勻、封水性好、服務(wù)年限較長、能適應(yīng)復(fù)雜的地質(zhì)條件等優(yōu)點(diǎn),所以一般情況下豎井都會(huì)采用圓形斷面。
目前,隨著采礦行業(yè)的不斷發(fā)展,地下巷道縱橫交錯(cuò),越來越復(fù)雜。而現(xiàn)有的巷道數(shù)據(jù)基本都是以二維的方式存儲(chǔ)的,并且巷道的數(shù)目越來越多,其內(nèi)部設(shè)施也越來越復(fù)雜,直接考察獲取巷道信息越來越難,所以依靠建立巷道的三維模型來保障礦山的安全生產(chǎn)越來越必要。
作為一個(gè)三維巷道仿真系統(tǒng),其核心功能必然是實(shí)現(xiàn)巷道的三維顯示,整體顯示整個(gè)巷道的三維模型,主要是根據(jù)簡單的原始數(shù)據(jù)以及屬性描述建立起較有真實(shí)感的巷道模型,把二維的巷道數(shù)據(jù)轉(zhuǎn)化為空間三維的模型,主要實(shí)現(xiàn)巷道的內(nèi)部顯示和外部顯示。
由于本實(shí)驗(yàn)中在彎曲巷道處采用的是貝塞爾曲線插值方法,所以找到合適的曲線控制點(diǎn)是實(shí)現(xiàn)三維巷道仿真的重點(diǎn),也是難點(diǎn)。另外在巷道段加載時(shí),找到合適的加載位置也是要認(rèn)真考慮的。最后,在巷道貼圖處理時(shí),怎樣處理貼圖的屬性,找到合適的貼圖坐標(biāo)也是難點(diǎn)。
三維巷道的功能模塊如圖3所示。
圖3 三維巷道建模系統(tǒng)Fig.3 3Droadway modeling system
1)文件管理功能模塊。主要完成巷道的數(shù)據(jù)處理,主要是對(duì)格式為DXF的CAD文件進(jìn)行處理,將圖紙上的巷道信息在程序的環(huán)境下顯示出來,最終得到巷道的骨架圖,使用戶對(duì)井下巷道有一個(gè)最初的認(rèn)識(shí)。
2)系統(tǒng)交互功能。主要是在建模完成后,可以對(duì)三維模型進(jìn)行的一些操作,可以平移三維模型,并且可以放大縮小,以便用戶能看到自己想看的部分。
3)巷道建模。該部分是本系統(tǒng)最主要的部分,即核心部分,主要完成巷道的三維建模,其中包括各個(gè)巷道段的建模,即直巷道、彎曲巷道和交叉巷道。另外,還要考慮巷道截面不同的情況,即巷道變徑時(shí)的處理方法。
4)顯示效果。該部分是本系統(tǒng)的最終顯示部分,主要為巷道的整體顯示,即整個(gè)巷道群的外部顯示,使用戶可以對(duì)巷道有整體的、三維的、直觀的認(rèn)識(shí)。另外,為了以后的漫游工作,也要對(duì)巷道內(nèi)部進(jìn)行一定的處理,使用戶對(duì)巷道內(nèi)部也有一定了解。最后為了使巷道有一定的逼真性,對(duì)其加上貼圖,使其更逼真,比如,巖石巷就可以在內(nèi)部貼上巖石的貼圖,水泥巷就可以貼上稍細(xì)膩的水泥貼圖,可以使用戶對(duì)巷道的材質(zhì)有一定的了解。
本次仿真實(shí)驗(yàn)是在鄭州大學(xué)的虛擬現(xiàn)實(shí)與地理信息系統(tǒng)實(shí)驗(yàn)室的PC機(jī)上開發(fā)實(shí)現(xiàn)的,實(shí)驗(yàn)的硬件平 臺(tái) 為 Intel(R)3.00GHz,顯 卡 信 息 為GeForce6600GT,內(nèi)存大小為1.49GB。軟件方面使用的是面向?qū)ο箝_發(fā)工具 Visual C++6.0,在Windows XP操作系統(tǒng)環(huán)境下,使用OpenGL圖形庫,屏幕的分辨率是1 280×1024像素。實(shí)現(xiàn)流程如圖4所示。
圖4 實(shí)現(xiàn)流程Fig.4 Implementation process
DXF是Autodesk公司開發(fā)的主要用于Auto-CAD與其它軟件之間進(jìn)行CAD數(shù)據(jù)交換的CAD數(shù)據(jù)文件格式,它的數(shù)據(jù)格式是開放的、矢量的。DXF文件格式可以分為兩類:一類是ASCII格式,另一類是二進(jìn)制格式[3]。ASCII格式具有可讀性好的優(yōu)點(diǎn),但缺點(diǎn)是占有空間較大;而二進(jìn)制格式則具有占有空間小、讀取速度快的優(yōu)點(diǎn)。因其內(nèi)部為ASCII碼,所以即使是不同類型的計(jì)算機(jī)、不同版本的文件,DXF文件也可以完成圖像交換的功能,這是DWG格式的文件達(dá)不到的。另外由于DXF文件可讀性好,用戶可以方便地對(duì)其進(jìn)行修改、編程,最終達(dá)到從外部進(jìn)行編輯、修改的目的[4]。ASCII格式的DXF可以使用文本編輯器打開并查看其基本信息。
系統(tǒng)將巷道分成三個(gè)部分來模擬:直巷道、彎曲巷道、交叉巷道。實(shí)現(xiàn)過程如下:
1)直巷道
對(duì)直巷道來說,其實(shí)最基本的就是巷道剖面的模擬,本文中根據(jù)選用特征點(diǎn)的方法來生成巷道剖面,實(shí)驗(yàn)的線框效果圖如圖5所示。
圖5 直巷道效果圖Fig.5 Straight tunnel effect
2)彎曲巷道
對(duì)彎曲巷道來說,采用貝塞爾曲線插值算法來進(jìn)行編程實(shí)現(xiàn),在用程序?qū)崿F(xiàn)時(shí),需要使用求值器。OpenGL中提供了一維求值器和二維求值器,但由于兩者很相似,而一維求值器更易于描述,所以在本次實(shí)驗(yàn)中使用一維求值器。
貝塞爾曲線是單向量的向量值函數(shù)[5]:
其中u在某個(gè)定義域中變化。貝塞爾表面是雙向量的向量值函數(shù):
其中u、v都在某個(gè)定義域中變化,對(duì)于每個(gè)u(如果是表面,則是u、v),使用C()公式來計(jì)算曲線或曲面上的一個(gè)點(diǎn),為了使用求值器,需要首先定義C()函數(shù),然后啟用此函數(shù),并使用glEvalCoord1()函數(shù)來代替函數(shù)glVertex()。實(shí)驗(yàn)的線框圖效果如圖6(a)所示。
對(duì)于彎曲巷道的實(shí)現(xiàn),常用的拼接算法是在巷道彎曲處加載連續(xù)斷面,使拐角弱化,這種方法適用于彎曲度較小的巷道。這種方法實(shí)現(xiàn)起來簡單,但是在巷道拼接的地方還是不太逼真,不太圓滑,如圖6(b)所示。
圖6 彎曲巷道效果圖Fig.6 Curved tunnel effects
3)交叉巷道
交叉巷道采取的方法前面已經(jīng)詳細(xì)描述,這里就不再贅述,實(shí)驗(yàn)的效果圖分別是使用Bezier曲線完成的Y形岔口和普通岔口,如圖7所示。
圖7 交叉巷道效果圖Fig.7 Cross tunnel effects
使用貝塞爾曲面完成的交叉巷道拼接的效果圖如圖8所示。
圖8 貝塞爾曲面拼接的交叉巷道Fig.8 The Bezier surface patchwork cross tunnels
4)變徑處理
剖面大小不同的巷道也是將對(duì)應(yīng)特征點(diǎn)連接起來形成巷道段,對(duì)于形狀不同的則使用最小對(duì)角線進(jìn)行判斷后再將相應(yīng)的特征點(diǎn)相連,如圖9所示。
圖9 變徑效果圖Fig.9 Variable diameter rendering
紋理貼圖是一個(gè)很復(fù)雜的問題 。在使用紋理貼圖時(shí),必須做出一些編程選擇。紋理可以是一維的、二維的,甚至也可以是三維的,開發(fā)者可以將紋理映射在由一組不規(guī)則多邊形組成的平面上,或?qū)⑺N在曲面上,也可以在一個(gè)甚至多個(gè)方向上重復(fù)使用同一個(gè)紋理來覆蓋物體的表面[5]。除此以外,可以把材質(zhì)紋理直接貼在物體的表面上,來表示物體的形狀或者其它屬性。紋理可以按不同的方式應(yīng)用于物體的表面,如既可以直接畫到物體的表面,調(diào)整物體表面的顏色,也可以將紋理顏色與物體表面顏色相融合[5-6]。
為了使用紋理貼圖,需要執(zhí)行以下步驟[7]:
1)定義紋理、啟動(dòng)紋理。
2)將紋理映射到每個(gè)多邊形點(diǎn)坐標(biāo)上。
3)根據(jù)紋理坐標(biāo)和貼圖多邊形坐標(biāo)完成場(chǎng)景的繪制。
需要注意的是,紋理坐標(biāo)在RGBA模式下才可以使用[8]。
紋理一般定義在單位正方形(0≤u≤1,0≤v≤1)上,稱為紋理空間,理論上,任何定義在這個(gè)空間上的函數(shù)都可以作為紋理函數(shù)。常用的紋理定義是采用離散的方法,即用一個(gè)二維數(shù)組來定義紋理。把二維的紋理圖案映射到三維物體表面時(shí),必須使物體的空間坐標(biāo)與紋理坐標(biāo)一一對(duì)應(yīng)。
另外,紋理貼圖時(shí)還有一個(gè)問題要注意。在紋理生成時(shí),經(jīng)常使用的點(diǎn)取樣方法會(huì)導(dǎo)致圖形嚴(yán)重走樣。走樣的問題是不可避免的,但可以采用一定的措施使問題減小到不明顯。目前減輕走樣的方法有兩種:一種是在適當(dāng)加密取樣之后再進(jìn)行紋理濾波,另一種是先對(duì)紋理進(jìn)行低通濾波后再采樣。部分巷道紋理貼圖后的效果如圖10所示。
圖10 貼圖處理Fig.10 Chartlet processing
實(shí)現(xiàn)巷道模擬后,為了使仿真效果更逼真,又對(duì)實(shí)現(xiàn)結(jié)果添加了光照和材質(zhì),尤其是材質(zhì)方面,使用不同的貼圖可以實(shí)現(xiàn)不同類型的巷道,但在紋理貼圖中,會(huì)出現(xiàn)圖像走樣現(xiàn)象,就是圖像會(huì)顯示為鋸齒狀或臺(tái)階狀。在OpenGL中采取提高分辨率的方法來實(shí)現(xiàn)反走樣,并在實(shí)現(xiàn)過程中采取連續(xù)對(duì)單一面片貼紋理的辦法實(shí)現(xiàn)巷道的逼真模擬。除了模擬巷道外,還添加了交互功能,用戶可以使用鼠標(biāo)來平移巷道,還可以對(duì)想觀察的巷道進(jìn)行放大縮小。
本研究主要實(shí)現(xiàn)了巷道三維模型的仿真,整體巷道的部分效果圖如圖11所示。
圖11 三維巷道Fig.11 Three-dimensional roadway
本研究的創(chuàng)新點(diǎn)在于對(duì)巷道的數(shù)據(jù)處理采取直接讀取DXF文件的方法,提出分段模擬的思想,然后逐個(gè)加載,就像接水管一樣,更方便逼真地完成巷道的三維模擬。在對(duì)交叉巷道模擬時(shí),采用對(duì)巷道段求交線的方法,最后基于交線使用貝塞爾曲面完成拼接。
研究項(xiàng)目實(shí)現(xiàn)了一個(gè)巷道三維建模系統(tǒng)的建立,并解決了其中的關(guān)鍵技術(shù),即彎曲巷道和交叉巷道的圓滑拼接。對(duì)于用戶來說,基于一張CAD圖紙就可以仿真出想要得到的結(jié)果,為用戶了解巷道提供了很大的便利。
金屬礦山的地下工程中的其它項(xiàng)目,如采礦、工作面、豎井等也可以利用本VR技術(shù)實(shí)現(xiàn)可視化,為礦山設(shè)計(jì)和現(xiàn)場(chǎng)管理提供可視化平臺(tái),提高礦山現(xiàn)代化、信息化管理水平。
[1] 季 興 .三維巷道矢量模型生成與動(dòng)態(tài)漫游[D].長沙:中南大學(xué),2010.
[2] 盧義玉,康 勇,夏彬偉 .井巷工程設(shè)計(jì)與施工[M].北京:科學(xué)出版社,2010:55-75,143-161.
[3] 劉傳亮,陸建德 .AutoCAD DXF文件格式與二次開發(fā)圖形軟件編程[J].微機(jī)發(fā)展,2004,14(9):101-104.
[4] 趙曉東,谷曉松,王海龍 .GIS的礦山巷道三維空間構(gòu)模算法研究[J].測(cè)繪科學(xué),2010,35(6):20-22.
[5] 徐 波.OpenGL編程指南[M].北京:機(jī)械工業(yè)出版社,2008:228-285.
[6] 孫家廣.計(jì)算機(jī)圖形學(xué)[M].北京:清華大學(xué)出版社,2004:378-387,491-495.
[7] 吳文國.交互式計(jì)算機(jī)圖形學(xué)—基于OpenGL的自頂向下方法[M].北京:清華大學(xué)出版社,2006:354-360.
[8] 鄭阿奇,丁有和,鄭 進(jìn),等.Visual C++實(shí)用教程[M].2版 .北京:電子工業(yè)業(yè)出版社,2005:1-6.