相關(guān)鏈接: 中國(guó)安全網(wǎng) 中國(guó)質(zhì)量網(wǎng) 中國(guó)論文網(wǎng) 中國(guó)資訊網(wǎng)
作者:張毅
虛擬現(xiàn)實(shí)技術(shù)在在國(guó)外如美國(guó)、加拿大等國(guó)起步較早、發(fā)展較快,并被廣泛應(yīng)用于礦山井巷工程的設(shè)計(jì)和優(yōu)化、礦山安全培訓(xùn)與教學(xué)、爆破工藝優(yōu)化、礦山運(yùn)輸調(diào)度系統(tǒng)的優(yōu)化、礦山事故反演與預(yù)測(cè)以及科研成果展示等領(lǐng)域。我國(guó)虛擬現(xiàn)實(shí)技術(shù)和仿真技術(shù)起步較晚,起初科研人員利用逼真的三維礦山工程環(huán)境,使井下作業(yè)人員加深對(duì)工作環(huán)境的認(rèn)知,并開展了礦山災(zāi)害、事故的預(yù)演、應(yīng)急機(jī)制分析,從而降低風(fēng)險(xiǎn)。在這方面,國(guó)內(nèi)諸多科研院所開展了大量研究。張瑞新等分析了VR(虛擬現(xiàn)實(shí)技術(shù))的特點(diǎn),并總結(jié)了該技術(shù)在礦山安全領(lǐng)域的應(yīng)用現(xiàn)狀,如采礦作業(yè)模擬、動(dòng)態(tài)風(fēng)險(xiǎn)模擬、安全評(píng)估以及安全培訓(xùn)和實(shí)時(shí)監(jiān)控等,F(xiàn)階段虛擬現(xiàn)實(shí)環(huán)境的構(gòu)建多采用商業(yè)軟件,汪云甲等通過(guò)研究巷道三維模型表達(dá)、關(guān)鍵數(shù)據(jù)的提取和組織,提出了三維巷道自動(dòng)建模方法。歐陽(yáng)治華團(tuán)隊(duì)利用Blender和Python實(shí)現(xiàn)了礦山三維井巷的自動(dòng)生成,并構(gòu)建了基于SimPy模塊的礦山生產(chǎn)仿真模擬與優(yōu)化。
基于此背景,本文提出了一種利用Blender和Python快速自動(dòng)構(gòu)建礦山三維模型以及虛擬現(xiàn)實(shí)系統(tǒng)的方法,減少了手動(dòng)建模工作量,大大加速了開發(fā)速度。
1 技術(shù)原理與設(shè)計(jì)方案
礦山三維模型及漫游系統(tǒng)的構(gòu)建需開展以下三方面工作:①礦山基礎(chǔ)數(shù)據(jù)庫(kù)的建立與數(shù)據(jù)的錄入;②礦山三維實(shí)體模型生成算法的建立;③漫游體系的構(gòu)建。其中,第一部分由礦山前期勘探獲取,第二、三部分的實(shí)現(xiàn)基于開源軟件Blender和Python編程語(yǔ)言。其中,Python語(yǔ)言是一種面向?qū)ο蟆⒔忉屝缘挠?jì)算機(jī)語(yǔ)言,具有功能強(qiáng)大、語(yǔ)言簡(jiǎn)練的特點(diǎn),并提供了大量運(yùn)算、建模、仿真模塊。Blender三維動(dòng)畫制作軟件是一款跨平臺(tái)的全能三維制作軟件,它提供了從建模、動(dòng)畫到渲染、后期處理等一系列功能,具有“麻雀雖小五臟俱全”的特點(diǎn)。Blender提供的Python API是快速構(gòu)建礦山模型的基礎(chǔ)和關(guān)鍵,該接口的提供使利用腳本自動(dòng)建模、貼圖和渲染等成為現(xiàn)實(shí)。兩款軟件為本文研究提供了平臺(tái)和技術(shù)支撐。利用該API編寫模型可以實(shí)現(xiàn)礦山三維實(shí)體模型的自動(dòng)生成,即以Python函數(shù)建立數(shù)學(xué)模型,在Blender中生成并展示三維實(shí)體,包括虛擬現(xiàn)實(shí)環(huán)境的構(gòu)建。
本文提出以開源軟件Blender為開發(fā)引擎,應(yīng)用Python語(yǔ)言快速建立礦山虛擬現(xiàn)實(shí)仿真系統(tǒng)的方法,其架構(gòu)圖如圖1所示。系統(tǒng)架構(gòu)可劃分為數(shù)據(jù)庫(kù)層、中間件層和應(yīng)用層三大部分。①數(shù)據(jù)庫(kù)層:數(shù)據(jù)庫(kù)層保存有礦山基礎(chǔ)數(shù)據(jù),如巷道參數(shù)、鉆孔信息、礦體厚度、傾角等。②中間層提供了系統(tǒng)軟件與應(yīng)用軟件間的連接,并負(fù)責(zé)溝通系統(tǒng)各部分。在系統(tǒng)模型生成過(guò)程中,主要是指利用Python腳本編制實(shí)體模型的算法(如井巷、礦體等),并控制Blender實(shí)現(xiàn)礦山模型的自動(dòng)生成與角色漫游。③應(yīng)用層則是上述工作的應(yīng)用,包括虛擬漫游、可視化仿真等。
2礦體自動(dòng)生成的實(shí)現(xiàn)
不同于常規(guī)二維展示方法(如地質(zhì)剖面圖、平面圖等),三維空間實(shí)體模型更為直觀。以地下礦體模型最為典型。地下礦體隱伏于地下,且形態(tài)不規(guī)則,因此利用常規(guī)方法構(gòu)建礦體較為復(fù)雜。
2.1 礦體生成算法
三維礦體模型的構(gòu)建流程為:將三維礦體模型進(jìn)行經(jīng)緯切片,利用地質(zhì)勘探及插值方法獲取切片上的關(guān)鍵點(diǎn)坐標(biāo),利用貝塞爾曲線按一定方法進(jìn)行連接勾勒出礦體邊界輪廓線,逐層插值精細(xì)構(gòu)建,最終以線構(gòu)面形成封閉的礦體表面。貝塞爾曲線是數(shù)值分析領(lǐng)域非常重要的參數(shù)曲線,可用于構(gòu)建平滑的曲線模型,其基本原理與線性插值相仿,如式(1)所示:
式中:B為貝塞爾函數(shù),P,、Po為已知點(diǎn)。
三次貝塞爾曲線的數(shù)學(xué)表達(dá)模型如(2)所示,該模型可以由PO、P.、P:和P,4個(gè)點(diǎn)來(lái)進(jìn)行描述(如圖2),其中B點(diǎn)為曲線切點(diǎn),R。、R1為曲線描述的交點(diǎn),Qo、Qi、Q2分別為中間點(diǎn)。曲線一般不會(huì)經(jīng)過(guò)JP,或P:,其軌跡為由P。向P,,并從P:來(lái)到P,。
2.2礦體生成代碼
為了快速、自動(dòng)生成礦體模型,利用Python語(yǔ)言編寫貝賽爾曲線函數(shù),并通過(guò)Blender API生成礦體實(shí)體,礦體三維模型自動(dòng)生成流程圖。
1)建立貝塞爾曲線數(shù)學(xué)模型。利用Python語(yǔ)言編寫了三次貝塞爾曲線的數(shù)學(xué)模型Bezier(),其中Po、P.、P2和P3分別為式(2)所述關(guān)鍵參數(shù)點(diǎn)。
2)礦體截面關(guān)鍵點(diǎn)的求取。將勘探鉆孔信息等基礎(chǔ)數(shù)據(jù)整理導(dǎo)人數(shù)據(jù)庫(kù),調(diào)用上述模型自動(dòng)計(jì)算礦體表面關(guān)鍵點(diǎn)坐標(biāo)信息。三維模型的精細(xì)程度與勘探信息密切相關(guān)。
3)三維礦體模型的生成。將關(guān)鍵點(diǎn)連接成線,并逐層(經(jīng)緯平面)進(jìn)行繪制,形成閉合曲線,并利用face函數(shù)的Append命令將各層輪廓線連接,最終構(gòu)建礦體表面模型。
2.3礦體的自動(dòng)生成
為了清晰地反演礦體生成過(guò)程,以湖北某礦為例,對(duì)該礦-305~- 65m礦體形態(tài)進(jìn)行研究,構(gòu)建礦體三維模型。由于篇幅原因,對(duì)該模型數(shù)據(jù)進(jìn)行了簡(jiǎn)化,僅選取了該礦- 65m、-125m、- 185m以及- 305m中段地質(zhì)平面圖進(jìn)行研究,見(jiàn)圖3。利用這些勘探數(shù)據(jù),按照上述流程即可生成礦體表面三維形態(tài),進(jìn)一步即可構(gòu)建礦體實(shí)體模型。
該礦體三維模型的生成過(guò)程如圖4所示,其中圖4(a)為貝塞爾曲線模型生成關(guān)鍵點(diǎn)后連接構(gòu)成的礦體表面邊界線,圖4(a)中右下角小圖為- 65m和-125m礦體邊界線;圖4(b)為上述4個(gè)中段礦體邊界線(輪廓線)連接形成的礦體表明模型,最終模型的構(gòu)建還需剖面輪廓線的細(xì)化處理。
3地表地形的生成
3.1 基于分形理論的礦區(qū)地形建模
礦區(qū)地標(biāo)自然環(huán)境(地貌等)的生成采用分形幾何法進(jìn)行創(chuàng)建,該方法區(qū)別于傳統(tǒng)歐幾里德幾何學(xué),可完好模擬、仿真復(fù)雜,無(wú)需的礦山地形地貌幾何形態(tài)。假設(shè)將物體分為Ⅳ等份,其分形維度D可表述為:
式中,R為每一份的縮放比例。
3.2 地表模型的構(gòu)建和生成
為了實(shí)現(xiàn)地表三維模型的構(gòu)建,引入內(nèi)核模型為分形幾何理論的Blender平臺(tái)開源包InnerWorld,該軟件包能夠?qū)崿F(xiàn)地形模型的自動(dòng)構(gòu)建。三維地表模型的構(gòu)建流程為:①DXF模型文件導(dǎo)人Blender。將DTM數(shù)字地域文件轉(zhuǎn)化為DXF格式文件,并導(dǎo)入到Blender中。②水平投影面的網(wǎng)格劃分。以某一固定高程XY平面作為固定平面,以分形和插值算法,對(duì)該平面進(jìn)行網(wǎng)格劃分。③導(dǎo)入DTM數(shù)據(jù),使數(shù)據(jù)點(diǎn)盡量落到網(wǎng)格交點(diǎn)上,形成高低起伏的新三維地標(biāo)模型。其組織流程如圖5所示。
圖6所示為投影面網(wǎng)格劃分與地表模型生成示意圖。其中,圖6(a)為利用Python腳本實(shí)現(xiàn)平面模型的插值計(jì)算與自動(dòng)劃分,隨著網(wǎng)格劃分加密,模型表面顯得更為平滑、真實(shí);圖6(b)為導(dǎo)入DTM數(shù)據(jù)后的地表三維形態(tài)。
4礦山三維井巷模型的自動(dòng)生成
4.1 巷道模型的生成算法
巷道截面則是構(gòu)建巷道幾何模型的重要參數(shù),其形態(tài)包括拱形、梯形等,本文以梯形巷道為例進(jìn)行模型自動(dòng)生成的研究。要實(shí)現(xiàn)巷道建模,首先獲取描述巷道截面的連續(xù)關(guān)鍵點(diǎn)的參數(shù)信息(如坐標(biāo)值、傾角等)。假設(shè)梯形巷道的中心導(dǎo)線點(diǎn)p的坐標(biāo)為(xo,Yo,zo),截面的垂高為h,截面水平中線的寬度為w,巷道上下邊長(zhǎng)已知,則根據(jù)等腰梯形定理可以計(jì)算A、B、C、D各定點(diǎn)的空間坐標(biāo),并按照一定順序標(biāo)號(hào)(如圖7)。然后以四邊形“面”的形式組織各個(gè)關(guān)鍵節(jié)點(diǎn)構(gòu)建巷道模型數(shù)據(jù)形式,如:( Al.A2,B2,Bl),(Bl, B2, C2, Cl),(Cl, C2, D2, Dl),(Dl,D2,A2,Al);其中Al、A2等分別為巷道截面節(jié)點(diǎn)坐標(biāo)的編號(hào)。
在完成對(duì)關(guān)鍵點(diǎn)坐標(biāo)的求取之后,運(yùn)用中心導(dǎo)線和“加載”的巷道斷面參數(shù)的建立巷道實(shí)現(xiàn)三維井巷的自動(dòng)生成與構(gòu)建。
4.2 三維巷道模型的生成
梯形巷道三維實(shí)體模型的生成過(guò)程如圖8所示。
①數(shù)據(jù)庫(kù)的連接與調(diào)用。在“控制面板”中建立數(shù)據(jù)源,并連接數(shù)據(jù)庫(kù)“VSData”。②巷道截面類型的選擇。③巷道截面連續(xù)節(jié)點(diǎn)的計(jì)算。根據(jù)從數(shù)據(jù)庫(kù)中得到的巷道參數(shù)以及中心導(dǎo)線點(diǎn)的字典cen_verts,利用自定義的計(jì)算巷道截面連續(xù)節(jié)點(diǎn)的函數(shù),自動(dòng)連續(xù)算出各關(guān)鍵節(jié)點(diǎn)坐標(biāo)信息。④利用“面生成”函數(shù)CreateFaces(),自動(dòng)生成邊幫面和頂?shù)酌,并利用Faces. append()進(jìn)行面組合。⑤礦山井巷實(shí)體模型的生成。將上述參數(shù)信息賦給Tunnel—verts函數(shù),執(zhí)行BPyAddMesh. add—mesh—simple()獲得三維實(shí)體模型。其效果圖如圖9所示,為最終構(gòu)建的局部三維巷道模型。
4.3礦山開拓系統(tǒng)的構(gòu)建
以湖北某礦為實(shí)例,對(duì)該礦- 340m、- 270m和- 410m井巷工程三維實(shí)體模型的自動(dòng)構(gòu)建進(jìn)行研究。最終獲得如圖10的礦區(qū)開拓系統(tǒng)三維模型,其中圖10(a)為X-Y坐標(biāo)平面投影圖,圖10(b)為三維透視圖。
5 礦山虛擬漫游與可視化仿真的實(shí)現(xiàn)
與傳統(tǒng)的按指定路線進(jìn)行漫游方式不同,Blender提供的“Logic Panel”面板可以實(shí)現(xiàn)靈活的交互式漫游,通過(guò)人為操作(如鍵盤、鼠標(biāo)等)在虛擬環(huán)境中隨意漫游(自帶碰撞檢測(cè)),并通過(guò)相關(guān)聯(lián)的Python腳本實(shí)現(xiàn)對(duì)運(yùn)動(dòng)速度、方向等參數(shù)的控制。此外,Blender提供的NLA和Action動(dòng)畫可以實(shí)現(xiàn)角色表情、動(dòng)作的仿真,使整個(gè)虛擬系統(tǒng)更為形象和真實(shí)。
5.1 礦山虛擬漫游的系統(tǒng)控制
開發(fā)者選取相應(yīng)的模型,按F4進(jìn)入Blender界面中邏輯面板,對(duì)相關(guān)的交互參數(shù)進(jìn)行設(shè)置,其具體設(shè)置步驟如下:
1)礦車運(yùn)動(dòng)的參數(shù)設(shè)定。利用Associated Ob-jects將井下運(yùn)輸車mlne_car與設(shè)置的參數(shù)相關(guān)聯(lián),添加傳感器“mine—car”,在“sensor type”中選擇“Keyboard”,Key處按下鍵盤上的“W鍵”;然后將sensor與控制器Contrallers相關(guān)聯(lián),并在Actuators中添加相應(yīng)動(dòng)作類型“Motion”(設(shè)置Loc值等)。
2)設(shè)置鍵盤按鍵屬性。如分別將鍵盤按鍵“W”、“S”、“A”、“D”對(duì)應(yīng)物體漫游運(yùn)動(dòng)時(shí)的“前進(jìn)”、“后退”、“左移”、“右移”操作(如圖11所示),實(shí)現(xiàn)真實(shí)的人機(jī)交互。
5.2 礦山虛擬漫游與仿真的實(shí)現(xiàn)
虛擬漫游系統(tǒng)給人以身臨其境的感受,在Blender平臺(tái)下可以通過(guò)創(chuàng)建虛擬人物實(shí)現(xiàn)交互漫游操作,并賦予行走、跳躍、轉(zhuǎn)身、抬頭、低頭等人的行為動(dòng)作。如給定物體Empty,將其與Camera綁定,并賦予W、S、A、D為前后左右移動(dòng),U、N為視角上下偏移,如圖12所示,圖中演示了在礦山巷道中行進(jìn)時(shí)的景象。
利用Python語(yǔ)言的SimPy包可以實(shí)現(xiàn)對(duì)礦山生產(chǎn)系統(tǒng)的仿真與優(yōu)化。如圖13所示為礦山某中段生產(chǎn)過(guò)程的仿真示意圖,主要模擬了“卸礦一運(yùn)礦一提升”3個(gè)過(guò)程:圖中編號(hào)①的圖形演示了礦車按照設(shè)定好的路線進(jìn)行產(chǎn)運(yùn)作業(yè);編號(hào)②圖形為運(yùn)輸過(guò)程中的情形,礦車在完畢裝礦任務(wù)后向溜井進(jìn)發(fā)并卸礦,電機(jī)車在溜井井底等待裝礦,并運(yùn)送至破碎硐室;③經(jīng)過(guò)破碎機(jī)破碎后,礦石被箕斗轉(zhuǎn)運(yùn)并提升至地表。除了生產(chǎn)過(guò)程可視化外,利用SimPy離散軟件包建立相應(yīng)模型可以對(duì)出礦過(guò)程進(jìn)行優(yōu)化。
6結(jié)論
通過(guò)上述研究可以看出,利用上述快速構(gòu)建平臺(tái),在基礎(chǔ)信息翔實(shí)的情況下,整個(gè)開發(fā)過(guò)程簡(jiǎn)單,無(wú)需大量人力和財(cái)力,在完成實(shí)體算法后,實(shí)體模型可以快速自動(dòng)生成,單獨(dú)一人短期內(nèi)即可快速開發(fā)礦山三維實(shí)體模型、建立虛擬現(xiàn)實(shí)系統(tǒng)。
1)提出了基于Blender和Python開源軟件開發(fā)礦山虛擬現(xiàn)實(shí)系統(tǒng)的方法。通過(guò)實(shí)際操作和驗(yàn)證,該方法具有開發(fā)速度快、開發(fā)要求低(硬件、人員和費(fèi)用等)且兼容性和可擴(kuò)展性強(qiáng)等優(yōu)勢(shì),高?蒲袌F(tuán)隊(duì)可以引入該方法用于虛擬現(xiàn)實(shí)仿真系統(tǒng)的開發(fā)。
2)建立了礦山井巷工程、礦體以及地表形態(tài)的算法,利用Python語(yǔ)言建立了相應(yīng)的自動(dòng)生成代碼,最后建立了一整套用于自動(dòng)生成礦山模型的方法及流程。
3)利用Blender提供的功能實(shí)現(xiàn)了礦山虛擬現(xiàn)實(shí)的交互操作,并借助Python提供的Simpy包對(duì)礦山生產(chǎn)過(guò)程仿真優(yōu)化進(jìn)行了初探。隨著Blender軟件不斷完善和功能增強(qiáng),以Python編程語(yǔ)言結(jié)合Blender進(jìn)行虛擬現(xiàn)實(shí)系統(tǒng)的開發(fā)將具有廣闊的前景。
7摘要:為了實(shí)現(xiàn)礦山三維實(shí)體模型和虛擬現(xiàn)實(shí)的快速搭建與實(shí)現(xiàn),分析了當(dāng)前數(shù)字化礦山建?梢浦残圆睢U(kuò)展性不靈活、開發(fā)難度大的缺陷,提出了一種礦山三維模型及虛擬現(xiàn)實(shí)體系的自動(dòng)構(gòu)建方法:基于Blender開源軟件提供的建模平臺(tái),利用Python語(yǔ)言編寫礦山實(shí)體的表方法與生成算法;利用礦山基礎(chǔ)信息,實(shí)現(xiàn)了對(duì)礦山井巷、礦體等三維實(shí)體模型的自動(dòng)、快速構(gòu)建,并以礦山井巷工程、礦體以及地表模型等實(shí)體模型的構(gòu)建為例進(jìn)行了演示;利用Blender腳本實(shí)現(xiàn)對(duì)三維實(shí)體模型的快速渲染,初步建立了礦山虛擬現(xiàn)實(shí)環(huán)境與仿真系統(tǒng),并利用驅(qū)動(dòng)內(nèi)核實(shí)現(xiàn)虛擬情景的演示。結(jié)果表明,該方法具有開發(fā)快捷、要求低等特點(diǎn),為數(shù)字化礦山建設(shè)提供了一種新的思路。