闞闊 張凱峰
摘 要:針對連鑄生產(chǎn)過程的多人協(xié)作培訓(xùn),文中應(yīng)用Unity 3D游戲引擎和Photon Server服務(wù)器引擎,設(shè)計并實現(xiàn)了一套基于客戶端/服務(wù)器的分布式虛擬仿真協(xié)作系統(tǒng)。系統(tǒng)將地理上相互獨立的用戶通過計算機網(wǎng)絡(luò)連接到同一個虛擬世界,使用戶共享資源,實現(xiàn)多用戶的協(xié)同工作,滿足連鑄培訓(xùn)的需求。
關(guān)鍵詞:虛擬現(xiàn)實;分布式技術(shù);多人協(xié)作;信息同步;仿真協(xié)作;分布式虛擬
中圖分類號:TP393文獻(xiàn)標(biāo)識碼:A文章編號:2095-1302(2019)04-0-02
0 引 言
連鑄是指將液態(tài)鋼水經(jīng)過一系列復(fù)雜的工藝過程變?yōu)楣虘B(tài)鋼坯的工藝[1]。連鑄生產(chǎn)工藝復(fù)雜,實際生產(chǎn)過程需要多工種配合工作。在連鑄生產(chǎn)培訓(xùn)過程中,多工種的配合工作已經(jīng)成為連鑄生產(chǎn)培訓(xùn)的重要環(huán)節(jié),也是連鑄工人需要掌握的重要技能。所以實現(xiàn)連鑄多人協(xié)作系統(tǒng)成為連鑄培訓(xùn)的重要內(nèi)容。
近年來,計算機網(wǎng)絡(luò)通信技術(shù)的快速發(fā)展推動了信息技術(shù)的進步[2]。計算機網(wǎng)絡(luò)技術(shù)的更新和變化改變了傳統(tǒng)的信息應(yīng)用方式。由于傳統(tǒng)單機虛擬現(xiàn)實系統(tǒng)不能滿足用戶需求,因此分布式虛擬現(xiàn)實(Distributed Virtual Reality,DVR)系統(tǒng)應(yīng)運而生[3]。
本文針對連鑄生產(chǎn)過程中的多人協(xié)作培訓(xùn)過程,應(yīng)用Unity 3D游戲引擎和Photon Sever服務(wù)器引擎,設(shè)計并實現(xiàn)了一個基于客戶端/服務(wù)器的分布式虛擬仿真協(xié)作系統(tǒng)[4]。
1 系統(tǒng)協(xié)同架構(gòu)
本系統(tǒng)采用混合式協(xié)同架構(gòu)方法解決分布式虛擬現(xiàn)實時空不同步的問題[4-6],架構(gòu)如圖1所示,系統(tǒng)分為客戶端和服務(wù)器兩部分。
客戶端負(fù)責(zé)用戶的控制流程輸入、場景實現(xiàn)、位置移動、碰撞檢測、與服務(wù)器進行數(shù)據(jù)傳輸?shù)炔僮?。?dāng)用戶進行操作時,如控制工藝生產(chǎn)流程操作或位置移動,客戶端接收到操作信息后,執(zhí)行動作完成任務(wù),并將執(zhí)行完的控制流程信號、位置信息和碰撞信息發(fā)送到服務(wù)器中。同時服務(wù)器監(jiān)聽發(fā)送的數(shù)據(jù)包端口,實時接收并更新和顯示場景中的生產(chǎn)狀態(tài)信息、位置信息和碰撞信息,及時把運行狀態(tài)反饋給操作用戶。
服務(wù)器的主要功能是對在線用戶進行管理、多任務(wù)處理和場景中用戶位置同步更新等。系統(tǒng)啟動后,當(dāng)有客戶端成功連到服務(wù)端時,服務(wù)器按照用戶選擇的工種任務(wù)進行編號標(biāo)識。多個用戶同時操作后,服務(wù)器根據(jù)客戶端傳來的數(shù)據(jù)同步更新碰撞、用戶位置和生產(chǎn)流程信息,再將同步后的信息分別發(fā)送到每個客戶端,最終實現(xiàn)在虛擬場景的同步協(xié)作生產(chǎn)過程[6]。
2 平臺開發(fā)環(huán)境搭建
平臺開發(fā)環(huán)境構(gòu)成如下:
(1)操作系統(tǒng):Windows 7;
(2)集成開發(fā)環(huán)境:Visual Studio 2015;
(3)客戶端開發(fā):Unity 3D游戲引擎;
(4)服務(wù)器開發(fā):Photon Server服務(wù)器引擎;
(5)開發(fā)語言:C#。
3 系統(tǒng)實現(xiàn)
3.1 服務(wù)器的實現(xiàn)
系統(tǒng)服務(wù)器采用Photon Server服務(wù)器引擎開發(fā)。Photon Server是網(wǎng)絡(luò)游戲引擎供應(yīng)商Exit Game開發(fā)的一套高性能服務(wù)器引擎。不同于其他服務(wù)器的套接字(Socket)采用Java實現(xiàn),Photon Server的核心使用C++開發(fā),其效能相較其他服務(wù)器更高[7-8]。
3.1.1 客戶端連接
在服務(wù)器中,每當(dāng)有一個客戶端成功連接,服務(wù)器都會調(diào)用CreatePeer()函數(shù)創(chuàng)建客戶端請求,并在客戶端列表中加入客戶端ID。當(dāng)客戶端斷開連接,服務(wù)器調(diào)用Disconnect()處理客戶端斷開時需釋放的資源等事項。代碼如下:
3.1.2 服務(wù)器數(shù)據(jù)接收和同步
在一個分布式系統(tǒng)中,服務(wù)器最主要的工作就是接收來自不同客戶端的數(shù)據(jù)信息,并將數(shù)據(jù)信息同步更新到其他客戶端中。在Photon Server服務(wù)器中,采用OnOperationRequest()函數(shù)接收來自不同客戶端的位置、碰撞和工序數(shù)據(jù)信息,再通過OnOperationReponse()函數(shù)將信息同步到其他客戶端,如圖2所示。
3.2 客戶端實現(xiàn)
本系統(tǒng)采用Unity 3D游戲引擎開發(fā)客戶端。Unity 3D是由Unity Technologies開發(fā)的一個讓用戶能輕松快速創(chuàng)建對象、引入外部資源以及通過代碼把它們聯(lián)系起來的物理引擎,同時也是一個全面整合的專業(yè)游戲引擎[9-10]。
3.2.1 用戶獲取位置、旋轉(zhuǎn)信息
在Unity 3D中,Transform組件能用于控制模型旋轉(zhuǎn)、移動、縮放等,是模型的基礎(chǔ)組件。其中,Position變量用于表示模型在世界坐標(biāo)的位置;Rotation變量用于表示模型按世界坐標(biāo)系X,Y,Z坐標(biāo)軸旋轉(zhuǎn)的角度;Scale變量用于表示模型放大的倍數(shù)。
在多人協(xié)作操作中,每個客戶端需要實時獲取客戶移動位置、旋轉(zhuǎn)角度等數(shù)據(jù),并將數(shù)據(jù)傳到服務(wù)器中,同時接受服務(wù)器傳送的其他客戶端的數(shù)據(jù)進行同步。系統(tǒng)獲取自身位置、旋轉(zhuǎn)信息,并同步其他客戶端位置、旋轉(zhuǎn),代碼如下:
3.2.2 物體碰撞信息
Unity 3D的碰撞檢測功能集成于其內(nèi)置的PhysX物理引擎中,通過碰撞器組件(Collider)實現(xiàn)。其中Box Collider為軸對齊包圍盒,Sphere Collider為球包圍盒。碰撞器與處理物理運動特性的剛體組件(Rigidbody)配合使用。
為客戶端上的所有用戶在虛擬場景中添加空物體GameObject,此空物體表示用戶的位置。在空物體上添加Box Collider組件和Rigidbody組件。其中Box Collider組件用于檢測兩個添加Box Collider組件的用戶之間是否存在碰撞,Rigidbody組件能使兩個發(fā)生碰撞的用戶不存在穿透現(xiàn)象。當(dāng)客戶端檢測到發(fā)生碰撞時,會記錄下發(fā)生碰撞的用戶名字和用戶位置信息,并傳到服務(wù)器中進行同步。其記錄信息代碼如下:
4 實際運行效果
連鑄協(xié)作培訓(xùn)系統(tǒng)運行良好。圖3展示了客戶端連接服務(wù)器過程;圖4展示了多個用戶在虛擬場景中的移動情況;圖5展示了兩個客戶端之間虛擬場景同步的情況。
5 結(jié) 語
本文針對連鑄的多人協(xié)作培訓(xùn),開發(fā)了以Photon Server服務(wù)器引擎和Unity 3D游戲引擎為核心的分布式虛擬現(xiàn)實連鑄培訓(xùn)多人協(xié)作系統(tǒng),實現(xiàn)了多用戶在虛擬系統(tǒng)中的位置同步,碰撞檢測和生產(chǎn)狀態(tài)同步,滿足了連鑄多人培訓(xùn)的需求,具有良好的用戶體驗和使用效果。
參 考 文 獻(xiàn)
[1]朱朝月.連鑄虛擬交互系統(tǒng)的設(shè)計與實現(xiàn)[D].唐山:華北理工大學(xué),2017.
[2]杜寶江,林靈,徐剛.分布式交互技術(shù)在虛擬培訓(xùn)中的研究與應(yīng)用[J].信息技術(shù),2015(6):157-161.
[3]謝敬偉.分布式虛擬現(xiàn)實交互仿真系統(tǒng)研究[D].杭州:浙江大學(xué),2017.
[4]耿小兵,劉思江,朱曉陽,等.洗消分隊?wèi)?zhàn)術(shù)技術(shù)仿真訓(xùn)練系統(tǒng)研究[J].系統(tǒng)仿真學(xué)報,2012,24(2):339-343.
[5]文娟.虛擬現(xiàn)實技術(shù)在出版和教育領(lǐng)域的應(yīng)用分析[J].信息記錄材料,2018,19(10):150-152.
[6]朱東方,蘇群星,劉鵬遠(yuǎn).裝備分布式虛擬維修訓(xùn)練云仿真關(guān)鍵技術(shù)[J].計算機應(yīng)用,2013,33(10):2778-2782.
[7]王立,張勇.船舶航行視景分布式可視化仿真技術(shù)研究[J].艦船科學(xué)技術(shù),2016,38(22):76-78.
[8]黃鵬.基于Unity 3D的分布式協(xié)同虛擬裝配仿真研究及實現(xiàn)[D].湘潭:湘潭大學(xué),2017
[9]李大鵬.基于P2P架構(gòu)的多人在線游戲的安全性研究[D].長春:吉林大學(xué),2017.
[10]賀馮政.網(wǎng)絡(luò)游戲服務(wù)器通信架構(gòu)及關(guān)鍵技術(shù)研究[D].成都:電子科技大學(xué),2008.