設定和執行 WLT+ASA 範例
摘要
適用於 Unity (WLT) 世界鎖定工具會根據本機追蹤提供穩定的座標系統。 與 Azure Spatial Anchors (ASA) 結合時,該穩定座標系統可以在會話之間保存,並在裝置之間共用。
這段影片 可能會讓您了解執行範例時預期的情況。
此範例中的何者?
此範例提供資產和文稿以:
- 設定 Unity 與實體環境相關的全域座標系統。
- 使用 Azure Spatial Anchors 將協調系統設定發佈至 Azure。
- 從 Azure 擷取數據,以在稍後的會話或其他裝置上還原座標系統。
本文件的結構
- 安裝程式 - 如何安裝和部署範例應用程式。
- 關於執行應用程式的注意事項,以及建議的步驟。
- 支援腳本的架構描述。
安裝和測試的版本
此範例已使用下列項目來開發和測試:
- 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