華陸韜,朱 燦,薛蒼松,吳根仙
(1·浙江省水利水電勘測(cè)設(shè)計(jì)院有限責(zé)任公司,浙江 杭州 310002;2·桐廬縣林業(yè)水利局,浙江 桐廬 311500)
近年來(lái),隨著物聯(lián)網(wǎng)、大數(shù)據(jù)、云計(jì)算、人工智能等新一代信息技術(shù)的發(fā)展,使得數(shù)字孿生的實(shí)施逐漸成為可能。在水利部大力推進(jìn)數(shù)字孿生流域、數(shù)字孿生水利工程建設(shè),積極推動(dòng)新階段水利高質(zhì)量發(fā)展的背景下[1],數(shù)字孿生技術(shù)的應(yīng)用需求不再局限于數(shù)字化表達(dá),更多的是與水利業(yè)務(wù)的深度融合,結(jié)合工程規(guī)劃、建設(shè)管理與運(yùn)行維護(hù)等各階段的業(yè)務(wù)需求,實(shí)現(xiàn)水利工程建設(shè)全生命周期的數(shù)字化映射。
目前,數(shù)字孿生在航天航空與城市管理領(lǐng)域應(yīng)用廣泛,而在水利行業(yè)尚處于起步探索階段。現(xiàn)階段的水利應(yīng)用主要集中在對(duì)工程結(jié)構(gòu)的虛擬仿真及可視化展示[2],但與工程調(diào)度、洪水演進(jìn)等水利業(yè)務(wù)融合方面缺少深入研究及技術(shù)參考,主要表現(xiàn)在缺少基于數(shù)字孿生技術(shù)的場(chǎng)景建設(shè)框架及數(shù)據(jù)驅(qū)動(dòng)模型的技術(shù)手段,缺少基于數(shù)字孿生技術(shù)的水利業(yè)務(wù)應(yīng)用實(shí)踐。針對(duì)上述問(wèn)題,本文提出基于BIM(Building Information Modeling)+GIS(Geographic Information System)技術(shù)的水利工程數(shù)字孿生系統(tǒng)應(yīng)用研究,提供場(chǎng)景構(gòu)建、輕量化處理、行為映射與數(shù)據(jù)驅(qū)動(dòng)等技術(shù)流程與方法,并與相關(guān)水利業(yè)務(wù)融合,實(shí)現(xiàn)物理世界的數(shù)字化映射,助推智慧水利體系建設(shè)。
本研究基于Unreal Engine 4引擎與Cesium for unreal插件開(kāi)發(fā)。采用Revit、3Dmax、Blender、Qgis、CityEngine等平臺(tái)對(duì)空間數(shù)據(jù)與接口進(jìn)行處理與集成,然后通過(guò)Cesium for unreal插件存儲(chǔ)和調(diào)用處理后的空間數(shù)據(jù),最后利用Unreal Engine 4引擎的藍(lán)圖腳本模塊對(duì)空間數(shù)據(jù)進(jìn)行接口掛接,并且利用其腳本庫(kù)語(yǔ)言構(gòu)建前后端數(shù)據(jù)庫(kù)訪問(wèn)的橋梁,實(shí)現(xiàn)業(yè)務(wù)功能的開(kāi)發(fā)。總體技術(shù)架構(gòu)主要包括基礎(chǔ)設(shè)施層、數(shù)據(jù)匯聚層、應(yīng)用服務(wù)層及業(yè)務(wù)應(yīng)用層(見(jiàn)圖1)。具體各層主要包括:
圖1 系統(tǒng)技術(shù)架構(gòu)圖
(1)基礎(chǔ)設(shè)施層。該層主要包括物聯(lián)感知設(shè)備、智能終端、計(jì)算機(jī)基礎(chǔ)網(wǎng)絡(luò)等。
(2)數(shù)據(jù)匯聚層。該層主要包括空間數(shù)據(jù)庫(kù)、業(yè)務(wù)數(shù)據(jù)庫(kù)、專(zhuān)題數(shù)據(jù)庫(kù)以及集成的交互接口庫(kù)。
(3)應(yīng)用服務(wù)層。該層主要是通過(guò)引擎的藍(lán)圖腳本模塊連接溝通基礎(chǔ)設(shè)施層和數(shù)據(jù)匯聚層,實(shí)現(xiàn)跨層間的消息傳遞與數(shù)據(jù)訪問(wèn)。
(4)業(yè)務(wù)應(yīng)用層。該層主要根據(jù)相關(guān)的業(yè)務(wù)需求,開(kāi)發(fā)相應(yīng)的業(yè)務(wù)功能,如應(yīng)急預(yù)警、水雨情、淹沒(méi)分析等功能模塊。
BIM場(chǎng)景基于Autodesk Revit平臺(tái)構(gòu)建,通過(guò)建立統(tǒng)一的水利BIM執(zhí)行標(biāo)準(zhǔn),對(duì)BIM模型建設(shè)與應(yīng)用進(jìn)行整體規(guī)劃[3]。依據(jù)標(biāo)準(zhǔn),實(shí)現(xiàn)多專(zhuān)業(yè)協(xié)同建模,并對(duì)模型構(gòu)件不斷深化加工,對(duì)信息數(shù)據(jù)不斷迭代完善,形成全生命周期BIM模型數(shù)據(jù);然后采用數(shù)模分離的技術(shù),利用插件將BIM數(shù)據(jù)導(dǎo)出為FBX與JSON兩類(lèi)數(shù)據(jù),其中FBX繼承模型的網(wǎng)格信息,JSON繼承模型構(gòu)件的屬性信息。數(shù)模分離相較于數(shù)模一體,優(yōu)點(diǎn)是避免輕量化過(guò)程中模型屬性信息丟失及因?qū)傩孕畔⒆兏鸬腂IM模型返工。
GIS場(chǎng)景基于CityEngine平臺(tái)構(gòu)建,構(gòu)建對(duì)象主要為主工程以外的周邊地形與環(huán)境。主要流程是:原始數(shù)據(jù)準(zhǔn)備,包括柵格數(shù)據(jù)(DEM、DOM等)和矢量數(shù)據(jù)(建筑、水系、路網(wǎng)、植被等),通過(guò)Qgis平臺(tái)對(duì)原始數(shù)據(jù)進(jìn)行加工和處理;建立數(shù)據(jù)標(biāo)準(zhǔn),包括名稱(chēng)、代碼、分類(lèi)編碼等,將多源數(shù)據(jù)擬合匹配;定義坐標(biāo),平面坐標(biāo)系的數(shù)據(jù)需要轉(zhuǎn)化為統(tǒng)一的地理坐標(biāo)系數(shù)據(jù)(通常采用WGS84、CGCS2000),滿足GIS數(shù)據(jù)標(biāo)準(zhǔn)化需求;然后將處理后的GIS數(shù)據(jù)傳遞到CityEngine平臺(tái)中,利用CGA規(guī)則語(yǔ)法對(duì)真實(shí)的幾何信息進(jìn)行描述。
將BIM+GIS模型數(shù)據(jù)以FBX格式移交到3Dmax中,進(jìn)行輕量化處理,縮小BIM模型體量。輕量化主要從以下2個(gè)維度展開(kāi):
(1)幾何維度。幾何維度的輕量化可在BIM參數(shù)化幾何描述向三角網(wǎng)格化幾何描述轉(zhuǎn)換的過(guò)程中,利用LOD技術(shù)(Levels of Detail)降低非重要構(gòu)件的顆粒度,減少模型的整體面數(shù),提升模型渲染的資源使用率。
(2)渲染維度。通常計(jì)算機(jī)在加載三維物體時(shí)會(huì)采用API調(diào)用繪制的方式,即加載一個(gè)物體,調(diào)用一次API繪制。調(diào)用繪制是計(jì)算機(jī)渲染的過(guò)程,調(diào)用次數(shù)越多,CPU消耗越大。實(shí)例批量繪制技術(shù)可針對(duì)渲染過(guò)程,有效降低CPU的占用率。
水利工程數(shù)字孿生系統(tǒng)中的交互接口包括移動(dòng)旋轉(zhuǎn)類(lèi)、網(wǎng)格動(dòng)畫(huà)類(lèi)、骨骼動(dòng)畫(huà)類(lèi)以及材質(zhì)紋理類(lèi)。此類(lèi)信息接口的集成依托blender平臺(tái),將3Dmax處理后的模型以fbx格式整合到blender中,利用blender平臺(tái)的開(kāi)源特性,編寫(xiě)相關(guān)交互接口,最后將模型和交互接口集成發(fā)布成一個(gè)gltf文件,基本過(guò)程如下:
3.3.1 移動(dòng)旋轉(zhuǎn)類(lèi)
定義交互對(duì)象的模型ID,在曲線編輯器中根據(jù)交互需求定義線性動(dòng)作,設(shè)置動(dòng)作持續(xù)區(qū)間,增加動(dòng)作字段,添加動(dòng)作編碼。
3.3.2 網(wǎng)格動(dòng)畫(huà)類(lèi)
創(chuàng)建網(wǎng)格變形,對(duì)模型的網(wǎng)格頂點(diǎn)定義描述,根據(jù)交互需求定義變形函數(shù),設(shè)置變形持續(xù)區(qū)間,添加編碼。
3.3.3 骨骼動(dòng)畫(huà)類(lèi)
創(chuàng)建骨骼,確保物體表面足夠細(xì)分到可以讓后續(xù)變形實(shí)現(xiàn)。在編輯模式下,增加armature骨骼修改器,綁定先前創(chuàng)建的骨骼,選定骨骼,在Pose Mode姿勢(shì)模式下調(diào)整骨骼方位,物體即可相應(yīng)形變。
3.3.4 材質(zhì)紋理類(lèi)
Shader編碼,在blender shader編輯器中采用32位無(wú)符號(hào)整數(shù)對(duì)模型對(duì)象的shader進(jìn)行編碼定義,常用材質(zhì)紋理類(lèi)的交互實(shí)現(xiàn)有2種:①針對(duì)同一對(duì)象編寫(xiě)多套材質(zhì),用0,1編碼來(lái)控制當(dāng)前材質(zhì)狀態(tài),0表示不顯示,1表示顯示,可用來(lái)控制物體的高亮顯示;②uv線性動(dòng)畫(huà),在模型的uv上編寫(xiě)線性動(dòng)畫(huà),實(shí)現(xiàn)紋理的動(dòng)態(tài)交互效果。
將gltf格式作為主要工程在數(shù)字孿生系統(tǒng)中狀態(tài)、行為映射的載體。其二進(jìn)制編碼,可完整保留上述類(lèi)型的交互接口,同時(shí)優(yōu)化數(shù)據(jù)結(jié)構(gòu),減少與渲染無(wú)關(guān)的冗余數(shù)據(jù),提升渲染速度。gltf數(shù)據(jù)基本結(jié)構(gòu)見(jiàn)圖2,gltf文件中集成的閘門(mén)啟閉接口見(jiàn)圖3。
圖2 gltf數(shù)據(jù)結(jié)構(gòu)示意圖
圖3 大壩模型閘門(mén)啟閉接口示意圖
水利工程數(shù)字孿生系統(tǒng)所需的應(yīng)用接口使用遠(yuǎn)程調(diào)用協(xié)議(RPC)+藍(lán)圖腳本的框架開(kāi)發(fā)。
首先建立通訊連接。水利工程數(shù)字孿生所關(guān)聯(lián)的數(shù)據(jù)存儲(chǔ)服務(wù)器有很多,使用RPC協(xié)議可通過(guò)網(wǎng)絡(luò)從遠(yuǎn)程服務(wù)器上請(qǐng)求服務(wù),而不需要了解底層網(wǎng)絡(luò)技術(shù)協(xié)議。RPC協(xié)議假定某些傳輸協(xié)議的存在,如TCP或UDP。在OSI模型中,RPC跨越了傳輸層和應(yīng)用層[5],有利于分布式網(wǎng)絡(luò)部署的信息通訊。
然后通過(guò)Unreal Engine 4的藍(lán)圖腳本創(chuàng)建接口,主要包括3個(gè)步驟:創(chuàng)建接口聲明函數(shù)、實(shí)現(xiàn)接口及調(diào)用接口。
在ContentBrowser菜單下選擇Blueprints創(chuàng)建interface,常規(guī)接口利用藍(lán)圖腳本直接定義,特殊的接口可通過(guò)FunctionLibrary函數(shù)庫(kù)編寫(xiě),將編寫(xiě)后的函數(shù)命名存儲(chǔ),方便以后在不同的接口中調(diào)用,簡(jiǎn)化工作流程,提高效率。此外,還可通過(guò)MacroLibrary創(chuàng)建自定義宏庫(kù)。
創(chuàng)建一個(gè)新的藍(lán)圖類(lèi),雙擊打開(kāi)藍(lán)圖類(lèi),在藍(lán)圖中自定義函數(shù)接口。通過(guò)藍(lán)圖類(lèi)實(shí)現(xiàn)接口對(duì)特定應(yīng)用功能進(jìn)行封裝,提升函數(shù)復(fù)用性。例如在場(chǎng)景中顯示一個(gè)靜態(tài)模型,通常要選擇Actor作為父類(lèi),還需手動(dòng)添加StaticMesh組件,相對(duì)麻煩,采用藍(lán)圖類(lèi)實(shí)現(xiàn)接口,只需添加一個(gè)StaticMeshActor,然后在子面板中添加模型,易于后續(xù)模型的更替,將此藍(lán)圖命名保存,可供下次使用。
接口的本地調(diào)用可通過(guò)函數(shù)指針來(lái)制定,在藍(lán)圖類(lèi)中添加。遠(yuǎn)程調(diào)用則要使用Call ID映射,由于遠(yuǎn)程進(jìn)程的地址空間不同,所以在RPC中,所有函數(shù)必須擁有唯一身份編碼的ID信息。在遠(yuǎn)程調(diào)用時(shí)必須添加該ID,同時(shí)分別維護(hù)一個(gè)函數(shù)和Call ID的對(duì)應(yīng)表。在實(shí)際調(diào)用過(guò)程中,客戶端先查詢對(duì)應(yīng)表,找出相應(yīng)的Call ID并傳給服務(wù)端,服務(wù)端通過(guò)查表來(lái)確定客戶端需要的函數(shù),執(zhí)行相關(guān)命令。
此外,水利工程數(shù)字孿生系統(tǒng)使用Cesium for unreal插件調(diào)用空間數(shù)據(jù)。
上述技術(shù)路線在建德市三江洪水風(fēng)險(xiǎn)圖系統(tǒng)、姚江上游西排工程數(shù)字化平臺(tái)、省管海塘智慧建管平臺(tái)、高坪橋水庫(kù)運(yùn)維系統(tǒng)、臺(tái)州集聚區(qū)智慧建管平臺(tái)(見(jiàn)圖4)、千島湖配水工程智慧平臺(tái)等項(xiàng)目中得到應(yīng)用實(shí)踐。
圖4 水利工程數(shù)字孿生系統(tǒng)主界面圖
常規(guī)業(yè)務(wù)功能包括三維場(chǎng)景可視化、BIM數(shù)據(jù)屬性查看、空間分析、淹沒(méi)分析、洪水演進(jìn)、工程調(diào)度、運(yùn)維管理、水雨情查詢等。此類(lèi)業(yè)務(wù)的驅(qū)動(dòng)數(shù)據(jù)涉及工程屬性、特征參數(shù)、設(shè)計(jì)指標(biāo)以及物聯(lián)設(shè)備的實(shí)時(shí)數(shù)據(jù)。在構(gòu)建行為映射前需要進(jìn)行分類(lèi)、編碼、命名,采用結(jié)構(gòu)化方法建立演算模型、調(diào)度模型、耦合模型等,然后根據(jù)模型類(lèi)型選擇不同的實(shí)現(xiàn)方式,最后依托Unreal Engine 4的藍(lán)圖腳本進(jìn)行編碼開(kāi)發(fā)。例如水閘的智能調(diào)度數(shù)據(jù)來(lái)源有:閘門(mén)實(shí)時(shí)運(yùn)行數(shù)據(jù)、實(shí)時(shí)水情數(shù)據(jù)、實(shí)時(shí)監(jiān)控?cái)?shù)據(jù)。根據(jù)業(yè)務(wù)需求建立調(diào)度模型,按照運(yùn)行要求進(jìn)行耦合模型計(jì)算,獲得調(diào)度映射模式,包括閘門(mén)名稱(chēng)、閘門(mén)狀態(tài)、閘門(mén)開(kāi)啟度等,通過(guò)遠(yuǎn)程消息發(fā)送及地址調(diào)用的方式實(shí)現(xiàn)閘門(mén)的遠(yuǎn)程調(diào)度與實(shí)時(shí)監(jiān)控。在智能調(diào)度過(guò)程中,將物聯(lián)設(shè)備反饋的數(shù)據(jù)與映射模型進(jìn)行對(duì)比驗(yàn)證,可精確定位閘門(mén)運(yùn)行中發(fā)生的異常情況,以便及時(shí)修正,為工程智慧化運(yùn)行提供有力保障。
應(yīng)用實(shí)踐證明:以BIM+GIS等空間數(shù)據(jù)為基底構(gòu)建水利工程數(shù)字孿生系統(tǒng),通過(guò)在計(jì)算機(jī)數(shù)字世界中建立與真實(shí)世界的數(shù)據(jù)驅(qū)動(dòng)模型,融合多源異構(gòu)數(shù)據(jù),結(jié)合水利業(yè)務(wù)需求,實(shí)現(xiàn)數(shù)字世界對(duì)物理世界的狀態(tài)和行為的精確表達(dá);同時(shí),結(jié)合云計(jì)算、大數(shù)據(jù)、人工智能等技術(shù),構(gòu)建“2+N”智慧水利業(yè)務(wù)應(yīng)用體系,包含建設(shè)流域防洪應(yīng)用、建設(shè)水資源管理與調(diào)度應(yīng)用等,建設(shè)N項(xiàng)業(yè)務(wù)應(yīng)用,打造具有預(yù)報(bào)、預(yù)警、預(yù)演、預(yù)案功能的智慧水利系統(tǒng),實(shí)現(xiàn)多尺度、多維度、深層次的數(shù)據(jù)挖掘、分析、仿真等,使原本抽象的決策依據(jù)更加具體,有利于提升決策效率。
本文基于BIM+GIS技術(shù),依托Unreal Engine 4引擎平臺(tái),結(jié)合Cesium for unreal插件開(kāi)發(fā),對(duì)場(chǎng)景及數(shù)據(jù)驅(qū)動(dòng)模型的構(gòu)建與集成、應(yīng)用接口開(kāi)發(fā)、業(yè)務(wù)應(yīng)用等關(guān)鍵性技術(shù)及流程進(jìn)行闡述,提供關(guān)于BIM數(shù)據(jù)輕量化、GIS數(shù)據(jù)可視化、行為映射集成等問(wèn)題的解決思路與方法。最后以系統(tǒng)應(yīng)用為例,印證數(shù)字孿生技術(shù)在流域及水利工程建設(shè)中的應(yīng)用價(jià)值,為建設(shè)完善智慧水利體系提供動(dòng)力與支撐。