彭少坤 劉良亮 張 璇 向 宇
(1. 湖北省發(fā)展規(guī)劃研究院有限公司, 湖北 武漢 430074; 2. 寧夏遙感測繪勘查院(寧夏遙感中心), 寧夏 銀川 750021)
隨著信息化技術(shù)的不斷發(fā)展,空間地理信息越來越受到人們的重視,其在三維場景構(gòu)建、數(shù)字孿生等領(lǐng)域的應(yīng)用也越來越多。近年來隨著三維激光掃描技術(shù)的發(fā)展,為礦山巷道三維建模提供了便利,石信肖[1]等利用三維激光掃描技術(shù),利用某煤礦數(shù)據(jù)進(jìn)行建模,結(jié)果表明三維激光掃描技術(shù)在巷道建模中是可行的,但是由于建模軟件等限制,存在模型擬合有較多孔洞的問題。對于全自動化的巷道建模,宮文博[2]提出加載過渡斷面法,魏占營等[3]提出利用巷道數(shù)據(jù)的弧段拓?fù)浣Y(jié)構(gòu),將巷道分成簡單巷道和復(fù)雜巷道,再針對這兩種不同巷道單獨建模,最終結(jié)果顯示兩種方法均可實現(xiàn)巷道建模,但是也存在一些不合理現(xiàn)象,如所有數(shù)據(jù)均處于同一平面且平行,如果不處于同一平面或不平行則拼接困難。江記洲等[4]提出了一種基于點云坐標(biāo)投影變換的三維建模方法,根據(jù)礦井巷道的空間幾何特征,采用柱面投影法將三維點云轉(zhuǎn)化為二維的密度圖像[5],然后基于規(guī)則算法進(jìn)行三角剖分,同時保存二維、三維點云和三角網(wǎng)的拓?fù)潢P(guān)系,最后重建三維巷道模型,但該方法中需要頻繁的人工干預(yù)。Yi C等[6]引入分層建模的概念,應(yīng)用層次分割和元素提取方式,自動導(dǎo)出三維盾構(gòu)隧道測量數(shù)據(jù),根據(jù)點云與圖像的對應(yīng)關(guān)系,提取點云內(nèi)的分段信息,建立相應(yīng)的三維模型,得到了較為精確的隧道結(jié)構(gòu)。但是該方法對數(shù)據(jù)要求較高,需要同時采集高精度的點云與相應(yīng)的圖像信息。張珂等[7]基于當(dāng)前以巷道端點走勢確定巷道走勢的不足,研究了利用巷道拓?fù)潢P(guān)系進(jìn)行測量采點然后基于加載斷面法進(jìn)行三維巷道建模的方式,最后在平頂山煤業(yè)集團(tuán)六礦進(jìn)行了實際應(yīng)用。結(jié)果表明,該方法可更加真實地反映巷道實際情況,但是也存在過于依賴Auto CAD交互采點的缺陷。
針對前人研究成果及問題,本文以巷道單體建模及拼接實現(xiàn)為核心,分別論述了不同巷道數(shù)據(jù)模型、巷道數(shù)據(jù)組織及拓?fù)浣Y(jié)構(gòu)、巷道建模及拼接技術(shù)等,最后采用交互式圖形程序(OpenSceneGraph,OSG)實現(xiàn)了整個巷道的建模與顯示。
隨著測距技術(shù)的發(fā)展,導(dǎo)線測量精度已可比擬三角網(wǎng)測量精度[8]。本文研究數(shù)據(jù)主要來源于某煤礦導(dǎo)線測量數(shù)據(jù)。
通過對巷道模型的分析,目前,有許多方法可用于三維面建模,每種方法各有優(yōu)劣,對于當(dāng)前較主流的三維面模型建模方法分析如下。
多層數(shù)字高程模型(digital elevation model,DEM):該模型以有序數(shù)組的形式表征特性,主要用于巖層建模、地質(zhì)建模等領(lǐng)域,主要是將建模對象分為一層層的DEM加以表示,因此在巷道模型中適用性不佳。
邊界表示(boundary representation,B-rep)建模:B-rep邊界表示模型特點是會詳細(xì)記錄各實體的連接關(guān)系及幾何信息,對后期的幾何運算將非常有利,但是對巷道類似的不規(guī)則幾何形狀其表達(dá)很不方便且效率不高。
線框模型:線框模型以頂點、邊線表示三維模型,對于復(fù)雜對象可較好地模擬各種變化曲線及輪廓,且易于維護(hù)操作。
通過對各種模型的分析,本文選擇線框模型對三維巷道進(jìn)行建模,線框模型具有適應(yīng)性好、易維護(hù)操作等特點,首先可先建模實現(xiàn)三維巷道輪廓,然后線框表面以不規(guī)則三角網(wǎng)填充。
在巷道拓?fù)浣Y(jié)構(gòu)中,巷道拓?fù)浣Y(jié)構(gòu)與城市管網(wǎng)結(jié)構(gòu)類似,可將巷道以中心線為準(zhǔn)抽象為巷道線,巷道線間相互連接形成巷道拓?fù)渚W(wǎng)絡(luò),巷道拓?fù)渚W(wǎng)絡(luò)還包括巷道結(jié)點、節(jié)點、弧段等[9-10]。
(1)結(jié)點:某條巷道的起點及終點。
(2)節(jié)點:某一巷道中拋開結(jié)點之外其他的點,某條巷道上的節(jié)點也能作為其他巷道的結(jié)點。
(3)弧段:即兩個相鄰節(jié)點之間的巷道段,弧段同時包含空間和屬性信息,是組成整個巷道網(wǎng)絡(luò)的重要組成部分。
巷道建模首先需要對巷道數(shù)據(jù)進(jìn)行預(yù)處理,獲取巷道網(wǎng)絡(luò),然后對巷道網(wǎng)絡(luò)進(jìn)行建模。在巷道中每個巷道都具有中心線,中心線是進(jìn)行巷道漫游的基礎(chǔ),巷道模型以每段巷道為基礎(chǔ),建立巷道界面模型,然后以此構(gòu)造線框模型[11]。
在實際巷道三維建模中,導(dǎo)線測量數(shù)據(jù)具有方向性,因此實際構(gòu)建的巷道模型也將是有向圖。模型中的每一段都將抽象為有向圖的節(jié)點,如果巷道區(qū)分方向,巷道模型某段的結(jié)點將加以區(qū)別,如果不區(qū)分方向,則兩端點同等對待[12]。實際巷道網(wǎng)建模步驟描述如下:
(1)讀取巷道及巷道中心線數(shù)據(jù)。
(2)建立相應(yīng)巷道中心線索引。
(3)將中心線索引上的點與建立的巷道網(wǎng)絡(luò)有向圖進(jìn)行對比,如果相交則將這兩個點賦予相同索引并存入點集。
(4)以巷道中心線索引為基礎(chǔ)獲取弧段端點并以任意一端點作為結(jié)點添加到巷道網(wǎng)有向圖。
(5)依次遍歷本巷道上的節(jié)點,重復(fù)步驟(3)、(4)至所有節(jié)點均遍歷完畢。
(6)依次遍歷巷道網(wǎng)中的下一條巷道,重復(fù)步驟(2)、(3)、(4)至全部巷道均遍歷完畢。
2.2.1巷道截面建模
本文中選擇模型斷面構(gòu)建巷道界面模型,根據(jù)實際情況,預(yù)設(shè)模型主要包括梯形、圓筒形、矩形、拱形、三心拱共五種。
對巷道截面點而言,其只有二維的平面信息(xn,yn),為了進(jìn)一步建立截面模型,需要將二維平面點轉(zhuǎn)為三維點,然后根據(jù)實際節(jié)點位置與巷道有向圖將截面進(jìn)行相應(yīng)平移、縮放、旋轉(zhuǎn)。以拱形數(shù)據(jù)為例,具體建模過程如下[3,14]。
(1)截面三維構(gòu)建:直接從數(shù)據(jù)庫獲取的數(shù)據(jù)是二維的平面點(xn,yn),為了順利地進(jìn)行三維空間變換,首先需要將二維點三維化,即將點(xn,yn)轉(zhuǎn)為(xn,yn,0),所有三維點均位于XOY平面,且截面的法向量與Z軸平行。
(2)截面旋轉(zhuǎn)、平移:在上一步中所建立的截面,中心點位于(0,0,0)處,現(xiàn)實中最終用于建模的數(shù)據(jù)是巷道兩個端點上的截面而且必須確保截面的單位法向量與巷道段的相等,第一步先創(chuàng)建所在巷道的端點與截面中心點之間的平移向量并將所建立的截面移動到巷道結(jié)點,第二步通過巷道法向量與截面法向量建立旋轉(zhuǎn)矩陣并將截面上所有的特征點進(jìn)行旋轉(zhuǎn),得到旋轉(zhuǎn)到指定位置后的截面。
(3)交叉點截面旋轉(zhuǎn)與巷道縮放:對于巷道交叉點截面旋轉(zhuǎn)需要構(gòu)造不同的旋轉(zhuǎn)矩陣,即巷道單位法向量改為相交兩巷道的垂直法向量。為了確保巷道模型的真實性,避免出現(xiàn)巷道過窄或過寬情況,需要對變換后的巷道進(jìn)行適當(dāng)?shù)目s放。
2.2.2巷道網(wǎng)面建模
為了實現(xiàn)巷道三維模型的真三維顯示需要對以上截面模型構(gòu)造基于三角索引的不規(guī)則三角網(wǎng)。構(gòu)建三角網(wǎng)主要步驟如下。
(1)點集存儲:為了方便后期建立三角頂點索引,本研究對巷道上下游截面的特征點采取逆時針存儲。
(2)建立三角頂點索引:在OSG中,所有的面均區(qū)分正反,因此在構(gòu)建三角頂點索引時必須保證頂點順序相同,如圖1所示,所建立的三角頂點索引為(A′,B′,B),(B′,C,B),(B′,C′,C)等。
圖1 三角形點索引構(gòu)建
(3)建立三角網(wǎng)面模型:將所建立的點集與三角頂點索引集導(dǎo)入編寫好的程序中,通過程序遍歷與繪制三角形,最終建立三角網(wǎng)面模型。
由于井下巷道相交情況復(fù)雜導(dǎo)致不同巷道相交時會產(chǎn)生鋸齒或裂縫等情況,本文首先將巷道單獨進(jìn)行建模,然后在巷道拼接建模時預(yù)留一定間隙,采用曲線/面圓擬合或插值技術(shù)來達(dá)到平滑拼接,實際操作中巷道拼接建模首先選用貝塞爾曲線擬合[15]。以三岔口為例,具體拼接模型見圖2。
圖2 巷道拼接模型
(1)遍歷巷道網(wǎng)絡(luò)中的各個節(jié)點以及與某一節(jié)點連接的所有巷道段。
(2)根據(jù)連接點巷道向量對連接巷道節(jié)點反方向排序S1、S2、S3并將連接點巷道段截面上的特征點分為左右兩部分S1L、S1R、S2L、S2R、S3L、S3R。
(3)選取(S1R,S2L),(S2R,S3L),(S3R,S1L)上相應(yīng)的特征點構(gòu)造實際所需的貝塞爾曲線并基于曲線上對應(yīng)的特征點以三角索引的不規(guī)則三角網(wǎng)創(chuàng)建曲面模型,以邦底以及邦頂中心線上的貝塞爾曲線特征點為三角網(wǎng)連接點進(jìn)行三角構(gòu)網(wǎng)并做模型拼接。
(4)繼續(xù)遍歷下一節(jié)點,重復(fù)以上步驟至遍歷完所有節(jié)點。
最終部分拼接效果如圖3所示。
(a)任意角度梯形和拱形巷道拼接
(b)任意角度梯形、矩形和拱形三岔口巷道拼接
(c)任意角四岔口巷道圓滑拼接
(d)傾斜井與水平巷道圓滑拼接圖3 三維巷道拼接實現(xiàn)
本研究中采用Microsoft Visual Studio作為開發(fā)工具,利用OSG三維引擎實現(xiàn)三維渲染,最終部分巷道三維仿真及漫游效果如圖4所示。
圖4 三維巷道建模系統(tǒng)原型
本文首先對國內(nèi)外三維巷道建模、拼接等現(xiàn)狀進(jìn)行了深入分析,然后在參考前人研究成果的基礎(chǔ)上對相關(guān)算法及三維顯示技術(shù)進(jìn)行了深入研究,最后基于OSG引擎對三維巷道建模及系統(tǒng)進(jìn)行了實現(xiàn),主要研究成果如下:
(1)針對不同巷道研究了包括巷道斷面加載、巷道網(wǎng)絡(luò)建模、巷道段建模等建模方法并最終進(jìn)行了實現(xiàn)。
(2)通過數(shù)學(xué)方法解決并實現(xiàn)了巷道平滑與無縫拼接問題。
(3)利用面向?qū)ο蟮木幊陶Z言結(jié)合OSG對井下三維巷道系統(tǒng)進(jìn)行了三維可視化實現(xiàn)。
本次研究仍存在一些問題需要進(jìn)一步研究討論:
(1)為構(gòu)建更加貼近實際、高效顯示的三維模型巷道數(shù)據(jù)結(jié)構(gòu)需進(jìn)一步優(yōu)化。
(2)加強(qiáng)巷道拓?fù)潢P(guān)系研究,將巷道組織更細(xì)致。
(3)隨著數(shù)據(jù)量的增加,需對巷道拼接曲面生成算法進(jìn)行深入研究,以期提高顯示效果及效率。