彭少坤 劉良亮 張 璇 向 宇
(1. 湖北省發展規劃研究院有限公司, 湖北 武漢 430074; 2. 寧夏遙感測繪勘查院(寧夏遙感中心), 寧夏 銀川 750021)
隨著信息化技術的不斷發展,空間地理信息越來越受到人們的重視,其在三維場景構建、數字孿生等領域的應用也越來越多。近年來隨著三維激光掃描技術的發展,為礦山巷道三維建模提供了便利,石信肖[1]等利用三維激光掃描技術,利用某煤礦數據進行建模,結果表明三維激光掃描技術在巷道建模中是可行的,但是由于建模軟件等限制,存在模型擬合有較多孔洞的問題。對于全自動化的巷道建模,宮文博[2]提出加載過渡斷面法,魏占營等[3]提出利用巷道數據的弧段拓撲結構,將巷道分成簡單巷道和復雜巷道,再針對這兩種不同巷道單獨建模,最終結果顯示兩種方法均可實現巷道建模,但是也存在一些不合理現象,如所有數據均處于同一平面且平行,如果不處于同一平面或不平行則拼接困難。江記洲等[4]提出了一種基于點云坐標投影變換的三維建模方法,根據礦井巷道的空間幾何特征,采用柱面投影法將三維點云轉化為二維的密度圖像[5],然后基于規則算法進行三角剖分,同時保存二維、三維點云和三角網的拓撲關系,最后重建三維巷道模型,但該方法中需要頻繁的人工干預。Yi C等[6]引入分層建模的概念,應用層次分割和元素提取方式,自動導出三維盾構隧道測量數據,根據點云與圖像的對應關系,提取點云內的分段信息,建立相應的三維模型,得到了較為精確的隧道結構。但是該方法對數據要求較高,需要同時采集高精度的點云與相應的圖像信息。張珂等[7]基于當前以巷道端點走勢確定巷道走勢的不足,研究了利用巷道拓撲關系進行測量采點然后基于加載斷面法進行三維巷道建模的方式,最后在平頂山煤業集團六礦進行了實際應用。結果表明,該方法可更加真實地反映巷道實際情況,但是也存在過于依賴Auto CAD交互采點的缺陷。
針對前人研究成果及問題,本文以巷道單體建模及拼接實現為核心,分別論述了不同巷道數據模型、巷道數據組織及拓撲結構、巷道建模及拼接技術等,最后采用交互式圖形程序(OpenSceneGraph,OSG)實現了整個巷道的建模與顯示。
隨著測距技術的發展,導線測量精度已可比擬三角網測量精度[8]。本文研究數據主要來源于某煤礦導線測量數據。
通過對巷道模型的分析,目前,有許多方法可用于三維面建模,每種方法各有優劣,對于當前較主流的三維面模型建模方法分析如下。
多層數字高程模型(digital elevation model,DEM):該模型以有序數組的形式表征特性,主要用于巖層建模、地質建模等領域,主要是將建模對象分為一層層的DEM加以表示,因此在巷道模型中適用性不佳。
邊界表示(boundary representation,B-rep)建模:B-rep邊界表示模型特點是會詳細記錄各實體的連接關系及幾何信息,對后期的幾何運算將非常有利,但是對巷道類似的不規則幾何形狀其表達很不方便且效率不高。
線框模型:線框模型以頂點、邊線表示三維模型,對于復雜對象可較好地模擬各種變化曲線及輪廓,且易于維護操作。
通過對各種模型的分析,本文選擇線框模型對三維巷道進行建模,線框模型具有適應性好、易維護操作等特點,首先可先建模實現三維巷道輪廓,然后線框表面以不規則三角網填充。
在巷道拓撲結構中,巷道拓撲結構與城市管網結構類似,可將巷道以中心線為準抽象為巷道線,巷道線間相互連接形成巷道拓撲網絡,巷道拓撲網絡還包括巷道結點、節點、弧段等[9-10]。
(1)結點:某條巷道的起點及終點。
(2)節點:某一巷道中拋開結點之外其他的點,某條巷道上的節點也能作為其他巷道的結點。
(3)弧段:即兩個相鄰節點之間的巷道段,弧段同時包含空間和屬性信息,是組成整個巷道網絡的重要組成部分。
巷道建模首先需要對巷道數據進行預處理,獲取巷道網絡,然后對巷道網絡進行建模。在巷道中每個巷道都具有中心線,中心線是進行巷道漫游的基礎,巷道模型以每段巷道為基礎,建立巷道界面模型,然后以此構造線框模型[11]。
在實際巷道三維建模中,導線測量數據具有方向性,因此實際構建的巷道模型也將是有向圖。模型中的每一段都將抽象為有向圖的節點,如果巷道區分方向,巷道模型某段的結點將加以區別,如果不區分方向,則兩端點同等對待[12]。實際巷道網建模步驟描述如下:
(1)讀取巷道及巷道中心線數據。
(2)建立相應巷道中心線索引。
(3)將中心線索引上的點與建立的巷道網絡有向圖進行對比,如果相交則將這兩個點賦予相同索引并存入點集。
(4)以巷道中心線索引為基礎獲取弧段端點并以任意一端點作為結點添加到巷道網有向圖。
(5)依次遍歷本巷道上的節點,重復步驟(3)、(4)至所有節點均遍歷完畢。
(6)依次遍歷巷道網中的下一條巷道,重復步驟(2)、(3)、(4)至全部巷道均遍歷完畢。
2.2.1巷道截面建模
本文中選擇模型斷面構建巷道界面模型,根據實際情況,預設模型主要包括梯形、圓筒形、矩形、拱形、三心拱共五種。
對巷道截面點而言,其只有二維的平面信息(xn,yn),為了進一步建立截面模型,需要將二維平面點轉為三維點,然后根據實際節點位置與巷道有向圖將截面進行相應平移、縮放、旋轉。以拱形數據為例,具體建模過程如下[3,14]。
(1)截面三維構建:直接從數據庫獲取的數據是二維的平面點(xn,yn),為了順利地進行三維空間變換,首先需要將二維點三維化,即將點(xn,yn)轉為(xn,yn,0),所有三維點均位于XOY平面,且截面的法向量與Z軸平行。
(2)截面旋轉、平移:在上一步中所建立的截面,中心點位于(0,0,0)處,現實中最終用于建模的數據是巷道兩個端點上的截面而且必須確保截面的單位法向量與巷道段的相等,第一步先創建所在巷道的端點與截面中心點之間的平移向量并將所建立的截面移動到巷道結點,第二步通過巷道法向量與截面法向量建立旋轉矩陣并將截面上所有的特征點進行旋轉,得到旋轉到指定位置后的截面。
(3)交叉點截面旋轉與巷道縮放:對于巷道交叉點截面旋轉需要構造不同的旋轉矩陣,即巷道單位法向量改為相交兩巷道的垂直法向量。為了確保巷道模型的真實性,避免出現巷道過窄或過寬情況,需要對變換后的巷道進行適當的縮放。
2.2.2巷道網面建模
為了實現巷道三維模型的真三維顯示需要對以上截面模型構造基于三角索引的不規則三角網。構建三角網主要步驟如下。
(1)點集存儲:為了方便后期建立三角頂點索引,本研究對巷道上下游截面的特征點采取逆時針存儲。
(2)建立三角頂點索引:在OSG中,所有的面均區分正反,因此在構建三角頂點索引時必須保證頂點順序相同,如圖1所示,所建立的三角頂點索引為(A′,B′,B),(B′,C,B),(B′,C′,C)等。

圖1 三角形點索引構建
(3)建立三角網面模型:將所建立的點集與三角頂點索引集導入編寫好的程序中,通過程序遍歷與繪制三角形,最終建立三角網面模型。
由于井下巷道相交情況復雜導致不同巷道相交時會產生鋸齒或裂縫等情況,本文首先將巷道單獨進行建模,然后在巷道拼接建模時預留一定間隙,采用曲線/面圓擬合或插值技術來達到平滑拼接,實際操作中巷道拼接建模首先選用貝塞爾曲線擬合[15]。以三岔口為例,具體拼接模型見圖2。

圖2 巷道拼接模型
(1)遍歷巷道網絡中的各個節點以及與某一節點連接的所有巷道段。
(2)根據連接點巷道向量對連接巷道節點反方向排序S1、S2、S3并將連接點巷道段截面上的特征點分為左右兩部分S1L、S1R、S2L、S2R、S3L、S3R。
(3)選取(S1R,S2L),(S2R,S3L),(S3R,S1L)上相應的特征點構造實際所需的貝塞爾曲線并基于曲線上對應的特征點以三角索引的不規則三角網創建曲面模型,以邦底以及邦頂中心線上的貝塞爾曲線特征點為三角網連接點進行三角構網并做模型拼接。
(4)繼續遍歷下一節點,重復以上步驟至遍歷完所有節點。
最終部分拼接效果如圖3所示。

(a)任意角度梯形和拱形巷道拼接

(b)任意角度梯形、矩形和拱形三岔口巷道拼接

(c)任意角四岔口巷道圓滑拼接

(d)傾斜井與水平巷道圓滑拼接圖3 三維巷道拼接實現
本研究中采用Microsoft Visual Studio作為開發工具,利用OSG三維引擎實現三維渲染,最終部分巷道三維仿真及漫游效果如圖4所示。

圖4 三維巷道建模系統原型
本文首先對國內外三維巷道建模、拼接等現狀進行了深入分析,然后在參考前人研究成果的基礎上對相關算法及三維顯示技術進行了深入研究,最后基于OSG引擎對三維巷道建模及系統進行了實現,主要研究成果如下:
(1)針對不同巷道研究了包括巷道斷面加載、巷道網絡建模、巷道段建模等建模方法并最終進行了實現。
(2)通過數學方法解決并實現了巷道平滑與無縫拼接問題。
(3)利用面向對象的編程語言結合OSG對井下三維巷道系統進行了三維可視化實現。
本次研究仍存在一些問題需要進一步研究討論:
(1)為構建更加貼近實際、高效顯示的三維模型巷道數據結構需進一步優化。
(2)加強巷道拓撲關系研究,將巷道組織更細致。
(3)隨著數據量的增加,需對巷道拼接曲面生成算法進行深入研究,以期提高顯示效果及效率。