設定和執行 WLT+ASA 範例

摘要

適用於 Unity (WLT) 世界鎖定工具會根據本機追蹤提供穩定的座標系統。 與 Azure Spatial Anchors (ASA) 結合時,該穩定座標系統可以在會話之間保存,並在裝置之間共用。

這段影片 可能會讓您了解執行範例時預期的情況。

此範例中的何者?

此範例提供資產和文稿以:

  1. 設定 Unity 與實體環境相關的全域座標系統。
  2. 使用 Azure Spatial Anchors 將協調系統設定發佈至 Azure。
  3. 從 Azure 擷取數據,以在稍後的會話或其他裝置上還原座標系統。

本文件的結構

  1. 安裝程式 - 如何安裝和部署範例應用程式。
  2. 關於執行應用程式的注意事項,以及建議的步驟。
  3. 支援腳本的架構描述。

安裝和測試的版本

此範例已使用下列項目來開發和測試:

  • Unity 2020.3.8f1
  • Azure Spatial Anchors (ASA) v2.9.0 - v2.10.2。
  • Mixed Reality 工具組 v2.7.2
  • Unity 世界鎖定工具 v1.4.1
  • FrozenWorldEngine v1.1.1

您可以從 WLT 版本 .unitypackage 或從 Mixed Reality Feature Tool 安裝 WLT 和此範例。 如果從 FeatureTool 安裝,您不僅必須安裝 WLT 範例相依性, (自動) ,也可以將範例匯入專案中。 如需詳細資訊 ,請參閱從 MR 功能工具安裝 WLT

將凍結世界引擎 DLL 安裝至專案

第一個步驟是安裝凍結世界引擎 DLL v1.1.1。 此處的指示,使用 NuGet for Unity 或命令行 nuget.exe。

安裝 ASA

建立空間錨點資源

快速入門指南 會逐步執行建立 Azure 帳戶和必要空間錨點資源的步驟。 執行範例時,必須有帳戶標識碼、帳戶網域和帳戶密鑰。 您會在場景的 SpacePinBinder 物件上,將它們新增至 “Spatial Anchor Manager” 腳本的適當字段。 支援其他驗證方法,但帳戶標識碼/網域/金鑰是開始使用時最簡單的方法。

認證欄位

安裝 SDK

接下來,使用 這些指示中所述的其中一種方法來安裝 Azure Spatial Anchors v2.9.0。 我使用了 MR 功能工具方法。

適用於粗略重新配置的其他設定

使用粗略重新配置時,部署至 Android 或 HoloLens2 時需要額外的設定。

什麼是粗略重新配置?

粗略重新配置是一種技術,可讓您在目前鄰近地區內搜尋先前建立的雲端錨點。 如需課程重新配置的詳細數據,請參閱 Azure Spatial Anchors 檔的課程重新配置一節

此範例示範如何透過「粗略重新配置」或透過雲端錨點標識碼明確尋找雲端錨點, (GUID) 。 如果已啟用「粗略重新配置」,則需要下列額外的設定步驟。 如果您對粗略重新配置不感興趣,您可以在SpacePinBinder物件的 “Publisher ASA” 元件中加以停用。

停用粗略重新配置

HoloLens2 的其他設定步驟

若要在 HoloLens2 上啟用 Coarse 重新配置,您必須在 ARM/WorldLockingTools/Package.appxmanifest (假設您已選取 ARM 資料夾作為建置目標) ,將許可權新增至 Package.appxmanifest 檔案。 如果這個專案是您自己的專案,請以該路徑中的 WorldLockingTools 取代適當的名稱。 將下列這一行新增至 [功能] 區段:

    <DeviceCapability Name="wiFiControl"/>

如需詳細資訊,請參閱 Github 上的這篇文章

如果您錯過此步驟,「整備」發行者「整備」永遠不會達到「就緒」狀態,您的幀速率將會非常低,而且如果產生) ,UnityPlayer.log 就會 (格式的例外狀況:

InvalidOperationException:CoarseReloc:WiFi 存取遭拒。 要求 CV:。 回應 CV:。

每次從全新建置解決方案時,您必須將該功能新增至 Package.appxmanifest。 但 Unity 的後續組建會保留功能。

在 [項目設定/XR 外掛程式管理] 中,確定 Windows Mixed Reality 是 UWP 索引卷標底下的選取 Plugin-Provider, (OpenXR 也支援搭配 ASA) 的 WLT。

XAmpleApp/CustomProfiles 中的 MRTK 配置文件 XAmple XRSDK ToolkitConfigurationProfile 適合在 HoloLens2 上執行。

Android 的其他設定步驟

若要在Android上啟用粗略重新配置,請遵循 這些指示 來設定Assets/Plugins/Android/mainTemplate.gradle 檔案。

此外,在 Assets/Plugins/Android/AndroidManifest.xml 中,必須啟用許多許可權,才能允許在 Android 上存取 Wi-Fi。 同樣地,如果將此專案的元素併入您自己的專案,您也必須遵循這些步驟,才能使用粗略重新配置。 如需在 Android 上存取 Wi-Fi 所需權限的詳細資訊,請參閱 這篇文章,以及其連結的貼文。

修改的 mainTemplate.gradle 和 AndroidManifest.xml 範例包含在 WLT-ASA 範例專案中,此專案特別針對使用 WLT 和 ASA 一起設定。 您可以在播放程式發佈設定中啟用「自定義主要指令清單」和「自定義主要 Gradle 範本」 之後 ,直接複製到您的專案中。

當您按下 [建置 & 執行] 時,如果您的組建在MRTK_Standard材質中失敗並出現著色器錯誤,只要再次嘗試 [建置 & 執行]。 第二次試試看。 MRTK 問題中有一些資訊,但只要我可以告訴所有資訊都不正確。

在 [項目設定/XR 外掛程式管理] 中,確定 [Android] 索引標籤下已選取 [ARCore] Plugin-Provider。

MRTK 設定檔 XAmple AR ToolkitConfigurationProfile 適用於在行動裝置上執行。 切換至 Android 或 iOS 之後,別忘了執行腳本 Mixed Reality/Utilities/UnityAR/Update Scripting Defines

按鈕的用途

就緒

  • 切換針腳 - 當 SpacePins 不在作用中時,其操作控點可能會隱藏。
  • 發佈 - 儲存目前的設定,以便在稍後的會話或其他裝置上擷取。
  • 載入 Oracle - 使用先前儲存的系結來還原空間設定。
  • 清除 Oracle - 刪除所有支援資源,特別是 Azure 空間錨點,並清除系結 Oracle。
  • 搜尋 - 在鄰近位置尋找所有 Azure 空間錨點,並從中還原空間設定。
  • 清除 - 在緊鄰尋找所有 Azure 空間錨點,並清除它們。
  • 重設針腳 - 復原任何空格針腳操作。 不會清除任何 Azure 空間錨點。

行動裝置上的功能表在表單上稍有不同,但按鈕位置和意義相同。

逐步解說 - 從 HoloLens2 發佈

使用SpacePins放置場景

當您啟動範例時,座標系統會根據前端追蹤器在啟動時的位置和方向。 也就是說,這是相當任意的。 要做的第一件事是將座標系統調整為所需的參考狀態。

PinTestSofa 場景中的空調長度為 2.18 公尺、高 0.78 公尺,且深度為 1.0 公尺。 因此,位於下層頂端每一端的SpacePin控點是,因此,距離地面2.18公尺和0.78公尺。 我建議測量並放置暫存標記 2.18 公尺,高度很方便。 或者,您可以調整場景以符合您的實體空間。

建置應用程式並將其部署至 HoloLens2 裝置之後,請等到浮動功能表上的狀態顯示 [就緒] (提示 - 狀態行會在準備好) 時從紅色移至白色。

尚未就緒

一次擷取每個 SpacePin 控點, (白線框球) ,並將其拖曳到相對於參考標記的位置。

將每一個標記放開到位置之後,場景應該已移位,以還原相對於SpacePin的背面。 場景中的物件不會移動,會調整整個座標空間,讓SpacePins的原始座標位於您拖曳到的實體世界中的位置。

發佈座標空間

建立您想要的空間之後,您現在可以發佈該空間,使其可在稍後的會話和其他裝置上使用。

如果使用粗略重新配置,建議您清除目前任何先前建立的雲端錨點。 按 [從搜尋清除] 按鈕,並等候該按鈕完成。

現在,在浮動功能表上,按 [發佈] 按鈕並等候它完成。

就緒

逐步解說 - 使用粗略重新配置從 HoloLens2 取用

在不同的 HoloLens2 裝置上,或在關閉上一個工作階段之後,在同一部裝置上再次啟動應用程式。 當狀態顯示為 [就緒] 時,請按 [從搜尋載入] 按鈕。 當作業完成時,Unity 全域座標系統會重新對齊您的實體環境,如同先前 (已發佈) 會話一樣。

逐步解說 - 使用 IBindingOracle (SpacePinBinderFile) 從 HoloLens2 取用

在裝置上發佈系結時,或從搜尋還原系結時,它們會記錄到IBindingOracle 中。 此範例包含最基本的 Oracle,其只是將系結寫入文字檔。

將應用程式重新啟動至新的工作階段。 如果這是與執行發行時相同的 HoloLens2,則發佈中還有一個保留的系結檔案。 如果這是不同的 HoloLens2,但在上一個會話中已成功執行搜尋,則系結檔案會從該會話離開。

按 [從檔案載入] 按鈕以載入先前錄製的系結,並還原該座標空間。

逐步解說 - 使用粗略重新配置從 Android 取用

UX 在 Android 上看起來稍有不同,但運作方式完全相同。 主要差異在於,在 ASA 準備好繼續之前,在啟動時需要更多掃描環境,相對於 HoloLens2。

當系統顯示為 [就緒] 時,您可以從右側) 按藍色按鈕 (第 3 個按鈕,以搜尋先前發佈的系結並還原座標系統。

逐步解說 - 使用 IBindingOracle 從 Android 取用 (SpacePinBinderFile)

成功完成 [從搜尋載入] 之後,裝置上已留下系結檔案。 在稍後的會話中,您可以只按 [從檔案載入] 來還原座標系統。

或者,您可以只將系結文字檔從發佈裝置複製到取用的裝置。 系結文字檔的預設位置為:

HoloLens2:用戶資料夾/LocalAppData/WLT-ASA/LocalState/BinderFile.txt

Android:內部共享記憶體/Android/data/com。WorldLockingTools.WLTASA/files/BinderFile.txt

另請參閱