Share via


快速入門:深入 MRTK 逐步解說

本指南提供 Azure 物件錨點 MRTK Unity 範例應用程式的深入涵蓋範圍。 其旨在提供範例設計的深入解析。 藉由閱讀本指南,開發人員可以加速瞭解範例中重要的 Azure 物件錨點概念。

專案版面配置

為 Azure 物件錨點 MRTK Unity 範例建立的資產會儲存在 中 Assets\MixedReality.AzureObjectAnchors 。 子資料夾如下所示:

  • 圖示
    • 包含使用者面向功能表中所使用的一些自訂圖示。
  • 材質
    • 包含表面重建視覺效果的著色器和 材質,以及僅 深度著色器,它會寫入深度緩衝區,以協助在文字周圍使用全像投影防震。
  • 預製物件
    • 包含可重複使用的 Unity GameObjects 。 特別是, TrackableObjectPrefab 表示當 Azure Object Anchors 偵測到物件時所建立的物件。
  • 設定檔
    • 包含自訂的 MRTK 設定檔,描述從 MRTK 啟用應用程式所需的最少功能。
  • 場景
    • 包含 AOASampleTestScene ,這是範例中的主要場景。
  • 指令碼
    • 包含針對範例所撰寫的腳本。

Unity 場景

Mixed Reality播放空間– 大部分已重複使用 MRTK

  • 介紹適用于 Unity 的 MRTK
  • 有一個附加至相機的 UI,可詳細說明 Azure 物件錨點的整體狀態, (請參閱 OverlayDebugText.cs) 。

物件Mixed Reality播放空間– 大部分與 Azure 物件錨點相關,但有一些 MRTK 控制項。 附加至父系的兩個腳本 TrackableObjectSearchObjectTracker ,代表具有 Azure 物件錨點的主要介面。

  • 功能表
    • 主要是 MRTK 程式碼,但 UI 互動會導向 Azure 物件錨點功能。
    • 附加 TrackableObjectMenu 腳本會執行將 MRTK UI 事件路由至適當 Azure 物件錨點呼叫的主要作業。
    • MRTK 手部功能表
  • WorkspaceBoundingBox
    • 包含與控制周框方塊相關聯的 MRTK 腳本。
    • 也包含 ModelVis 子物件,此物件用於在偵測發生之前視覺化 Azure 物件錨點模型,以協助在棘手的偵測期間進行對齊。

在深入瞭解腳本之前,讓我們先流覽功能表項目。 如此一來,我們可以參考這些功能表項目如何與腳本互動。

mrtk 功能表

底部和右子功能表不會自動顯示,而是分別使用 Search Area SettingsTracker Settings 切換。

  • 開始搜尋
    • 開始在指定的搜尋區域中搜尋物件。
  • 切換空間對應
    • 在搜尋時顯示空間對應之間的迴圈,一律顯示空間對應,且永遠不會顯示空間對應。
  • 追蹤器設定/搜尋區域設定
    • 切換其各自的子功能表。
  • 啟動追蹤/停止追蹤
    • 開始或結束診斷追蹤。
  • 上傳追蹤
    • 將診斷追蹤上傳至 Microsoft 以進行偵錯分析。

追蹤器設定

  • 高精確度
    • 啟用時, ObjectInstanceTrackingMode 會設定為 HighLatencyAccuratePosition
    • 停用時, ObjectInstanceTrackingMode 會設定為 LowLatencyCoarsePosition
  • 寬鬆垂直對齊
    • 啟用時,會將 設定 AllowedVerticalOrientationInDegrees 為 10 度。 這項功能可讓您偵測坡道上的物件。
    • 停用時,將 設定 AllowedVerticalOrientationInDegrees 為 0 度。
  • 允許調整變更
    • 啟用時,會將 設定 MaxScaleChange 為 0.1。 這項功能可讓 Azure Object Anchors 根據 HoloLens 追蹤縮放比例調整來調整物件的規模。
    • 停用時,將 設定 MaxScaleChange 為 0。
  • 涵蓋範圍比例滑杆
    • 調整物件偵測所需的涵蓋範圍比例,以考慮相符專案。 較低的值會增加偵測的頻率。 對於難以偵測的物件而言,這項功能可能很理想,但也可能會導致誤判物件偵測增加。

搜尋區域設定

  • 鎖定搜尋區域
    • 啟用時,防止使用者變更搜尋區域。
  • 自動調整搜尋區域
    • 啟用時,允許腳本移動搜尋區域以精簡偵測程式。
  • 迴圈網格
    • 迴圈查看可以偵測的物件網格 .ou ,而且沒有網格。

指令碼

  • AutonomousSearchArea.cs
    • 此腳本會附加至 WorkspaceBoundingBox 。 腳本會嘗試自動調整和放置 WorkspaceBoundingBox 。 啟用 時 Auto-Adjust Search Area 會啟用它。
  • ObjectAnchorsSubscription.cs
    • 此腳本會包裝上傳診斷資料所需的資訊。
  • ObjectTracker.cs
    • 此腳本會橋接 Unity 與 Azure 物件錨點 SDK 的偵測層面。
  • ObjectTrackerDiagnostics.cs
    • 此腳本會管理 Azure 物件錨點 SDK 的診斷功能。
  • OverlayDebugText.cs
    • 此腳本會附加至主要相機。 它負責向使用者顯示範例和 Azure 物件錨點的整體狀態。
  • PositionDebugInfo.cs
    • 此腳本只會強制附加至偵測到物件的偵錯文字來面對使用者。
  • SearchAreaController.cs
    • 此腳本會管理 用來指出 Azure 物件錨點應搜尋物件的位置的 狀態 WorkspaceBoundingBox
  • SearchAreaModelVisualization.cs
    • 此腳本會啟用 Cycle Mesh 下方 Search Area Settings 的功能。
  • SpatialMappingController.cs
    • 此腳本會根據 與 下的 Main Menu 互動 Toggle Spatial Mapping ,管理何時應啟用空間對應。
  • TextToSpeech.cs
    • 此腳本會接受文字,並將其轉換成語音。
  • TrackableObjectData.cs
    • 此腳本代表可追蹤之物件的資料。
  • TrackableObjectDataLoader.cs
    • 此腳本會執行載入 .ou 檔案並將其轉換成 TrackableObjectData 專案的工作。
  • TrackableObjectMenu.cs
    • 大部分的使用者互動會從 UI 流向此腳本,然後流向適當的腳本。 例如, TrackableObjectMenu 具有 ToggleSpatialMapping ,其會路由傳送至 SpatialMappingController
  • TrackableObjectSearch.cs
    • 此腳本會針對搜尋區域進行一些輕量管理。 特別是,使用者點選空間的互動,搜尋方塊會放在使用者前面。 它也會讓搜尋方塊內部不會在搜尋時呈現,或在偵測到物件時呈現,以防止完整轉譯遮蔽物件。
  • TrackedObject.cs
    • TrackableObjectPrefab 的主要腳本。 它會維護 Azure Object Anchors 偵測到之物件的視覺效果狀態。
  • TrackedObjectData.cs
    • 此腳本包含 Azure 物件錨點目前正在追蹤的物件相關資訊。

預製物件

  • TrackableObjectPrefab
    • 由 AzureObjectAnchors 偵測到物件時所建立的 Prefab。 這個預製 LogicalCenter 專案的子系代表物件的中心,而且是在嘗試將子內容附加至偵測到的物件時開始的適當位置。 範例所顯示的資訊文字會附加至此邏輯中心。

下一步