• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Unity3D引擎的協(xié)同虛擬現(xiàn)實系統(tǒng)研究

    2020-01-06 10:21:40張彥鵬
    關(guān)鍵詞:虛擬環(huán)境服務(wù)器端虛擬現(xiàn)實

    ◆張彥鵬

    基于Unity3D引擎的協(xié)同虛擬現(xiàn)實系統(tǒng)研究

    ◆張彥鵬

    (華北理工大學(xué)電氣工程學(xué)院 河北 063210)

    協(xié)同虛擬現(xiàn)實系統(tǒng)通過網(wǎng)絡(luò)將計算機(jī)連接成一個整體,協(xié)同虛擬現(xiàn)實系統(tǒng)在情景創(chuàng)設(shè)、協(xié)同操作、人機(jī)交互等方面具有獨特的優(yōu)勢。本文研究了協(xié)同虛擬現(xiàn)實系統(tǒng)的結(jié)構(gòu)、協(xié)同通訊環(huán)境搭建和協(xié)同并發(fā)控制技術(shù)。結(jié)合連鑄協(xié)同虛擬現(xiàn)實培訓(xùn)系統(tǒng)實例,闡述了協(xié)同虛擬現(xiàn)實的設(shè)計流程和關(guān)鍵技術(shù),測試表明,基于Unity3d引擎和Photonserver的協(xié)同虛擬現(xiàn)實系統(tǒng)能拓展單機(jī)系統(tǒng)的應(yīng)用場景,并且滿足低帶寬、實時性的培訓(xùn)需求。

    虛擬現(xiàn)實;分布式系統(tǒng);協(xié)同工作;協(xié)同并行控制

    利用虛擬現(xiàn)實技術(shù)進(jìn)行仿真教學(xué)一直是國內(nèi)外學(xué)者關(guān)注和研究的熱點,其中以Unity3D游戲引擎為工具制作的培訓(xùn)教學(xué)系統(tǒng)[1]也應(yīng)用到各個領(lǐng)域。隨著培訓(xùn)系統(tǒng)的不斷完善,整合現(xiàn)有的資源實現(xiàn)虛擬現(xiàn)實仿真教學(xué)的有效開放與資源共享,充分發(fā)揮培訓(xùn)系統(tǒng)的作用已成為高校教育的有待解決的問題。

    為了解決以上問題,通過分布式技術(shù)將計算機(jī)連接成一個整體形成協(xié)同虛擬現(xiàn)實系統(tǒng)[2],在保證系統(tǒng)穩(wěn)定性、準(zhǔn)確性的前提下,增加原有Unity3D培訓(xùn)教學(xué)系統(tǒng)的實用性與擴(kuò)展性[3],滿足教學(xué)培訓(xùn)中情景創(chuàng)設(shè)、協(xié)同操作、人機(jī)交互等方面[4]的需求。

    本文探討了協(xié)同虛擬現(xiàn)實系統(tǒng)的搭建過程和關(guān)鍵技術(shù),基于 Unity3D 引擎設(shè)計一套協(xié)同虛擬現(xiàn)實系統(tǒng)的實現(xiàn)方案。

    1 系統(tǒng)概述

    協(xié)同虛擬現(xiàn)實系統(tǒng)的搭建的總體思路如圖1:客戶端使用Unity3D搭建視景仿真的虛擬環(huán)境,服務(wù)器端使用c#語言通過Visual Studio編寫處理邏輯,兩者之間通過Photonserver提供的SDK開發(fā)通訊連接,并通過動態(tài)鏈接庫建立C/S的實體映射關(guān)系,并按照此關(guān)系控制數(shù)據(jù)的發(fā)送與接收,進(jìn)行數(shù)據(jù)的交換。

    在服務(wù)器端創(chuàng)建MySQL數(shù)據(jù)庫保存用戶培訓(xùn)信息,實現(xiàn)對協(xié)同用戶的管理,使得不同用戶可以在同一客戶端進(jìn)行操作,實現(xiàn)計算機(jī)資源共享的效果。

    系統(tǒng)啟動后,用戶通過用戶名和密碼進(jìn)行登錄,系統(tǒng)會在服務(wù)器端的數(shù)據(jù)庫匹配用戶之前的信息,如果是新用戶可以進(jìn)行注冊,服務(wù)器按照用戶的用戶名進(jìn)行標(biāo)識。當(dāng)用戶進(jìn)行協(xié)同任務(wù)的操作時,客戶端開啟相應(yīng)的線程向服務(wù)器端傳輸數(shù)據(jù),服務(wù)器端根據(jù)客戶端傳來的數(shù)據(jù)進(jìn)行處理,然后將運行結(jié)果的信息進(jìn)行封裝處理。通過遍歷算法將處理結(jié)果發(fā)送到各個已登錄用戶,實現(xiàn)在協(xié)同的目標(biāo)。

    圖1 系統(tǒng)示意圖

    2 系統(tǒng)設(shè)計與優(yōu)化

    協(xié)同虛擬現(xiàn)實系統(tǒng)的開發(fā),客戶端負(fù)責(zé)虛擬環(huán)境的運行、人機(jī)交互以及客戶端邏輯處理部分;服務(wù)器端負(fù)責(zé)服務(wù)器端邏輯處理部分、消息轉(zhuǎn)發(fā)以及和數(shù)據(jù)庫的交互;而“協(xié)同”的實現(xiàn)主要是信息在客戶端和服務(wù)器端的傳遞[5],一個客戶端的協(xié)同信息經(jīng)服務(wù)器的接收,處理,分裝,最后發(fā)送給各個客戶端進(jìn)行同步,實現(xiàn)實時數(shù)據(jù)共享。

    2.1 傳輸信息的篩選

    系統(tǒng)結(jié)構(gòu)的開發(fā)是實現(xiàn)虛擬環(huán)境中的多用戶的協(xié)同感知[6]并完成操作任務(wù)的基礎(chǔ),在協(xié)同虛擬現(xiàn)實系統(tǒng)中需要獲取每個用戶的虛擬環(huán)境信息,并通知其他成員同步當(dāng)前的狀態(tài)[7],進(jìn)而完成協(xié)同任務(wù)。

    在協(xié)同虛擬現(xiàn)實系統(tǒng)的中,各用戶的操作信息的感知的條件是操作信息的同步,操作信息的同步過程:首先采集客戶端相關(guān)協(xié)同信息;然后將信息進(jìn)行過濾并發(fā)送至其他客戶端;最后通過各個客戶端對信息的接受與處理,經(jīng)以上三步后才完成各個客戶端狀態(tài)的同步[8]。對于大場景的協(xié)同虛擬現(xiàn)實系統(tǒng)來說,對于同步信息的種類、數(shù)量、大小等控制和過濾是很有必要的,如果把大量信息同時收發(fā)和處理,可能造成信息風(fēng)暴,造成系統(tǒng)卡頓甚至崩潰。因此整體系統(tǒng)架構(gòu)如圖2所示。

    2.2 數(shù)據(jù)的封裝與解析

    對于協(xié)同虛擬現(xiàn)實系統(tǒng)的數(shù)據(jù)的同步主要指的是通過服務(wù)器的協(xié)調(diào)使各個客戶端操作信息的同步。因為操作信息的多樣性,根據(jù)開閉原則(OCP),在服務(wù)器端新建一個BaseHandler類作為消息處理節(jié)點用來處理全局的請求信息。根據(jù)處理請求的三個參數(shù)(類型,相關(guān)參數(shù),客戶端類別)把請求信息分配給對應(yīng)處理程序進(jìn)行處理。同樣,在客戶端一側(cè)我們利用Request類作為消息處理節(jié)點用來向服務(wù)器發(fā)送請求以及接收服務(wù)器處理請求后的回調(diào)結(jié)果。

    為了保證各個客戶端通訊數(shù)據(jù)的一致性,在操作信息時采用了回調(diào)函數(shù)和Event()事件類結(jié)合的方式實現(xiàn)了各個客戶端操作信息的同步,流程大致如下,用戶通過Unity3D客戶端的UI和硬件設(shè)備輸入操作信息,客戶端對應(yīng)的操作管理請求模塊通過Peer.OpCustom((byte)OpCode,data,true)把相關(guān)的操作類型以及數(shù)據(jù)通過系統(tǒng)提供的可靠UDP協(xié)議,傳輸?shù)椒?wù)器端,服務(wù)器端通過Peer接收到客戶端的請求信息以及標(biāo)記不同的客戶端,經(jīng)服務(wù)器的處理封裝,通過Peer同步到各個客戶端。

    2.3 數(shù)據(jù)的傳輸格式的轉(zhuǎn)換

    傳輸數(shù)據(jù)時主要有兩種格式:一種為boolean、string、short等簡單數(shù)據(jù)類型,不需要序列化的數(shù)據(jù),這類數(shù)據(jù)可以直接傳輸?shù)椒?wù)器端應(yīng)用程序中進(jìn)行處理。另一種為需要序列化的數(shù)據(jù)比如Vector3()以類的形式存在的數(shù)據(jù),這類數(shù)據(jù)需要客戶端可以通過設(shè)置帶有符合操作約定的鍵和值的哈希表來進(jìn)行傳輸,客戶端和服務(wù)器框架負(fù)責(zé)序列化,傳輸和反序列化數(shù)據(jù)。過程如下:將在服務(wù)器和客戶端傳遞信息的float、int數(shù)據(jù)類型轉(zhuǎn)換為 byte 類型,將字節(jié)數(shù)組封裝為數(shù)據(jù)包。通過把字節(jié)數(shù)組封裝為字節(jié)流數(shù)據(jù)包后發(fā)送,實現(xiàn)結(jié)構(gòu)化的數(shù)據(jù)傳輸。

    圖2 系統(tǒng)體系架構(gòu)

    圖3 信息處理節(jié)點

    2.4 協(xié)同并發(fā)控制技術(shù)

    協(xié)同并發(fā)控制技術(shù)是在協(xié)同虛擬現(xiàn)實系統(tǒng)[9]中為了防止多客戶端對虛擬環(huán)境中同一任務(wù)同時操作造成操作沖突而引入的協(xié)調(diào)機(jī)制[10]。在同步交互的協(xié)同虛擬現(xiàn)實系統(tǒng)中,一致性、響應(yīng)性以及并發(fā)性是實現(xiàn)有效協(xié)同的重要指標(biāo),但三者的關(guān)系是沖突的,協(xié)同系統(tǒng)中往往需要在保證一致性的前提下提升系統(tǒng)快速響應(yīng)能力和支持并發(fā)能力。

    常用的協(xié)同并發(fā)控制技術(shù)有權(quán)限加鎖法和優(yōu)先級控制法。其中權(quán)限加鎖法是指當(dāng)客戶端需要對虛擬物體進(jìn)行操作時,客戶端先向服務(wù)器確認(rèn)該物體的控制權(quán)限是否被鎖,服務(wù)器檢測到權(quán)限未被加鎖時,將操作權(quán)限分配給該用戶的同時,這個物體加鎖保證不被其他用戶操作;優(yōu)先級控制法則首先對客戶端設(shè)置不同的權(quán)限,權(quán)限高則優(yōu)先享有對虛擬物體的控制權(quán),當(dāng)權(quán)限高的用戶主動放棄控制權(quán)時,低權(quán)限的客戶端才能對該物體進(jìn)行操作。

    但是兩者在實際應(yīng)用的過程都對用戶進(jìn)行了等級劃分,且需要優(yōu)先級的設(shè)定。考慮到虛擬現(xiàn)實系統(tǒng)中角色的帶入性本系統(tǒng)通過在虛擬場景中的虛擬人物(Avatar)與場景中操作設(shè)備的碰撞檢測的方式給予虛擬人物操作權(quán)限,簡化了并發(fā)控制過程。

    3 協(xié)同虛擬現(xiàn)實的應(yīng)用實例

    實例通過3dsMax、Unity3D和Photoshop建立和優(yōu)化連鑄車間的虛擬訓(xùn)練環(huán)境,使用 Unity3D引擎開發(fā)客戶端,使用PhotonServer建立服務(wù)器端及客戶端服務(wù)器端的連接;Visual Studio 2017開發(fā)服務(wù)器端運行邏輯,MySQL搭建數(shù)據(jù)庫并使用NHibernate進(jìn)行對象/數(shù)據(jù)庫映射;通過log4net創(chuàng)建系統(tǒng)日志,方便開發(fā)過程的調(diào)試。

    3.1 實例開發(fā)過程

    在Unity3D開發(fā)的客戶端中引入Photon提供的適配Unity3DSDK:Photon3Unity3D.dll導(dǎo)入Unity3D的Plugins文件夾中。并在客戶端建立一個工具類PhotonEngine繼承IPhoton PeerListener并用代碼設(shè)置其為單例模式,客戶端通過PhotonEngine中的PhotonPeer來實現(xiàn)與服務(wù)器端的連接,所以在客戶端跳轉(zhuǎn)場景時也要保障客戶端運行時有且僅有一個PhotonEngine在運行。

    系統(tǒng)服務(wù)器端開發(fā)采用Photon服務(wù)器端的SDK。使用C#代碼在 Visual Studio 2017環(huán)境中編寫好服務(wù)器端的運行邏輯后,Photon會其加載生成的程序集。通過Photon Core配置文件來設(shè)置應(yīng)用程序和定義啟動參數(shù)。

    在系統(tǒng)中PhotonControl程序控制服務(wù)器端的開啟與關(guān)閉。服務(wù)器端通過主類函數(shù)中的三個主要函數(shù)對服務(wù)器端進(jìn)行配置。(1)PeerBase CreatePeer(InitRequest initRequest)用來對客戶端的連接請求以及信息的發(fā)送進(jìn)行處理;(2)SetUp()進(jìn)行服務(wù)器初始化的配置;(3)TearDown()負(fù)責(zé)服務(wù)器端關(guān)閉后各種事件的處理。

    同樣的,系統(tǒng)通過ClientPeer類對于連接到服務(wù)器的客戶端進(jìn)行處理,ClientPeer繼承 Photon.SocketServer.ClientPeer,在ClientPeer類中主要包含了兩個方法:(1)OnDisconnect()客戶端斷開后處理;(2)OnOperationRequest()處理客戶端請求。

    3.2 實例測試

    使用PhotonServer創(chuàng)建的局域網(wǎng)絡(luò)環(huán)境中,兩位同學(xué)分別使用不同客戶端登錄系統(tǒng),系統(tǒng)默認(rèn)分配用戶替身(使用顏色標(biāo)記法區(qū)分本機(jī)用戶),兩個學(xué)生依次控制虛擬操作臺,替身到達(dá)操作臺位置時系統(tǒng)自動切換視角進(jìn)行虛擬操作,如圖4所示。

    經(jīng)測試,當(dāng)虛擬人物在場景移動超過0.04米的時候向服務(wù)器端發(fā)送位置信息,系統(tǒng)通過監(jiān)聽程序在系統(tǒng)運行后以60次/秒的速率同步位置信息。

    4 結(jié)束語

    本文介紹了基于分布式技術(shù)構(gòu)建Unity3D協(xié)同虛擬現(xiàn)實系統(tǒng),解決了基于Unity3D游戲引擎制作的培訓(xùn)教學(xué)系統(tǒng)的單機(jī)局限性問題,增加虛擬現(xiàn)實仿真教學(xué)的開放性與資源共享功能,并滿足低帶寬、實時性的需求,為協(xié)同虛擬現(xiàn)實系統(tǒng)的構(gòu)建提供了一套具有參考價值的實現(xiàn)方案。

    圖4 實例運行實景

    [1]杜承烈,陳進(jìn)朝,尤濤.虛擬實驗軟件平臺技術(shù)的研究與展望[J].計算機(jī)測量與控制,2011,19(3):490-492.

    [2]許愛軍.VRML協(xié)同虛擬現(xiàn)實系統(tǒng)的研究與應(yīng)用[J].計算機(jī)技術(shù)與發(fā)展,2016,26(6):115-118.

    [3]朱安慶,胡安超.基于Unity3D的船舶制造虛擬仿真教學(xué)系統(tǒng)構(gòu)建[J].實驗室研究與探索,2018,37(6):117-120.

    [4]Claudio Passos,Márcio H.da Silva,Antonio C.A.Mol,et al.Design of a collaborative virtual environment for training security agents in big events[J]. Cognition Technology & Work,2017,19(2):315-328.

    [5]范俊君,田豐,杜一,劉正捷,戴國忠.智能時代人機(jī)交互的一些思考[J].中國科學(xué)(信息科學(xué)),2018,48(4):361-375.

    [6]高江林,吳曉燕.基于UML的任務(wù)空間概念模型動態(tài)行為驗證研究[J].航天控制,2012,30(1):54-58.

    [7]蔡啟航,王潔,史通,韓要昌.導(dǎo)彈裝備分布式虛擬協(xié)同操作訓(xùn)練系統(tǒng)設(shè)計[J].傳感器與微系統(tǒng),2018,37(8): 104-106.

    [8]陳昭喜,許愛軍.具有協(xié)同交流功能的虛擬物理實驗室[J].計算機(jī)系統(tǒng)應(yīng)用,2019,28(2):107–112.

    [9]楊歡,劉小玲.虛擬現(xiàn)實系統(tǒng)綜述[J].軟件導(dǎo)刊,2016,15(4):35-37.

    [10]符云清,全文君.協(xié)同虛擬環(huán)境中的并發(fā)控制機(jī)制[J]. 計算機(jī)工程,2009,35(4):51-55.

    猜你喜歡
    虛擬環(huán)境服務(wù)器端虛擬現(xiàn)實
    虛擬環(huán)境中空間壓縮問題的影響與改善
    包裝工程(2023年16期)2023-08-25 11:32:42
    前庭刺激對虛擬環(huán)境三維空間定向的影響及與空間能力的相關(guān)關(guān)系
    載人航天(2021年5期)2021-11-20 06:04:34
    如何通過虛擬環(huán)境有效管理Python第三方庫
    淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
    成功(2018年10期)2018-03-26 02:56:14
    虛擬環(huán)境下大數(shù)據(jù)智能并行聚類方法研究
    風(fēng)口上的虛擬現(xiàn)實
    商周刊(2017年24期)2017-02-02 01:42:55
    虛擬現(xiàn)實技術(shù)向科幻小說借靈感
    海外星云(2016年7期)2016-12-01 04:18:00
    在Windows中安裝OpenVPN
    HTC斥資千萬美元入股虛擬現(xiàn)實設(shè)備商WEVR
    IT時代周刊(2015年8期)2015-11-11 05:50:37
    網(wǎng)頁防篡改中分布式文件同步復(fù)制系統(tǒng)
    江源县| 嘉禾县| 望城县| 治多县| 兰坪| 金堂县| 绥宁县| 肥城市| 龙州县| 长寿区| 卢湾区| 安庆市| 吉隆县| 依兰县| 开平市| 筠连县| 环江| 喀喇沁旗| 濮阳市| 永新县| 清镇市| 温泉县| 磐安县| 平阴县| 高州市| 修武县| 元氏县| 霍州市| 阿坝| 广河县| 嘉义市| 玛纳斯县| 隆林| 大丰市| 建昌县| 抚松县| 清苑县| 敦煌市| 荥经县| 遂川县| 天津市|