共用方式為


設定和執行 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。
  • 混合實境工具組 v2.7.2
  • 適用於 Unity 的世界鎖定工具 v1.4.1
  • FrozenWorldEngine v1.1.1

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

將 Frozen World Engine DLL 安裝至專案

第一個步驟是安裝 Frozen World Engine 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) 尋找雲端錨點。 如果已啟用粗略重新配置,則需要下列額外的設定步驟。 如果您對 Coarse 重新配置不感興趣,您可以在 SpacePinBinder 物件的 “Publisher ASA” 元件中停用它。

停用粗略的重新配置

HoloLens2 的其他設定步驟

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

    <DeviceCapability Name="wiFiControl"/>

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

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

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

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

在 Project 設定/XR 外掛程式管理中,確定 Windows Mixed Reality 是 UWP 索引卷標底下選取的外掛程式提供者(使用 ASA 的 WLT 也支援 OpenXR)。

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 外掛程式管理] 中,確定 ARCore 是 [Android] 索引標籤下選取的 [外掛程式提供者]。

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 從 HoloLens2 取用 (SpacePinBinderFile)

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

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

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

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

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

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

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

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

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

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

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

另請參閱