Hololens 開發—— MixedRealityToolKit For Unity 實操與學習

MixedRealityToolKit【MRTK】 學習

MRTK 是用於 Hololens 等微軟系 XR 設備的開發包。
點此訪問 MRTK 主頁

[推薦一個 Hololens 演示視頻](https://www.bilibili.com/video/av7047843?from=search&seid=14965371010187156405)

起步

新建一個 MR 場景

新建一個空場景,之後使用配置工具,就可以快速配置一個 MR 場景

配置

MRTK 有着許多設置選項。
配置選項
MRTK 的全局配置表如圖所示
配置圖

點擊右邊的 </> 可以快速新建自定義配置

這是我自定義的配置,而默認配置是不可更改的。你可有通過 Customize 來參照默認配置制定一份自定義配置。

  • Experience 用戶體驗的配置,包含遊戲的對物理空間的需求等。
  • Camera 主攝像頭的配置,和 Camera 組件的內容差不多。
  • Input System 輸入配置,包括手部動作、語音輸入等。
  • Boundary System 遊戲物理空間邊界的顯示
  • Teleport System 尚未研究
  • Spatial Awareness System 和空間識別有關。默認情況下,在遊戲運行時會顯示現實世界的物體的邊界線,這也是和這套系統有關。停用這套系統後,邊界線也會不再顯示
  • Diagnostics System 尚未研究
  • Additional Service 閒雜

通識

輸入模塊

各類動作事件及其處理接口

輸入類別 名稱 處理這個輸入的接口 解釋
Pointer PointerClicked IMixedRealityPointerHandler 手指點擊
Pointer PointerUp IMixedRealityPointerHandler 手指按下
Pointer PointerDown IMixedRealityPointerHandler 手指擡起
Input OnInputUp IMixedRealityInputHandler 手指/按鍵擡起(測試失敗)
Input OnInputDown IMixedRealityInputHandler 手指/按鍵按下
Input OnInputChanged IMixedRealityInputHandler 手指/按鍵狀態改變
Focus OnFocusEnter IMixedRealityFocusHandler 中央白點指向物體
Focus OnFocusExit IMixedRealityFocusHandler 中央白點離開物體
Focus OnFocusChanged IMixedRealityFocusHandler Enter 與 Exit 切換時

如何使用動作事件的處理接口?

class Test:MonoBehaviour,IMixedRealityPointerHandler,IMixedRealityInputHandler<MixedRealityPose>{
    //來自IMixedRealityPointerHandler,當手指在點擊時觸發
    public void OnPointerClicked(MixedRealityPointerEventData eventData)
    {
        Vector3 cmPosition;
        //獲取當前點擊時,攝像機的世界位置
        eventData.Pointer.TryGetPosition(out cmPosition);
    }
    //來自IMixedRealityInputHandler,當【MixedRealityPose】的輸入內容產生了變化...
    public void OnInputChanged(InputEventData<MixedRealityPose> eventData){}

    //……
}

使用 UnityEngine.XR 提供的接口來即時獲得位置

class Test:IMixedRealityInputHandler<MixedRealityPose>{
    void Update(){
        //獲取右手的位置
        Vector3 handPosition=UnityEngine.XR.InputTracking.GetLocalPosition(XRNode.RightHand);
    }
}

使用 MRTK 的舒適姿勢

MRTK 大綱如圖
MRTK文件大綱

  • MixedRealityToolkit 定義了一些核心類,可以在中後期仔細研究這些內容
  • MixedRealityToolkit.Examples 定義了一些範例,幷包含一個 readme 文件。閱讀這個文件之後再學習範例,效果更佳。
  • MixedRealityToolkit.Generated MRTK 自動生成的文件所存放的位置
  • MixedRealityToolkit.Providers 定義了一些核心的、與硬件相關的功能的具體實現
  • MixedRealityToolkit.SDK 定義了一些次核心的工具類,這些類在前期會叫常用到,可以仔細研究。其中既包括完善遊戲的內容(Features),也包括輔助開發的內容(如 Inspectors,實時顯示數據內容)
  • MixedRealityToolkit.Services 對應 MRTK 配置中的各個模塊。

遇到的坑

IO 234

使用某些版本的 Unity 編譯 MRTK 項目時,IO 會報出 234 號錯誤。

解決方法:換一個 Unity 版本吧。這是 Unity 內部的問題,沒有解決的思路,也沒查到解決方法。

Holographic

根據官網教程,需要在 Hololens 裏下載 Holographic 這個應用來開發 Hololens。
在 Unity 上提供一個用來連接到 Hololens 上的編輯窗口。
holographic 窗口

一般來說,使用這個窗口不會有什麼問題。但是目前根據使用情況,在 Disconnect(斷開與 Hololens 的連接)的時候,需要注意 Holographic 這個應用的狀態。如果在不適合的時候 Disconnect,有機率發生未知的傳輸錯誤,以至於Unity 等待時間過長而崩潰。在退出 Play 狀態時,偶爾也會因爲傳輸數據的問題發生這種崩潰錯誤。

翻了半天,我沒有找到這個編輯窗口相關的代碼,尚無法徹底解決這個問題。

深入

一些關鍵類型

MixedRealityInputSystem

輸入系統核心函數

尚未完全研究透徹,我會不定時的更新這份筆記。歡迎有疑問的同學在樓下提問,讓我們一起冷凝一起飛 :)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章