?

基于分布式虛擬現實的連鑄多人協作系統

2019-07-25 01:44闞闊張凱峰
物聯網技術 2019年4期
關鍵詞:虛擬現實

闞闊 張凱峰

摘 要:針對連鑄生產過程的多人協作培訓,文中應用Unity 3D游戲引擎和Photon Server服務器引擎,設計并實現了一套基于客戶端/服務器的分布式虛擬仿真協作系統。系統將地理上相互獨立的用戶通過計算機網絡連接到同一個虛擬世界,使用戶共享資源,實現多用戶的協同工作,滿足連鑄培訓的需求。

關鍵詞:虛擬現實;分布式技術;多人協作;信息同步;仿真協作;分布式虛擬

中圖分類號:TP393文獻標識碼:A文章編號:2095-1302(2019)04-0-02

0 引 言

連鑄是指將液態鋼水經過一系列復雜的工藝過程變為固態鋼坯的工藝[1]。連鑄生產工藝復雜,實際生產過程需要多工種配合工作。在連鑄生產培訓過程中,多工種的配合工作已經成為連鑄生產培訓的重要環節,也是連鑄工人需要掌握的重要技能。所以實現連鑄多人協作系統成為連鑄培訓的重要內容。

近年來,計算機網絡通信技術的快速發展推動了信息技術的進步[2]。計算機網絡技術的更新和變化改變了傳統的信息應用方式。由于傳統單機虛擬現實系統不能滿足用戶需求,因此分布式虛擬現實(Distributed Virtual Reality,DVR)系統應運而生[3]。

本文針對連鑄生產過程中的多人協作培訓過程,應用Unity 3D游戲引擎和Photon Sever服務器引擎,設計并實現了一個基于客戶端/服務器的分布式虛擬仿真協作系統[4]。

1 系統協同架構

本系統采用混合式協同架構方法解決分布式虛擬現實時空不同步的問題[4-6],架構如圖1所示,系統分為客戶端和服務器兩部分。

客戶端負責用戶的控制流程輸入、場景實現、位置移動、碰撞檢測、與服務器進行數據傳輸等操作。當用戶進行操作時,如控制工藝生產流程操作或位置移動,客戶端接收到操作信息后,執行動作完成任務,并將執行完的控制流程信號、位置信息和碰撞信息發送到服務器中。同時服務器監聽發送的數據包端口,實時接收并更新和顯示場景中的生產狀態信息、位置信息和碰撞信息,及時把運行狀態反饋給操作用戶。

服務器的主要功能是對在線用戶進行管理、多任務處理和場景中用戶位置同步更新等。系統啟動后,當有客戶端成功連到服務端時,服務器按照用戶選擇的工種任務進行編號標識。多個用戶同時操作后,服務器根據客戶端傳來的數據同步更新碰撞、用戶位置和生產流程信息,再將同步后的信息分別發送到每個客戶端,最終實現在虛擬場景的同步協作生產過程[6]。

2 平臺開發環境搭建

平臺開發環境構成如下:

(1)操作系統:Windows 7;

(2)集成開發環境:Visual Studio 2015;

(3)客戶端開發:Unity 3D游戲引擎;

(4)服務器開發:Photon Server服務器引擎;

(5)開發語言:C#。

3 系統實現

3.1 服務器的實現

系統服務器采用Photon Server服務器引擎開發。Photon Server是網絡游戲引擎供應商Exit Game開發的一套高性能服務器引擎。不同于其他服務器的套接字(Socket)采用Java實現,Photon Server的核心使用C++開發,其效能相較其他服務器更高[7-8]。

3.1.1 客戶端連接

在服務器中,每當有一個客戶端成功連接,服務器都會調用CreatePeer()函數創建客戶端請求,并在客戶端列表中加入客戶端ID。當客戶端斷開連接,服務器調用Disconnect()處理客戶端斷開時需釋放的資源等事項。代碼如下:

3.1.2 服務器數據接收和同步

在一個分布式系統中,服務器最主要的工作就是接收來自不同客戶端的數據信息,并將數據信息同步更新到其他客戶端中。在Photon Server服務器中,采用OnOperationRequest()函數接收來自不同客戶端的位置、碰撞和工序數據信息,再通過OnOperationReponse()函數將信息同步到其他客戶端,如圖2所示。

3.2 客戶端實現

本系統采用Unity 3D游戲引擎開發客戶端。Unity 3D是由Unity Technologies開發的一個讓用戶能輕松快速創建對象、引入外部資源以及通過代碼把它們聯系起來的物理引擎,同時也是一個全面整合的專業游戲引擎[9-10]。

3.2.1 用戶獲取位置、旋轉信息

在Unity 3D中,Transform組件能用于控制模型旋轉、移動、縮放等,是模型的基礎組件。其中,Position變量用于表示模型在世界坐標的位置;Rotation變量用于表示模型按世界坐標系X,Y,Z坐標軸旋轉的角度;Scale變量用于表示模型放大的倍數。

在多人協作操作中,每個客戶端需要實時獲取客戶移動位置、旋轉角度等數據,并將數據傳到服務器中,同時接受服務器傳送的其他客戶端的數據進行同步。系統獲取自身位置、旋轉信息,并同步其他客戶端位置、旋轉,代碼如下:

3.2.2 物體碰撞信息

Unity 3D的碰撞檢測功能集成于其內置的PhysX物理引擎中,通過碰撞器組件(Collider)實現。其中Box Collider為軸對齊包圍盒,Sphere Collider為球包圍盒。碰撞器與處理物理運動特性的剛體組件(Rigidbody)配合使用。

為客戶端上的所有用戶在虛擬場景中添加空物體GameObject,此空物體表示用戶的位置。在空物體上添加Box Collider組件和Rigidbody組件。其中Box Collider組件用于檢測兩個添加Box Collider組件的用戶之間是否存在碰撞,Rigidbody組件能使兩個發生碰撞的用戶不存在穿透現象。當客戶端檢測到發生碰撞時,會記錄下發生碰撞的用戶名字和用戶位置信息,并傳到服務器中進行同步。其記錄信息代碼如下:

4 實際運行效果

連鑄協作培訓系統運行良好。圖3展示了客戶端連接服務器過程;圖4展示了多個用戶在虛擬場景中的移動情況;圖5展示了兩個客戶端之間虛擬場景同步的情況。

5 結 語

本文針對連鑄的多人協作培訓,開發了以Photon Server服務器引擎和Unity 3D游戲引擎為核心的分布式虛擬現實連鑄培訓多人協作系統,實現了多用戶在虛擬系統中的位置同步,碰撞檢測和生產狀態同步,滿足了連鑄多人培訓的需求,具有良好的用戶體驗和使用效果。

參 考 文 獻

[1]朱朝月.連鑄虛擬交互系統的設計與實現[D].唐山:華北理工大學,2017.

[2]杜寶江,林靈,徐剛.分布式交互技術在虛擬培訓中的研究與應用[J].信息技術,2015(6):157-161.

[3]謝敬偉.分布式虛擬現實交互仿真系統研究[D].杭州:浙江大學,2017.

[4]耿小兵,劉思江,朱曉陽,等.洗消分隊戰術技術仿真訓練系統研究[J].系統仿真學報,2012,24(2):339-343.

[5]文娟.虛擬現實技術在出版和教育領域的應用分析[J].信息記錄材料,2018,19(10):150-152.

[6]朱東方,蘇群星,劉鵬遠.裝備分布式虛擬維修訓練云仿真關鍵技術[J].計算機應用,2013,33(10):2778-2782.

[7]王立,張勇.船舶航行視景分布式可視化仿真技術研究[J].艦船科學技術,2016,38(22):76-78.

[8]黃鵬.基于Unity 3D的分布式協同虛擬裝配仿真研究及實現[D].湘潭:湘潭大學,2017

[9]李大鵬.基于P2P架構的多人在線游戲的安全性研究[D].長春:吉林大學,2017.

[10]賀馮政.網絡游戲服務器通信架構及關鍵技術研究[D].成都:電子科技大學,2008.

猜你喜歡
虛擬現實
論虛擬現實藝術的“沉浸”
REALITY BITES
虛擬現實產業進入高速發展期
虛擬現實技術向科幻小說借靈感
虛擬現實:另一個真實世界
諾基亞推出虛擬現實攝像機OZO
虛擬現實炫酷來襲走出實驗室坎坷漫長
淺談虛擬現實
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合