當前位置:
首頁 > 最新 > Mixed Reality Toolkit-Unity開發系列—Sharing模塊

Mixed Reality Toolkit-Unity開發系列—Sharing模塊

今天要為大家帶來的內容是我們在HoloLens開發時,經常使用到的一個開發神器-微軟原生開發包Mixed Reality Toolkit-Unity(簡稱「MRTK」):這是一組腳本和組件集成的開源開發工具包,旨在加速針對用Unity開發Windows的混合現實應用程序。

整個工具包分為九大模塊: Sharing,Input,Spatial Mapping,Spatial Sound,UX Controls,Utilities,Spatial Understanding,Build,Boundary,他們各自在MR開發中擔任不同的功能。目前最新支持的Unity版本為2017.2.1。

Sharing 模塊上手實踐

本文,我們首先手把手教大家使用Unity製作一個小Demo,幫助大家深入了解MRTK工具包中的Sharing模塊。

MixedRealityToolkit.Sharing庫允許應用程序跨越多個設備,並啟用全息協作。Sharing使用戶可以使用多個設備執行任務,允許在每個設備上運行的應用程序通信並保持無縫實時同步。

GitHub對應工具包

下載成功後,我們打開項目,可以看到這時Unity上方Configuration工具欄載入出Mixed Reality Toolkit選項,這其中包含對發布到UWP時的一些參數設置,其中最重要的就是對所發布設備的功能勾選:

配置Other Setting中的Capabilities

這時,還是通過剛才MRTK選項的下拉菜單中點擊Launch Sharing Service運行共享服務,將會在您的機器上創建一個新的伺服器實例。如下圖:

啟動伺服器

共享會話伺服器是一個64位的Win32應用程序,可以在命令提示符下運行或作為Windows服務運行。使用MixedRealityToolkit.Sharing客戶端的應用程序可以連接到該服務以發現彼此,共同加入共享Session,並且便於VoIP通信和空間錨定位共享。

此時,檢查伺服器是否成功打開,若成功打開則會在控制台列印如下圖:

伺服器開啟

需要注意的是:

1.仔細檢查您場景中需要連接伺服器的地址是否與控制台中顯示地址相匹配

2.確保所需要的協同設備都連接到相同的無線區域網

3.確保所有防火牆設置都正確,保證連接不會受限。

接著,就可以把Demo部署到相應設備上來觀察了:本文以一個樣本場景來剖析協同原理,在Unity中打開SharingTest場景,我們藉助兩台HoloLens來展示對應的效果。分別部署到兩台設備之後,運行程序可以看到控制台列印如圖下:

設備成功連接伺服器

連接之後,我們可以看到設備加入到網路的構建過程,房間的客戶端之間共享的消息內容,如何在客戶端之間共享空間錨以及在加入房間的用戶頭上繪製立方體。動手操作後,我們可以大致了解在MR世界中協同工作的原理。設備在連接後,程序會檢測是否有與客戶端相匹配的空間錨,如果有則下載並同步位置,如果沒有則上傳空間錨到服務端,並對其他後加入的設備重複此步驟。最後的Demo效果圖如下:

在PC端的Demo展示

Sharing模塊的工作機制

接下來,讓我們從代碼層面來解讀一下Sharing模塊的工作機制,還是以這個場景為例。在RemoteHeadManager.cs腳本中,在Start回調函數里,第一行代碼是將消息處理函數綁定到委託上,這個我們在後邊展開來講。此外則是對伺服器進行訪問連接,將客戶端加入和離開房間的方法綁定到一個負責管理應用程序核心網路層的單例腳本SharingStage.cs中。

建立伺服器連接並跟蹤客戶端行為

SharingStage類具有以下職責:

1.伺服器配置(地址,埠和客戶端角色)

2.建立和管理伺服器連接

3.創建並初始化同步數據模型(SyncRoot)

4.創建跟蹤伺服器上所有會話的ServerSessionsTracker

5.創建跟蹤當前會話中的用戶的SessionUsersTracker

經過函數內部一系列的邏輯處理之後,伺服器會創建和跟蹤伺服器上的各種會話,當發現連接時,通過SharingStage.cs腳本創建實例,並將與之相關的事件公開出來。此外,還會跟蹤當前會話和其中用戶的行為,並且也會將所觸發的事件暴露。在本例中,所有的事件都會被列印出來,您可以在MR設備中進行查看Log從而獲得信息。

完成以上步驟,我們就已經搭好一條與伺服器的溝通渠道了。此時,只需要包裝一個通用的消息格式,即可進行協同!

在Game視圖中,可以看到如果加入一台設備,場景中就會生成一個方塊來代表它,並且同步空間位置以及它的旋轉角度,做法就是將HoloLens的變換信息實時的通過網路傳輸來改變方塊的transform,我們回到代碼中來看一看。

包裝消息的函數體

消息包裝好之後,就通過廣播的形式發送給在房間的各設備。還記得之前提到的綁定消息處理函數嗎?當收到消息之後,對應ID的設備將會解析消息,並將它交給之後的函數體處理。

更新方塊的 transform

這個函數將會在接收到消息時調用,實時的更新方塊的transform。這樣,一套簡單的協同環境就已經構建好了,接下來,您可以填充更多的邏輯讓它變得更有趣。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 微軟HoloLens 的精彩文章:

如何設計一款人見人愛的HoloLens APP

TAG:微軟HoloLens |