彭玉元
(韓國(guó)又石大學(xué)大學(xué)院造景建設(shè)工學(xué)科,全羅北道 全州 55338 )
隨著計(jì)算機(jī)圖形學(xué)和軟件處理技術(shù)的發(fā)展,三維可視化技術(shù)廣泛用于各種領(lǐng)域[1]。數(shù)字孿生概念也在近年被重新提及,其是指使用物理模型、互聯(lián)網(wǎng)、物聯(lián)網(wǎng)以及傳感器技術(shù)采集生命周期的數(shù)據(jù),并在設(shè)備或系統(tǒng)上進(jìn)行仿真的過(guò)程,能有效實(shí)現(xiàn)對(duì)現(xiàn)實(shí)環(huán)境和虛擬空間的映射。
機(jī)房擔(dān)負(fù)著存儲(chǔ)數(shù)據(jù)、運(yùn)行系統(tǒng)以及服務(wù)高校發(fā)展的重要使命。機(jī)房三維可視化設(shè)計(jì)是對(duì)數(shù)字孿生概念的實(shí)際運(yùn)用,常規(guī)的機(jī)房管理系統(tǒng)相對(duì)于該系統(tǒng)存在數(shù)據(jù)呈現(xiàn)形式弱、機(jī)房監(jiān)控復(fù)雜等劣勢(shì)。該項(xiàng)目進(jìn)行了數(shù)字孿生技術(shù)的應(yīng)用模式探索,以Unity 3D 為客戶(hù)端的技術(shù)支持,并結(jié)合C#程序開(kāi)發(fā)了一款可在PC 端使用的三維機(jī)房管理軟件,極大地提高了機(jī)房管理的效率,優(yōu)化了機(jī)房管理系統(tǒng)的用戶(hù)使用界面。機(jī)房的三維可視化管理可通過(guò)三維建模(機(jī)房設(shè)備、機(jī)房格局等的數(shù)字孿生體)配合實(shí)時(shí)渲染的三維引擎進(jìn)行機(jī)房的虛擬仿真并展示出來(lái),讓用戶(hù)可以與三維場(chǎng)景交互,從而實(shí)現(xiàn)機(jī)房的三維可視化管理和運(yùn)維[2]。目前國(guó)內(nèi)外對(duì)該領(lǐng)域都具有一定的研究,相關(guān)產(chǎn)品有Visual DAQ 系統(tǒng)和Twaver系統(tǒng)等。
機(jī)房三維可視化是對(duì)傳統(tǒng)管理系統(tǒng)的進(jìn)一步提升,通過(guò)三維可視化的形式呈現(xiàn)機(jī)房的大量數(shù)據(jù),提高管理人員對(duì)機(jī)房數(shù)據(jù)的查閱、接收效率。該系統(tǒng)具有實(shí)時(shí)性,便于機(jī)房管理人員對(duì)機(jī)房進(jìn)行資產(chǎn)查看、設(shè)備定位,直觀地提供了全方位視角,可以對(duì)機(jī)房進(jìn)行立體的分析、管理。
傳統(tǒng)的機(jī)房管理系統(tǒng)主要使用一維或二維的系統(tǒng)構(gòu)架圖、網(wǎng)絡(luò)拓?fù)鋱D來(lái)表達(dá)機(jī)房數(shù)據(jù),視覺(jué)呈現(xiàn)難以精確描述機(jī)房的整體結(jié)構(gòu),不利于直觀理解機(jī)房數(shù)據(jù)。而基于數(shù)字孿生理念的可視化機(jī)房管理系統(tǒng)通過(guò)虛擬仿真來(lái)進(jìn)行信息表達(dá),可以通過(guò)三維可視化的形式直觀地呈現(xiàn)復(fù)雜的機(jī)房數(shù)據(jù)、位置等各種重要信息,幫助管理人員完成更為高效的行動(dòng)與決策[3]。其優(yōu)勢(shì)如圖1 所示。
圖1 可視化機(jī)房管理系統(tǒng)與傳統(tǒng)管理的差異對(duì)比圖
機(jī)房的業(yè)務(wù)具有復(fù)雜性和專(zhuān)業(yè)性,難以將所有的管理內(nèi)容全部遷移到三維可視化客戶(hù)端,在經(jīng)過(guò)一系列的實(shí)踐后,筆者認(rèn)為三維可視化部分應(yīng)該保持其功能的獨(dú)立性和單一性,主要實(shí)現(xiàn)客戶(hù)端的表現(xiàn)功能,其余復(fù)雜的業(yè)務(wù)邏輯工作依舊交由后臺(tái)管理程序和傳統(tǒng)機(jī)房管理系統(tǒng)進(jìn)行處理。
因此,機(jī)房的三維可視化客戶(hù)端首先需要解決的就是資產(chǎn)的三維可視化編輯。通過(guò)預(yù)先制作好的三維模型等資源,例如設(shè)備機(jī)柜、機(jī)房空調(diào)以及門(mén)禁等各種三維資源組件,在客戶(hù)端實(shí)現(xiàn)場(chǎng)景的編輯功能,可實(shí)時(shí)編輯機(jī)房的布局圖,并實(shí)時(shí)生成三維可視化場(chǎng)景。已經(jīng)開(kāi)發(fā)實(shí)現(xiàn)的軟件界面截圖如圖2 所示。
圖2 客戶(hù)端實(shí)時(shí)布局演示(軟件截圖)
該軟件使用Unity 3D 技術(shù),并基于C#編程規(guī)范進(jìn)行開(kāi)發(fā)。開(kāi)發(fā)過(guò)程中,在進(jìn)行三維模型預(yù)制件的動(dòng)態(tài)編輯布局時(shí),使用C#編程語(yǔ)言來(lái)計(jì)算多邊形網(wǎng)格,從而繪制墻體和地面的實(shí)時(shí)三維模型。其步驟依次為設(shè)置多邊形頂點(diǎn)數(shù)組、設(shè)置三角形序列和設(shè)置網(wǎng)格UV。在Unity 3D 中將這些步驟依次編寫(xiě)為3個(gè)步驟的靜態(tài)函數(shù):1)SetVertices(List
機(jī)房場(chǎng)景實(shí)時(shí)編輯解決了三維機(jī)房可視化的客制化需求,可以根據(jù)自己的需求進(jìn)行三維可視化場(chǎng)景的快速編輯布局,簡(jiǎn)單快捷地創(chuàng)建出現(xiàn)實(shí)機(jī)房的數(shù)字孿生體模型。但是只有機(jī)房的三維模型是不夠的,還要將三維模型與對(duì)應(yīng)的后臺(tái)數(shù)據(jù)快速關(guān)聯(lián)起來(lái),從而滿(mǎn)足對(duì)機(jī)房數(shù)據(jù)信息可視化的要求。
在開(kāi)發(fā)過(guò)程中,使用Web 開(kāi)發(fā)技術(shù)從傳統(tǒng)機(jī)房管理系統(tǒng)中提取必要的數(shù)據(jù)接口,并借助橋接層,供三維可視化客戶(hù)端調(diào)用,從而實(shí)現(xiàn)后臺(tái)數(shù)據(jù)的交互。流程結(jié)構(gòu)如圖3 所示。
圖3 三維可視化客戶(hù)端與后臺(tái)數(shù)據(jù)交互流程圖
三維可視化客戶(hù)端中的橋接層使用C#語(yǔ)言進(jìn)行編寫(xiě),自定義接口采用Web services 技術(shù),以XML 格式的形式進(jìn)行數(shù)據(jù)交互,在Unity 3D 中編寫(xiě)C#代碼,周期性主動(dòng)請(qǐng)求調(diào)用數(shù)據(jù)接口,然后根據(jù)所獲得的數(shù)據(jù)實(shí)時(shí)關(guān)聯(lián)到機(jī)房三維場(chǎng)景(即數(shù)字孿生體)模型中。三維可視化客戶(hù)端會(huì)根據(jù)現(xiàn)實(shí)機(jī)房中對(duì)應(yīng)設(shè)備的狀態(tài)來(lái)觸發(fā)數(shù)字孿生體中相應(yīng)的行為條件,從而在三維場(chǎng)景模型中呈現(xiàn)相應(yīng)的數(shù)據(jù)信息,實(shí)現(xiàn)了三維場(chǎng)景模型和數(shù)據(jù)的關(guān)聯(lián)與交互。
雖然通過(guò)實(shí)現(xiàn)以上2 個(gè)功能,用戶(hù)已經(jīng)可以自定義機(jī)房的三維模型以及獲取相應(yīng)的數(shù)據(jù),但是還要給用戶(hù)提供三維模型及UI 的可視化操作。該系統(tǒng)主要是通過(guò)鼠標(biāo)和鍵盤(pán)進(jìn)行交互,因此該系統(tǒng)需要穩(wěn)定、可擴(kuò)展的三維對(duì)象交互系統(tǒng)。
在開(kāi)發(fā)過(guò)程中,需要在Unity 3D 中使用C#編寫(xiě)能與多種三維物體對(duì)象進(jìn)行交互的鼠標(biāo)事件,從而實(shí)現(xiàn)用戶(hù)對(duì)三維模型與UI 的拖拽等交互操作。筆者基于Unity 3D 中的MonoBehaviour 類(lèi)以及自定義封裝Unity RayCast API 中的PRayCast 類(lèi)來(lái)對(duì)射線(xiàn)進(jìn)行檢測(cè),從而實(shí)現(xiàn)鼠標(biāo)拾取三維空間中的虛擬對(duì)象的功能。同時(shí)配合單例PMouseManager 進(jìn)行事件分發(fā),實(shí)現(xiàn)三維虛擬對(duì)象的選擇和取消選擇事件。使用單例模式可以方便地在任何地方調(diào)取當(dāng)前交互狀態(tài)的信息供開(kāi)發(fā)更多的功能。BaseObjectHandle 類(lèi)實(shí)際作為接口和父類(lèi)來(lái)使用,其直接繼承了MonoBehaviour 和所有EventSystem 的交互接口,讓EventSystem 中的Unity 默認(rèn)交互事件能夠?qū)⑹录职l(fā)到擴(kuò)展的所有BaseObjectHanlde的子類(lèi)中??偟膩?lái)說(shuō),在該系統(tǒng)下,只需要為具體的虛擬對(duì)象新建一個(gè)實(shí)現(xiàn)類(lèi),并繼承BaseObjectHandle,然后重寫(xiě)其中需要響應(yīng)的交互,并實(shí)現(xiàn)具體邏輯,再將腳本中的GameObject.AddComponent
圖4 用戶(hù)交互模塊中主要類(lèi)名與結(jié)構(gòu)
為了存儲(chǔ)每個(gè)自定義編輯場(chǎng)景的數(shù)據(jù),且將場(chǎng)景數(shù)據(jù)與后臺(tái)服務(wù)器進(jìn)行交互,筆者研究設(shè)計(jì)了一套基于XML 的數(shù)據(jù)存儲(chǔ)系統(tǒng)。該系統(tǒng)的主要功能在于能夠在Unity 3D 框架下進(jìn)行擴(kuò)展和管理,并完成對(duì)不同需求數(shù)據(jù)的生成、增加、查找、修改與保存工作。
在整個(gè)數(shù)據(jù)存儲(chǔ)系統(tǒng)中,由Storer
為了解決存儲(chǔ)實(shí)現(xiàn)類(lèi)Storer
為了避免數(shù)據(jù)文件因遭遇不必要的修改而導(dǎo)致程序運(yùn)行錯(cuò)誤,在該框架中筆者為數(shù)據(jù)的存儲(chǔ)添加了一個(gè)AES 加密算法,以提供一定的安全加密功能和防串改功能,在項(xiàng)目中采用了C#的RijndaelManaged 類(lèi)制作數(shù)據(jù)加密模塊。
客戶(hù)端服務(wù)器主要采用php 進(jìn)行開(kāi)發(fā),部署運(yùn)行于Windows Server 或Linux 操作系統(tǒng)上,通過(guò)固定域名地址為三維可視化客戶(hù)端提供數(shù)據(jù)訪問(wèn)接口。
測(cè)試采用的的系統(tǒng)軟件具體部署如下:1)Windows Server。IIS(Internet Information Services)。2)MySQL。3)PHP Linux(CentOS)。Nginx、MySQL 以及PHP。
客戶(hù)端為運(yùn)行于Windows 操作系統(tǒng)上的三維軟件,需要有中高性能顯卡硬件作為支持,在測(cè)試中使用的軟硬件配置為intel core i7、8G DDR4 2133 ram、256g SSD、NVidia GTX 980 8G 顯卡以及windows 10 64bit 操作系統(tǒng)。
配合橋接層后臺(tái)可以擴(kuò)展手機(jī)端的信息查看功能,通過(guò)配合手機(jī)App 可以快速查看服務(wù)器的信息,如果出現(xiàn)緊急狀況也可以讓運(yùn)維人員第一時(shí)間掌握故障信息的初步狀況。
可以在橋接層服務(wù)器納入更多的數(shù)據(jù)處理程序,配合部署在服務(wù)器機(jī)房?jī)?nèi)的各種傳感器(溫度、濕度及風(fēng)量等)進(jìn)行數(shù)據(jù)采集,并將其提供給三維可視化客戶(hù)端,再由客戶(hù)端以二維圖表或三維的形式呈現(xiàn)相關(guān)數(shù)據(jù),例如服務(wù)器機(jī)房的溫度布局就可以通過(guò)熱力圖計(jì)算疊加到三維空間中,可直觀地了解機(jī)房的溫度分布。
可以同時(shí)對(duì)機(jī)房的動(dòng)環(huán)信息進(jìn)行三維可視化操作,可以實(shí)現(xiàn)動(dòng)力監(jiān)控、計(jì)算環(huán)境監(jiān)控、安防監(jiān)控以及服務(wù)器監(jiān)測(cè)等功能。運(yùn)維人員能夠通過(guò)三維圖形直接了解機(jī)房的動(dòng)環(huán)信息,配合傳統(tǒng)管理系統(tǒng)提供的相關(guān)數(shù)據(jù),實(shí)現(xiàn)更高效的動(dòng)環(huán)系統(tǒng)控制。
借助原有的客戶(hù)端動(dòng)態(tài)布局功能可以設(shè)計(jì)更多其他領(lǐng)域的三維組件模型供用戶(hù)調(diào)用,即可應(yīng)用于其他領(lǐng)域的三維可視化快速預(yù)覽,例如室內(nèi)布局、園區(qū)布局等。
該文根據(jù)數(shù)字孿生理念所設(shè)計(jì)的機(jī)房可視化管理方案可以滿(mǎn)足三維機(jī)房可視化的客制化需求,簡(jiǎn)單快捷地創(chuàng)建出現(xiàn)實(shí)機(jī)房的數(shù)字孿生體模型,并能與傳統(tǒng)機(jī)房的后臺(tái)進(jìn)行數(shù)據(jù)交互,可以快速實(shí)現(xiàn)不同機(jī)房場(chǎng)景的搭建以及對(duì)機(jī)房場(chǎng)景的擬真,從而提升機(jī)房的管理效率。