彭玉元
(韓國又石大學大學院造景建設工學科,全羅北道 全州 55338 )
隨著計算機圖形學和軟件處理技術的發展,三維可視化技術廣泛用于各種領域[1]。數字孿生概念也在近年被重新提及,其是指使用物理模型、互聯網、物聯網以及傳感器技術采集生命周期的數據,并在設備或系統上進行仿真的過程,能有效實現對現實環境和虛擬空間的映射。
機房擔負著存儲數據、運行系統以及服務高校發展的重要使命。機房三維可視化設計是對數字孿生概念的實際運用,常規的機房管理系統相對于該系統存在數據呈現形式弱、機房監控復雜等劣勢。該項目進行了數字孿生技術的應用模式探索,以Unity 3D 為客戶端的技術支持,并結合C#程序開發了一款可在PC 端使用的三維機房管理軟件,極大地提高了機房管理的效率,優化了機房管理系統的用戶使用界面。機房的三維可視化管理可通過三維建模(機房設備、機房格局等的數字孿生體)配合實時渲染的三維引擎進行機房的虛擬仿真并展示出來,讓用戶可以與三維場景交互,從而實現機房的三維可視化管理和運維[2]。目前國內外對該領域都具有一定的研究,相關產品有Visual DAQ 系統和Twaver系統等。
機房三維可視化是對傳統管理系統的進一步提升,通過三維可視化的形式呈現機房的大量數據,提高管理人員對機房數據的查閱、接收效率。該系統具有實時性,便于機房管理人員對機房進行資產查看、設備定位,直觀地提供了全方位視角,可以對機房進行立體的分析、管理。
傳統的機房管理系統主要使用一維或二維的系統構架圖、網絡拓撲圖來表達機房數據,視覺呈現難以精確描述機房的整體結構,不利于直觀理解機房數據。而基于數字孿生理念的可視化機房管理系統通過虛擬仿真來進行信息表達,可以通過三維可視化的形式直觀地呈現復雜的機房數據、位置等各種重要信息,幫助管理人員完成更為高效的行動與決策[3]。其優勢如圖1 所示。

圖1 可視化機房管理系統與傳統管理的差異對比圖
機房的業務具有復雜性和專業性,難以將所有的管理內容全部遷移到三維可視化客戶端,在經過一系列的實踐后,筆者認為三維可視化部分應該保持其功能的獨立性和單一性,主要實現客戶端的表現功能,其余復雜的業務邏輯工作依舊交由后臺管理程序和傳統機房管理系統進行處理。
因此,機房的三維可視化客戶端首先需要解決的就是資產的三維可視化編輯。通過預先制作好的三維模型等資源,例如設備機柜、機房空調以及門禁等各種三維資源組件,在客戶端實現場景的編輯功能,可實時編輯機房的布局圖,并實時生成三維可視化場景。已經開發實現的軟件界面截圖如圖2 所示。

圖2 客戶端實時布局演示(軟件截圖)
該軟件使用Unity 3D 技術,并基于C#編程規范進行開發。開發過程中,在進行三維模型預制件的動態編輯布局時,使用C#編程語言來計算多邊形網格,從而繪制墻體和地面的實時三維模型。其步驟依次為設置多邊形頂點數組、設置三角形序列和設置網格UV。在Unity 3D 中將這些步驟依次編寫為3個步驟的靜態函數:1)SetVertices(List
機房場景實時編輯解決了三維機房可視化的客制化需求,可以根據自己的需求進行三維可視化場景的快速編輯布局,簡單快捷地創建出現實機房的數字孿生體模型。但是只有機房的三維模型是不夠的,還要將三維模型與對應的后臺數據快速關聯起來,從而滿足對機房數據信息可視化的要求。
在開發過程中,使用Web 開發技術從傳統機房管理系統中提取必要的數據接口,并借助橋接層,供三維可視化客戶端調用,從而實現后臺數據的交互。流程結構如圖3 所示。

圖3 三維可視化客戶端與后臺數據交互流程圖
三維可視化客戶端中的橋接層使用C#語言進行編寫,自定義接口采用Web services 技術,以XML 格式的形式進行數據交互,在Unity 3D 中編寫C#代碼,周期性主動請求調用數據接口,然后根據所獲得的數據實時關聯到機房三維場景(即數字孿生體)模型中。三維可視化客戶端會根據現實機房中對應設備的狀態來觸發數字孿生體中相應的行為條件,從而在三維場景模型中呈現相應的數據信息,實現了三維場景模型和數據的關聯與交互。
雖然通過實現以上2 個功能,用戶已經可以自定義機房的三維模型以及獲取相應的數據,但是還要給用戶提供三維模型及UI 的可視化操作。該系統主要是通過鼠標和鍵盤進行交互,因此該系統需要穩定、可擴展的三維對象交互系統。
在開發過程中,需要在Unity 3D 中使用C#編寫能與多種三維物體對象進行交互的鼠標事件,從而實現用戶對三維模型與UI 的拖拽等交互操作。筆者基于Unity 3D 中的MonoBehaviour 類以及自定義封裝Unity RayCast API 中的PRayCast 類來對射線進行檢測,從而實現鼠標拾取三維空間中的虛擬對象的功能。同時配合單例PMouseManager 進行事件分發,實現三維虛擬對象的選擇和取消選擇事件。使用單例模式可以方便地在任何地方調取當前交互狀態的信息供開發更多的功能。BaseObjectHandle 類實際作為接口和父類來使用,其直接繼承了MonoBehaviour 和所有EventSystem 的交互接口,讓EventSystem 中的Unity 默認交互事件能夠將事件分發到擴展的所有BaseObjectHanlde的子類中。總的來說,在該系統下,只需要為具體的虛擬對象新建一個實現類,并繼承BaseObjectHandle,然后重寫其中需要響應的交互,并實現具體邏輯,再將腳本中的GameObject.AddComponent

圖4 用戶交互模塊中主要類名與結構
為了存儲每個自定義編輯場景的數據,且將場景數據與后臺服務器進行交互,筆者研究設計了一套基于XML 的數據存儲系統。該系統的主要功能在于能夠在Unity 3D 框架下進行擴展和管理,并完成對不同需求數據的生成、增加、查找、修改與保存工作。
在整個數據存儲系統中,由Storer
為了解決存儲實現類Storer
為了避免數據文件因遭遇不必要的修改而導致程序運行錯誤,在該框架中筆者為數據的存儲添加了一個AES 加密算法,以提供一定的安全加密功能和防串改功能,在項目中采用了C#的RijndaelManaged 類制作數據加密模塊。
客戶端服務器主要采用php 進行開發,部署運行于Windows Server 或Linux 操作系統上,通過固定域名地址為三維可視化客戶端提供數據訪問接口。
測試采用的的系統軟件具體部署如下:1)Windows Server。IIS(Internet Information Services)。2)MySQL。3)PHP Linux(CentOS)。Nginx、MySQL 以及PHP。
客戶端為運行于Windows 操作系統上的三維軟件,需要有中高性能顯卡硬件作為支持,在測試中使用的軟硬件配置為intel core i7、8G DDR4 2133 ram、256g SSD、NVidia GTX 980 8G 顯卡以及windows 10 64bit 操作系統。
配合橋接層后臺可以擴展手機端的信息查看功能,通過配合手機App 可以快速查看服務器的信息,如果出現緊急狀況也可以讓運維人員第一時間掌握故障信息的初步狀況。
可以在橋接層服務器納入更多的數據處理程序,配合部署在服務器機房內的各種傳感器(溫度、濕度及風量等)進行數據采集,并將其提供給三維可視化客戶端,再由客戶端以二維圖表或三維的形式呈現相關數據,例如服務器機房的溫度布局就可以通過熱力圖計算疊加到三維空間中,可直觀地了解機房的溫度分布。
可以同時對機房的動環信息進行三維可視化操作,可以實現動力監控、計算環境監控、安防監控以及服務器監測等功能。運維人員能夠通過三維圖形直接了解機房的動環信息,配合傳統管理系統提供的相關數據,實現更高效的動環系統控制。
借助原有的客戶端動態布局功能可以設計更多其他領域的三維組件模型供用戶調用,即可應用于其他領域的三維可視化快速預覽,例如室內布局、園區布局等。
該文根據數字孿生理念所設計的機房可視化管理方案可以滿足三維機房可視化的客制化需求,簡單快捷地創建出現實機房的數字孿生體模型,并能與傳統機房的后臺進行數據交互,可以快速實現不同機房場景的搭建以及對機房場景的擬真,從而提升機房的管理效率。