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