快速入門:深入 MRTK 逐步解說
本指南提供 Azure 物件錨點 MRTK Unity 範例應用程式的深入涵蓋範圍。 其旨在提供範例設計的深入解析。 藉由閱讀本指南,開發人員可以加速瞭解範例中重要的 Azure 物件錨點概念。
專案版面配置
為 Azure 物件錨點 MRTK Unity 範例建立的資產會儲存在 中 Assets\MixedReality.AzureObjectAnchors
。 子資料夾如下所示:
- 圖示
- 包含使用者面向功能表中所使用的一些自訂圖示。
- 材質
- 包含表面重建視覺效果的著色器和 材質,以及僅 深度著色器,它會寫入深度緩衝區,以協助在文字周圍使用全像投影防震。
- 預製物件
- 包含可重複使用的 Unity
GameObjects
。 特別是,TrackableObjectPrefab
表示當 Azure Object Anchors 偵測到物件時所建立的物件。
- 包含可重複使用的 Unity
- 設定檔
- 包含自訂的 MRTK 設定檔,描述從 MRTK 啟用應用程式所需的最少功能。
- 場景
- 包含
AOASampleTestScene
,這是範例中的主要場景。
- 包含
- 指令碼
- 包含針對範例所撰寫的腳本。
Unity 場景
Mixed Reality播放空間– 大部分已重複使用 MRTK
- 介紹適用于 Unity 的 MRTK。
- 有一個附加至相機的 UI,可詳細說明 Azure 物件錨點的整體狀態, (請參閱
OverlayDebugText.cs
) 。
物件Mixed Reality播放空間– 大部分與 Azure 物件錨點相關,但有一些 MRTK 控制項。 附加至父系的兩個腳本 TrackableObjectSearch
和 ObjectTracker
,代表具有 Azure 物件錨點的主要介面。
- 功能表
- 主要是 MRTK 程式碼,但 UI 互動會導向 Azure 物件錨點功能。
- 附加
TrackableObjectMenu
腳本會執行將 MRTK UI 事件路由至適當 Azure 物件錨點呼叫的主要作業。 - MRTK 手部功能表。
- WorkspaceBoundingBox
- 包含與控制周框方塊相關聯的 MRTK 腳本。
- 也包含
ModelVis
子物件,此物件用於在偵測發生之前視覺化 Azure 物件錨點模型,以協助在棘手的偵測期間進行對齊。
功能表逐步解說
在深入瞭解腳本之前,讓我們先流覽功能表項目。 如此一來,我們可以參考這些功能表項目如何與腳本互動。
底部和右子功能表不會自動顯示,而是分別使用 Search Area Settings
和 Tracker 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
。
- 此腳本會管理 用來指出 Azure 物件錨點應搜尋物件的位置的 狀態
- 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
。
- 大部分的使用者互動會從 UI 流向此腳本,然後流向適當的腳本。 例如,
- TrackableObjectSearch.cs
- 此腳本會針對搜尋區域進行一些輕量管理。 特別是,使用者點選空間的互動,搜尋方塊會放在使用者前面。 它也會讓搜尋方塊內部不會在搜尋時呈現,或在偵測到物件時呈現,以防止完整轉譯遮蔽物件。
- TrackedObject.cs
- 上
TrackableObjectPrefab
的主要腳本。 它會維護 Azure Object Anchors 偵測到之物件的視覺效果狀態。
- 上
- TrackedObjectData.cs
- 此腳本包含 Azure 物件錨點目前正在追蹤的物件相關資訊。
預製物件
- TrackableObjectPrefab
- 由 AzureObjectAnchors 偵測到物件時所建立的 Prefab。 這個預製
LogicalCenter
專案的子系代表物件的中心,而且是在嘗試將子內容附加至偵測到的物件時開始的適當位置。 範例所顯示的資訊文字會附加至此邏輯中心。
- 由 AzureObjectAnchors 偵測到物件時所建立的 Prefab。 這個預製