熊綿國,朱權(quán)潔,劉曉云,呂 壘,盛建龍
(1.武漢科技大學資源與環(huán)境工程學院,湖北武漢,430081;2.北京科技大學土木與環(huán)境工程學院,北京,100083;3.中鋼集團武漢安全環(huán)保研究院,湖北武漢,430081)
基于Blender的礦山井巷模型自動生成研究
熊綿國1,朱權(quán)潔2,劉曉云1,呂 壘3,盛建龍1
(1.武漢科技大學資源與環(huán)境工程學院,湖北武漢,430081;2.北京科技大學土木與環(huán)境工程學院,北京,100083;3.中鋼集團武漢安全環(huán)保研究院,湖北武漢,430081)
以開源三維軟件Blender和礦山基礎信息庫為資源,利用Python編程語言提出礦山井巷幾何模型的計算方法,并通過Blender自帶Python API調(diào)用Blender建模引擎,從而實現(xiàn)對礦山井巷三維模型的自動生成。運行結(jié)果表明所設計的模型簡單易行,完全開源后無需軟件費用。
三維可視化;三維礦山;自動建模;Blender;Python語言
礦山井巷工程是礦山工程的重中之重。對于數(shù)字化礦山建設而言,礦山井巷三維模型的構(gòu)建同樣重要。礦山井巷三維模型構(gòu)建方式主要有:①提取巷道頂板中心線數(shù)據(jù)和斷面數(shù)據(jù),通過計算得出巷道斷面上其他特征點坐標,然后利用“點構(gòu)面、面構(gòu)體”的方式構(gòu)建巷道模型[1];②由導線點逼近中線點并在巷道節(jié)點處加載斷面的算法建立井巷三維模型[2];③應用“導線截面法”形成井巷三維模型,并將井巷看作是其截面沿一定導線軌跡運動形成的實體[3]。傳統(tǒng)的礦山井巷三維模型構(gòu)建大都是利用商業(yè)軟件,根據(jù)已有的礦山井巷信息通過手動方式來實現(xiàn),因而在一定程度上滿足了礦山建設對于井巷三維模型的需求。但是,隨著礦山作業(yè)不斷深入和商業(yè)軟件不斷更新,現(xiàn)有礦山井巷三維模型很難與后期礦山建設的需求無縫銜接。如何快速構(gòu)建礦山井巷三維模型,是業(yè)內(nèi)研究者需要解決的一個難題。
目前,我國礦山井巷三維模型構(gòu)建尚處于初級階段,相關(guān)研究主要是利用專門的商業(yè)軟件進行三維建模開發(fā),或通過開源的OpenGL平臺進行地層開發(fā)[4-6]。實踐表明,利用商業(yè)軟件雖能提高開發(fā)速度,但其后續(xù)的再次開發(fā)存在瓶頸,如不公開的源代碼使二次開發(fā)不可實現(xiàn);而開源的OpenGL平臺雖然公布了源代碼,但其基于C/C++的底層編程方式需要耗費大量的人力和物力資源。為此,本文基于開源軟件Blender提出一種新的礦山井巷三維模型快速構(gòu)建方式,并利用礦山已有的數(shù)據(jù)信息資源,在Blender開源三維軟件平臺下實現(xiàn)了對礦山井巷三維模型的自動生成。
根據(jù)現(xiàn)有礦山資料和數(shù)據(jù)資源,對礦山三維巷道進行自動生成構(gòu)建,其流程如圖1所示。礦山井巷三維模型自動生成流程如下:為建立礦山巷道實體模型,其關(guān)鍵控制點是數(shù)學模型表達,先利用Python編程語言將其轉(zhuǎn)化為計算機識別的程序模型,再通過Python API編寫可供Blender運行的腳本。執(zhí)行腳本代碼后,Blender調(diào)用礦山信息數(shù)據(jù)庫中的相應數(shù)據(jù),通過腳本中的命令流進行自動建模操作。
圖1 礦山三維井巷自動生成流程Fig.1 Auto-generation flow chart of 3D laneway
本研究中井巷模型的建立是基于巷道截面建模方式,根據(jù)已有數(shù)據(jù)計算得出巷道截面頂點坐標連接成面,同理繪制一系列截面,然后將這些截面上邊界線相連接,構(gòu)建巷道實體表面。其主要思路如下:①通過已有地質(zhì)資料或現(xiàn)場測量方式,分析計算得出巷道中心線坐標;②建立巷道截面模型,根據(jù)已有中心導線坐標,計算得出巷道截面各關(guān)鍵點坐標,并依次連接各關(guān)鍵點,使之成為一個閉合的內(nèi)部中空截面;③對于水平正對方向巷道而言,可以直接將兩相鄰截面連接成體(巷道內(nèi)部為中空,無需考慮內(nèi)部);對于轉(zhuǎn)折、傾斜巷道,需要對轉(zhuǎn)折處進行加密(中間截面)的方式使巷道轉(zhuǎn)折更加圓滑真實。
2.1 模型算法的建立
巷道截面是巷道幾何建模的重要參數(shù)。巷道截面有拱形、矩形、梯形以及斜梯形等多種形態(tài)。本文以梯形巷道為例進行研究。圖2為梯形巷道的截面參數(shù),其中:H 為截面垂直高度,m;W 為截面水平寬度,m;O為設定的中心導線在橫截面上的坐標點。
圖2 梯形巷道的截面參數(shù)Fig.2 Sectional parameters of trapezoidal arch
在已知巷道中心導線的前提下,要實現(xiàn)巷道斷面的加載,需要利用巷道截面的參數(shù)分別求出截面上關(guān)鍵點的坐標位置。由圖2可看出,若巷道中心導線點O為(x0,y0,z0),則巷道左幫右?guī)完P(guān)鍵控制點的坐標為
圖3為巷道關(guān)鍵控制點的計算及面的構(gòu)成。由圖3可看出,代碼生成巷道邊界關(guān)鍵控制點是1~8點,它們分別為面A、B上的點。以當前截面A為起始面,B為第二截面,連接AB截面,即可組建一段實體巷道模型。
選擇A平面上的點構(gòu)建A平面的邊界,然后選取A平面上相鄰的兩點和對應B平面上的兩點構(gòu)建巷道外壁。如1、2、5、6四節(jié)點構(gòu)建一個平面,2、3、6、7四節(jié)點構(gòu)建另一平面,就可直至遍歷巷道截面上的邊界關(guān)鍵控制點。然后取B截面作為起始點,構(gòu)建BC段巷道模型,依此類推,直至巷道的結(jié)點,其生成的簡易效果圖如圖4所示。
圖3 巷道關(guān)鍵控制點的計算及面的構(gòu)成Fig.3 Calculation of the key control points and constitution of the faces on laneway
2.2 巷道網(wǎng)絡
礦山巷道是整個礦山井巷工程的核心部分,在實際工程現(xiàn)場,由于受地質(zhì)條件及采礦方法的影響,井下巷道縱橫交錯,其拓撲關(guān)系異常復雜,而且巷道與巷道之間由于功用的不同也存在著很多差異[7]。因此,在實際巷道建模過程中,以巷道平面為單位,建立礦山井下巷道網(wǎng)絡體系。水平上的結(jié)點以水平直線段為單位連接成巷道弧度,然后連接各弧度組成該水平上的巷道網(wǎng)絡。
圖4 簡單巷道模型生成示意圖Fig.4 Simple diagrams of laneway model
礦山巷道以巷道網(wǎng)絡的方式來表達,把巷道中線抽象為弧線段,用巷道的起點、終點和承接點來分別表達弧線段的結(jié)點和節(jié)點。整個礦山井巷工程可以看作是由眾多弧線段連接而成的整體[7]。
2.3 數(shù)據(jù)庫的構(gòu)建
礦山三維井巷模型的自動生成建模是以礦山測量和勘探的信息數(shù)據(jù)作為基礎,利用系統(tǒng)數(shù)據(jù)導入功能,將測得的數(shù)據(jù)導入數(shù)據(jù)庫中作為基礎數(shù)據(jù)。
通過前期準備的資料,整理出巷道掘進相關(guān)參數(shù),主要由巷道中心點、節(jié)點、巷道終點的平面坐標和高程等信息來確定其斷面形狀,整理后保存于初期表單中,或通過導線測量的方式,測量井下中心導線點的坐標以及傾角等相關(guān)數(shù)據(jù)。
根據(jù)建模需求,還可設計若干表單,以用于礦山建模數(shù)據(jù)的存儲與查詢。
3.1 模型的生成
通過前期模型的建立、數(shù)據(jù)的存儲,即可迅速生成礦山井巷三維模型。圖5為利用代碼實現(xiàn)的礦山模型示意圖,其中圖5(a)為普通巷道,圖5(b)為兩相交巷道生成后的結(jié)果,圖5(c)為某礦-65~-305 m礦體的生成圖,圖5(d)為地表生成示意圖。與傳統(tǒng)的手動繪制三維模型相比,Blender提供的Python API可以通過命令流的方式進行三維模型的繪制。通過編制代碼可以快速生成礦山模型,便于模型的修改和添加,同時開發(fā)速度便捷迅速。
3.2 巷道轉(zhuǎn)折及連接處的處理
圖5 生成的相應礦山井巷模型Fig.5 Corresponding models generated
對于復雜的礦山井巷工程而言,巷道不可能保持水平垂直進行延伸。在巷道的掘進過程中,需要不斷從經(jīng)濟利益、安全等角度出發(fā)來考慮礦體及運輸距離等,因此,其方向會不斷發(fā)生變化。在巷道的自動生成建模中需要對此因素進行分析,對相交的或轉(zhuǎn)折的巷道作一些處理。例如,當巷道轉(zhuǎn)折較大時,可以選擇直接將巷道靠外側(cè)界面上的點直接相連接,以保證巷道聯(lián)通的真實性。
利用Blender三維開源軟件平臺和Python編程語言可實現(xiàn)礦山井巷三維模型的快速自動生成。此外,基于Blender與Python開發(fā)平臺,可從以下幾個方面展示其應用前景:
(1)礦山動態(tài)生產(chǎn)模擬研究。在礦山虛擬環(huán)境中,用戶選定設置好的運輸車模型,輸入相應的控制指令后,系統(tǒng)以三維立體圖動態(tài)顯示“裝礦-運礦-卸礦”的生產(chǎn)過程。
(2)Python語言擁有眾多的數(shù)學分析、工程仿真等模塊,借助這些模塊編程可以實現(xiàn)礦山的生產(chǎn)優(yōu)化、仿真以及線性規(guī)劃,并可以提供模糊數(shù)學等理論為礦山開采安全提供幫助。
(3)基于Blender平臺的數(shù)字化礦山基礎信息平臺的開發(fā)研究。礦山基礎信息平臺的搭建一直是礦山信息化進程的關(guān)鍵之一,將虛擬現(xiàn)實技術(shù)以Web3D方式展示可完善礦山信息化的內(nèi)容。
圖6為基于Blender平臺的數(shù)字化礦山開發(fā)研究平臺結(jié)構(gòu)體系。本研究所開發(fā)的軟件平臺已運行正常,整個結(jié)構(gòu)體系基本上實現(xiàn)所設計的系統(tǒng)目標。
圖6 基于Blender的數(shù)字化礦山開發(fā)研究平臺結(jié)構(gòu)體系Fig.6 Architecture of development platform for digital mine based on Blender
(1)完全應用開源軟件進行開發(fā),為后續(xù)的研究提供了保證。利用Blender和Python語言建立礦山模型基本上解決了傳統(tǒng)構(gòu)建礦山井巷三維模型所存在的問題。
(2)利用編程的方式實現(xiàn)礦山井巷三維模型的快速建立。在模型的基礎上,調(diào)用數(shù)據(jù)庫中的數(shù)據(jù)即可快速生成礦山井巷三維模型。
(3)Blender自身擁有物理仿真功能,而且Python提供了系統(tǒng)仿真和分析軟件包SimPy,這為礦山井巷三維可視化仿真提供了有利條件。
[1] J Dimitrov,Y Lybenov.Adapting of some free programs for constructing the elements of mining tech-nology[C]//International Scientific Conference Computer Science’2008,2008:532-534.
[2] B Wiki.Python script[EB/OL].(2009-08-29)[2009-12-11].http://wiki.blender.org/index.php/Doc:Manual/Extensions/Python.
[3] 沈殊璇,薄亞明.適合于科學計算的腳本語言Python[J].微計算機應用,2002(9):289-291.
[4] 李賀英,龔春秀,楊鵬.基于OpenGL的礦山井巷工程三維設計[J].礦業(yè)工程,2006(3):58-61.
[5] 朱權(quán)潔.基于Blender引擎的礦山虛擬現(xiàn)實自動建模與運輸仿真研究[D].武漢:武漢科技大學,2010.
[6] 葛永慧,王建民.礦井三維巷道建模方法的研究[J].工程勘察,2006(10):46-49.
[7] 汪云甲,伏永明.礦井巷道三維自動建模方法研究[J].武漢大學學報:信息科學版,2006(12):1 097-1 100.
Auto-generation of mine shaft engineering model based on Blender
Xiong Mianguo1,Zhu Quanjie2,Liu Xiaoyun1,Lu Lei3,Sheng Jianlong1
(1.College of Resources and Environmental Engineering,Wuhan University of Science and Technology,Wuhan 430081,China;2.School of Civil and Environmental Engineering,University of Science and Technology Beijing,Beijing 100083,China;3.Wuhan Safety and Environmental Protection Research Institute,Sinosteel Corporation,Wuhan 430081,China)
Based on the open-source 3D software Blender and mining-based information database,this paper uses the Python programming language to arrive at the calculation method of mine geometric model.By calling Blender modeling engine through Python API,it has realized the auto-generation of 3D model of the mine shaft engineering.The model is found to be simple,feasible and what’s more,costless thanks to the use of completely open-source software.
3D visualization;3D digital mine;auto modeling;Blender;Python language
TD214
A
1674-3644(2012)04-0260-05
[責任編輯 徐前進]
2012-02-10
熊綿國(1984-),男,武漢科技大學碩士生.E-mail:chy-88621@163.com
盛建龍(1964-),男,武漢科技大學教授.E-mail:wkdsjl@163.com