譚浩迪,張鈺奇,趙華東,2
(1. 鄭州大學機械與動力工程學院,河南 鄭州 450001; 2. 河南省智能制造研究院,河南 鄭州 450001)
水工金屬結(jié)構(gòu)是水庫大壩用于水流調(diào)控的關(guān)鍵設(shè)施,其運行安全決定著整個水利工程與下游人民生命財產(chǎn)安全[1,2]。近年來,我國大部分水庫雖已除險加固,但傳統(tǒng)的人工檢查及定期靜態(tài)檢測難以監(jiān)測其運行狀態(tài)中動態(tài)風險[3]。因此有必要對水工金屬結(jié)構(gòu)進行實時在線安全監(jiān)測,確保設(shè)備的正常運行[4,5]。隨著水利水電與計算機技術(shù)的不斷發(fā)展,基于傳統(tǒng)的二維監(jiān)測管理方式已經(jīng)不能滿足水利設(shè)施對于水工金屬結(jié)構(gòu)的安全監(jiān)測需求,因此充分實現(xiàn)設(shè)備的虛擬三維可視化監(jiān)測、提高設(shè)備的人機交互能力,對于水工金屬結(jié)構(gòu)的信息化和智能化安全監(jiān)測具有重要意義[6-8]。
新時代的交叉學科對于推進水利水電技術(shù)進入信息化和智能化起關(guān)鍵作用,其中虛擬現(xiàn)實技術(shù)的應(yīng)用就是一大重要方面,虛擬現(xiàn)實技術(shù)是三維計算機圖形學和先進輸入輸出設(shè)備的自然延伸,可以使用戶進入一個虛擬空間,進行實時交互,感知和操控虛擬世界中的各種物體,已經(jīng)成功運用在航空航天、醫(yī)療、軍工、以及教育等領(lǐng)域[9,10]。在水利行業(yè)中,王乃欣[11]等基于虛擬現(xiàn)實技術(shù)模擬了淤地壩潰決災(zāi)害,為淤地壩的應(yīng)急管理提供了參考;葛從兵[12]等基于Unity3d 開發(fā)了水庫大壩巡視檢查培訓(xùn)系統(tǒng),用于管理人員培訓(xùn)與能力提高;張盈[13]等基于NFC 物聯(lián)網(wǎng)研發(fā)了虛擬現(xiàn)實防洪應(yīng)急演練云平臺,使防洪演練成本大大降低;于輝[14]等基于Unity3d 研發(fā)了一款抽水蓄能電站事故應(yīng)急處理仿真系統(tǒng),用于事故處理和應(yīng)急演練。通過研究發(fā)現(xiàn):大量的國內(nèi)外研究學者在虛擬現(xiàn)實技術(shù)已做出卓有成效的工作,但目前針對水利設(shè)施安全管理的應(yīng)用主要體現(xiàn)在教育培訓(xùn)與三維事故預(yù)演,對于水工金屬結(jié)構(gòu)健康監(jiān)測與虛擬現(xiàn)實技術(shù)相結(jié)合的可視化與信息化,尚有待做進一步研究。
本文以陸渾水庫溢洪道水工金屬結(jié)構(gòu)為研究對象,開展虛擬監(jiān)測系統(tǒng)關(guān)鍵技術(shù)研究,對其主體部分的弧形閘門及液壓式啟閉機研究開發(fā)了配套的安全監(jiān)測虛擬系統(tǒng)。該系統(tǒng)結(jié)合輕量化建模技術(shù)、UV 貼圖技術(shù)及Unity3d 引擎,將溢洪道全景造型融入傳統(tǒng)監(jiān)管界面,為其賦予虛擬現(xiàn)實技術(shù)的多種交互功能。并針對虛擬監(jiān)測系統(tǒng)中自動漫游相機角度轉(zhuǎn)向、水閘模型人機交互、水流效果展示與監(jiān)測數(shù)據(jù)可視化功能等關(guān)鍵技術(shù)進行了詳細研究。最終實現(xiàn)了水工金屬結(jié)構(gòu)安全監(jiān)測與虛擬場景的交互融合。
虛擬監(jiān)測系統(tǒng)的開發(fā)目標,是通過Unity3D 實現(xiàn)對整個仿真過程的數(shù)字化、信息化及可視化監(jiān)控和管理,在開發(fā)過程中需要實現(xiàn)以下的性能指標:
場景的真實性:為了保證了系統(tǒng)的真實性,模型應(yīng)該1∶1還原現(xiàn)實場景;所有貼圖都應(yīng)來源與現(xiàn)場照片,通過PhotoShop 軟件進行適當修改;友好的交互性:UI界面應(yīng)該是友好的,用戶一看就明白,易于理解,無困惑;較高的渲染幀率:虛擬系統(tǒng)應(yīng)當具有較高的渲染幀率,使得整個漫游過程流暢,不會讓人有暈眩感,因此對模型進行輕量化處理;基礎(chǔ)軟件模塊:采用模塊化可復(fù)用的架構(gòu)設(shè)計,方便后期繼續(xù)開發(fā)降低維護難[15];良好的可擴展性:實驗平臺軟件的代碼構(gòu)建過程中,應(yīng)考慮后期需求變更時的擴展性,當有新的需求是,可以及時的添加新的功能[16]。
安全檢測虛擬系統(tǒng)的開發(fā),需依據(jù)現(xiàn)有二維界面管理系統(tǒng),融合虛擬現(xiàn)實技術(shù)進行系統(tǒng)功能分析與設(shè)計。通過構(gòu)建虛擬系統(tǒng),實現(xiàn)場景漫游、人機交互、數(shù)據(jù)交互等三大功能。該系統(tǒng)總體架構(gòu)如圖1 所示,由設(shè)備成、數(shù)據(jù)層、仿真層、功能層、應(yīng)用層組成[17]。
圖1 虛擬安全監(jiān)測系統(tǒng)總體架構(gòu)Fig.1 Overall architecture of virtual security monitoring system
設(shè)備層:主要由分布在閘門及其他金屬設(shè)備上的傳感單元構(gòu)成,實現(xiàn)對設(shè)備運行∕靜止狀態(tài)下水位、電流、電壓等相關(guān)數(shù)據(jù)的采集,并通過網(wǎng)關(guān)將數(shù)據(jù)進行上傳;數(shù)據(jù)層:使用MySql 數(shù)據(jù)庫,內(nèi)存Redis 數(shù)據(jù)庫,時序數(shù)據(jù)庫InfluxDB 等,將現(xiàn)場基礎(chǔ)數(shù)據(jù)、水閘運行狀態(tài)數(shù)據(jù)結(jié)合第三方RabbitMQ進行結(jié)構(gòu)化存儲管理,為滿足數(shù)據(jù)在應(yīng)用層的使用,對數(shù)據(jù)進行分類緩存管理;仿真層:利用Solid Works、3DMax 繪制現(xiàn)場模型,融合貼圖技術(shù)與光照系統(tǒng)構(gòu)建水庫全景造型,對現(xiàn)場環(huán)境進行深度還原;功能層:基于Unity3D引擎與C#編程語言進行系統(tǒng)功能開發(fā),包括場景漫游功能模塊、人機交互模塊、數(shù)據(jù)交互模塊三大模塊;應(yīng)用層:是整個虛擬系統(tǒng)功能的整合,通過unity3d 可將系統(tǒng)已多種平臺進行發(fā)布,本研究將虛擬系統(tǒng)開發(fā)至PC 端,管理者通過應(yīng)用層與虛擬系統(tǒng)建立連接。
全景造型設(shè)計是指搭建虛擬系統(tǒng)水庫場景環(huán)境,整體可分為模型構(gòu)建與光照設(shè)計兩部分。為保證虛擬場景真實性同時提高系統(tǒng)運行效率,將場景中模型分為閘門設(shè)備等主體模型及外圍環(huán)境模型,分類進行模型繪制,最終在3Dmax 中進行相互耦合。光照設(shè)計是為場景添加各種光源,并通過GI(Global Illumination)算法計算直接、間接、反射和環(huán)境光照等使渲染出來的光照效果更為真實豐富,并通過光照烘焙貼圖技術(shù)為場景增加立體感、層次感和較好的光影視覺效果。全景造型設(shè)計流程圖如圖2所示。
圖2 全景造型設(shè)計流程圖Fig.2 Panoramic modeling design flow
精細模型繪制以某一閘門為例,采用SolidWorks 建模后導(dǎo)入3Dmax,模型格式將由實體模型自動轉(zhuǎn)化為面模型,如圖3(a)所示。面數(shù)過多是影響系統(tǒng)性能的重要因素之一,因此必須在3Dmax 中對其進行輕量化處理,通過使用布爾運算組合,直接在原有模型上對面進行非、并、交、或等運算拼接模型減少面數(shù),輕量化后如圖3(b)所示,經(jīng)對比,優(yōu)化后的模型面數(shù)由23 522減少為5 548。外圍環(huán)境模型通過3Dmax進行繪制,使用常用標準基體、擴展基本體以及地形插件等繪制房屋、河道、湖面等用于豐富場景。
圖3 閘門模型輕量化Fig.3 Gate model lightweight
將兩部分模型在3Dmax 中進行交互耦合,修改兩者模型單位比例、調(diào)整軸心坐標、創(chuàng)建父子關(guān)系等,使其便于腳本控制,呈現(xiàn)更好的交互效果。最后對模型進行材質(zhì)賦予,通過紋理貼圖、法線貼圖、反射貼圖等多種貼圖格式,結(jié)合設(shè)置漫反射、高光反射、透明度等相關(guān)參數(shù),制作Material 材質(zhì)球,使模型表現(xiàn)出更加逼真的物理效果。
本系統(tǒng)主要使用3種光源,分別為:①環(huán)境光以天空盒的形式為整個虛擬場景添加天空照射的效果;②聚光燈運用在報警上,通過紅光閃爍提醒管理人員預(yù)警信息位置;③平行光使用在監(jiān)控室屋頂上,為控制室提供亮度。
光照設(shè)計的重點是GI 與光照烘焙。使用GI 技術(shù),使設(shè)備在運行過程中任意改變光源或移動物體時,都會立即更新所有的光照效果。光照烘焙通過對靜態(tài)模型進行展UV、渲染靜幀光照圖、反貼UV 的流程,將模型陰暗處理以貼圖的方式進行渲染,提高系統(tǒng)運行效率。
最后搭建的虛擬場景如4(a)圖所示,水庫現(xiàn)場如圖4(b)所示。
圖4 虛擬系統(tǒng)場景Fig.4 Virtual system scenario
友好的交互方式對整個系統(tǒng)的性能評估至關(guān)重要,本系統(tǒng)涉及到的交互類型與功能類型較為復(fù)雜,包括:UI交互、人機交互、數(shù)據(jù)與模型交互、數(shù)據(jù)與UI 交互。同時虛擬系統(tǒng)開發(fā)應(yīng)采用模塊化可復(fù)用的架構(gòu)設(shè)計及良好的可擴展性,方便后期需求變更時,能及時添加新的功能模塊,降低維護成本。
為此,本文研究了一種功能事件添加、移除和觸發(fā)的事件工廠,該工廠以委托的方式將虛擬系統(tǒng)所有交互功能、事件觸發(fā)以字典的形式進行儲存,通過KEY 鍵進行功能使用,事件工廠實現(xiàn)方式如圖5所示。
圖5 事件工廠流程圖Fig.5 Event processing plant flow
對于碰撞檢測,本系統(tǒng)主要使用OBB 包圍盒、包圍球兩種空間碰撞檢測算法,用于檢測鼠標射線是否進入包圍盒。對于高精度檢測的碰撞體模型采用OBB包圍盒,使用3DMax構(gòu)造其簡單外輪廓,在Unity 中添加Col 前綴進行相關(guān)參數(shù)的設(shè)置;其他碰撞體模型均采用包圍球,包圍球碰撞檢測使用便捷,系統(tǒng)資源占用率低,但其檢測精度較低。
以包圍球碰撞檢測算法為例:設(shè)空間中任意一點坐標為C(X,Y,Z),碰撞體球心為Q(cx,cy,cz),碰撞區(qū)域半徑為r,則碰撞區(qū)域的數(shù)學表達式如下:
式中:R表示以Q(cx,cy,cz)為球心,以r半徑的碰撞檢測包圍球域,在場景空間的三維坐標區(qū)域里,假定任意物體觸發(fā)點的坐標變量為W(x,y,z),對碰撞區(qū)域的觸發(fā)函數(shù)作如下設(shè)定:
F(x,y,z) = 1表示已進入碰撞觸發(fā)區(qū)域;F(x,y,z) = 0表示離開或未進入觸發(fā)區(qū)域。
(1)人物漫游功能實現(xiàn):人物漫游分為在地面上的第一人稱視角與在水庫上方俯瞰整個場景的第三人稱視角兩部分:第一人稱控制器的設(shè)計與實現(xiàn)在Unity3d 引擎中已經(jīng)很成熟,通過Character Controller 組件即可實現(xiàn);第三人稱視角控制器通過C#編寫ThirdPlayerController 腳本,讀取鍵盤與鼠標垂直軸信息用于控制相機移動或旋轉(zhuǎn)。
(2)自動漫游功能的設(shè)計與實現(xiàn):本系統(tǒng)使用DoTween 動畫庫插件實現(xiàn)自動漫游功能,其插件中DoTweenPath 類可將關(guān)鍵點位以可視化方法進行展示,便于路徑調(diào)整,但也存在相機角度轉(zhuǎn)向不便的問題,不利于對關(guān)鍵點位進行瀏覽。因此本系統(tǒng)研究了如圖6 所示的漫游算法,并通過編寫腳本掛載在相機上,實現(xiàn)相機在進入關(guān)鍵點位范圍時,控制相機角度的旋轉(zhuǎn),并將視角聚焦,以便更好的觀察物體。
圖6 自動漫游相機控制流程圖Fig.6 Automatic roaming camera control flow chart
人機交互是指管理人員通過鼠標、鍵盤等設(shè)備與虛擬場景進行交互,從而實現(xiàn)各種交互功能。本系統(tǒng)設(shè)計了基礎(chǔ)的UI界面交互功能、小地圖功能及位置傳送等輔助功能,用于增強虛擬系統(tǒng)友好性,同時也為其他主要功能切換及使用提供便捷。閘門運行姿態(tài)展示功能是輔助功能設(shè)計中具有重要意義的一環(huán),為方便管理人員對水閘進行全方位觀察,本系統(tǒng)研究了一種模型交互控制算法,通過創(chuàng)建3 個類方法分別實現(xiàn)旋轉(zhuǎn)、平移、相機視距變化,具體流程如圖7所示。
圖7 模型交互控制算法Fig.7 Model interactive control algorithm
以控制物體旋轉(zhuǎn)為例:當鼠標左鍵按下并拖拽時,讀取鼠標垂直軸偏移量信息[X,Y,Z]并保存,同時記錄鼠標移動時間Time.deltaTime,設(shè)定旋轉(zhuǎn)調(diào)整參數(shù)K,并將K顯示在監(jiān)視面板方便調(diào)整,則物體旋轉(zhuǎn)角度為[X,Y,Z]*Time.deltaTim*k,最后通過Transform.Rotate 方法將旋轉(zhuǎn)角度與物體本身世界坐標角度相加,實現(xiàn)水閘對應(yīng)方向旋轉(zhuǎn)。同理通過Transform.Translate 實現(xiàn)物體平移與相機移動。
3.5.1 數(shù)據(jù)庫的連接
本虛擬系統(tǒng)中,閘門與啟閉機的運轉(zhuǎn)以及水庫環(huán)境的可視化都可通過傳感器采集數(shù)據(jù)信息進行實時展示。前端感知設(shè)備實時采集相關(guān)運行狀態(tài)數(shù)據(jù)后,通過網(wǎng)關(guān)、有線∕無線網(wǎng)絡(luò)等實時傳輸,同時為了更好的實現(xiàn)現(xiàn)場采集的實時數(shù)據(jù)與虛擬系統(tǒng)進行數(shù)據(jù)交互,網(wǎng)絡(luò)通信采用AMQP 協(xié)議方式實現(xiàn),并引入第三方系統(tǒng)RabbitMQ 進行結(jié)構(gòu)化儲存管理。虛擬系統(tǒng)與數(shù)據(jù)庫連接在Unity3d引擎中進行配置,實現(xiàn)流程如圖8所示。
圖8 數(shù)據(jù)連接流程圖Fig.8 Data connection flow chart
3.5.2 數(shù)據(jù)交互功能設(shè)計
實時狀態(tài)仿真功能用于模擬現(xiàn)場作業(yè)情況,將水閘、啟閉機模型單元位置信息與對應(yīng)實時數(shù)據(jù)接口進行綁定,并編寫Timer 幫助類,完成數(shù)據(jù)調(diào)取及刷新功能,實現(xiàn)數(shù)據(jù)與虛擬場景中物體的交互;水流動畫的仿真分為閘門區(qū)域動畫和河道區(qū)域動畫,閘門區(qū)域動畫使用Unity3d 粒子系統(tǒng),通過調(diào)整粒子發(fā)射參數(shù)并制作相應(yīng)貼圖實現(xiàn),河道區(qū)域動畫通過3Dmax 動畫技術(shù),修改關(guān)鍵幀點位的河道高度位置實現(xiàn)。
智能預(yù)警功能通過對閘門應(yīng)力、閘門振幅等數(shù)據(jù)信息預(yù)設(shè)閾值,將異常數(shù)據(jù)進行自動發(fā)送并觸發(fā)報警事件。發(fā)送的數(shù)據(jù)信息包含內(nèi)容、設(shè)備ID、故障位置等;報警事件中根據(jù)故障信息獲取報警點位模型,通過GetComponent 類方法獲取模型點光源組件的引用,然后將燈光顏色修改為紅色,并播放提前預(yù)制的報警信號,實現(xiàn)可視化智能預(yù)警。
數(shù)據(jù)可視化功能采用XChart 插件將實時流速、實時水位、環(huán)境參數(shù)、閘門應(yīng)力、閘門振幅、故障數(shù)量、預(yù)警數(shù)量等數(shù)據(jù)信息,以可視化圖表形式進行展示。在數(shù)據(jù)顯示UI界面添加相應(yīng)的XChart 組件,并在檢視面板調(diào)整組件錨點,為其添加定時刷新腳本,在定時刷新腳本中通過Timer 幫助類從數(shù)據(jù)中心按照2 s一次的頻率調(diào)取實時監(jiān)測數(shù)據(jù)。
水工金屬結(jié)構(gòu)安全監(jiān)測虛擬系統(tǒng)可以通過Unity3d 可以導(dǎo)出為PC、Android、VR 等多種方式。本文將其部署在相應(yīng)的管理電腦上,運行環(huán)境為:CPU 主頻2.30 GHz,內(nèi)存16 GB,硬盤500 GB,操作系統(tǒng)Windows11。關(guān)鍵功能測試如下所示:
閘門運行姿態(tài)展示功能:通過UI 交互進入僅包括弧形閘門,閘門支鉸,啟閉桿的新場景,其中自動展示是以播放動畫的形式,將水閘模型全方位自動播放。人工展示通過鼠標對水閘進行操控并觀察,圖9是水閘模型交互效果圖。
圖9 水閘模型交互效果Fig.9 Sluice model interaction effect
實時狀態(tài)仿真功能:實時狀態(tài)仿真包括閘門啟閉過程和水流展示,效果如圖10 所示。當數(shù)據(jù)驅(qū)動閘門升起時,通過閘門開合角度來控制水流粒子系統(tǒng)發(fā)射速率,呈現(xiàn)閘門區(qū)域水流效果如圖10(a)所示;河道水流效果以動畫播放形式進行呈現(xiàn),如圖10(b)所示。
圖10 水流動畫效果圖Fig.10 Animation of water flow
檢測數(shù)據(jù)三維可視化功能:通過主菜單打開數(shù)據(jù)監(jiān)測面板,效果如圖11 所示。監(jiān)測面板位于兩個控制室之間,如圖11(a)所示;監(jiān)測面板默認顯示一號閘門信息,數(shù)據(jù)信息包括:實時流速、實時水位、環(huán)境參數(shù)、閘門應(yīng)力、閘門振幅、故障數(shù)量、預(yù)警數(shù)量等,如圖11(b)所示。
圖11 監(jiān)測數(shù)據(jù)UI界面Fig.11 Monitor data UI
基于Unity3d 技術(shù)開發(fā)了一款用于水工金屬結(jié)構(gòu)安全檢測的虛擬仿真系統(tǒng),構(gòu)建了三種漫游方式用于系統(tǒng)不同視角下的人機交互。并通過優(yōu)化系統(tǒng)自動漫游功能實現(xiàn)了相機角度朝向的靈活改變,充分展示了溢洪道水工金屬結(jié)構(gòu)場景關(guān)鍵點位的變化。同時提出了一種閘門運行姿態(tài)交互控制的算法,為水工金屬結(jié)構(gòu)安全監(jiān)測系統(tǒng)提供了更加豐富和便利的交互功能。
通過AMQP 協(xié)議實現(xiàn)了傳感器采集數(shù)據(jù)與水工金屬結(jié)構(gòu)系統(tǒng)之間的交互,創(chuàng)建了閘門與水流耦合的動態(tài)仿真效果。并依據(jù)實時采集信息以燈光閃爍的形式進行預(yù)警判斷,通過XChart 將監(jiān)測數(shù)據(jù)以圖表的形式進行實時可視化展示。相較于傳統(tǒng)的二維水工金屬結(jié)構(gòu)安全監(jiān)測系統(tǒng)界面而言,該系統(tǒng)具有較強的針對性和實用性,同時能夠滿足系統(tǒng)實時性要求,并最終成功應(yīng)用于實際水工金屬結(jié)構(gòu)虛擬安全監(jiān)測中。