練習 - 開始使用 Azure Spatial Anchors
在本單元中,您將探索下列作業的必要步驟:
- 啟動和停止 Azure Spatial Anchors 工作階段。
- 在單一裝置上建立、上傳和下載空間錨點。
由於完成了本學習課程模組的必要條件,您應該永遠會有一個針對 OpenXR 和 MRTK3 安裝和設定的 Unity 專案。 開啟該專案,然後檢查以確定您已選取適當的功能:
- 瀏覽至 [編輯 > 專案設定 > 播放程式 > 發佈設定]。
- 向下捲動至 [功能] 區段,如果尚未選取下列功能,請選取這些功能:
- SpatialPerception
- InternetClient
- PrivateNetworkClientServer
當您完成時,請關閉 [專案設定] 視窗,並繼續執行後續步驟。
安裝內建的 Unity 套件並匯入教學課程資產
在功能表列上,選取[視窗]>[套件管理員]。
確認已安裝 AR Foundation 版本 5.0.3 或最新版本。
匯入教學課程資產
遵循本教學課程,將 Azure Spatial Anchors SDK V2.12 或最新版本新增至您的專案。
依照此順序下載並匯入下列 Unity 自訂套件:
- MRTK.HoloLens2.Unity.Tutorials.Assets.GettingStarted.3.0.0.unitypackage
- MRTK.HoloLens2.Unity.Tutorials.Assets.AzureSpatialAnchors.3.0.0.unitypackage
注意
當 ARFoundation 套件版本不符合匯入的 ARSubsystems 版本時,匯入 MRTK3 和 ASA 可能會導致錯誤。 在修正此問題之前,您可以手動將 com.unity.xr.arsubsystems 版本 5.0.2 作為因應措施新增至專案的套件管理員。
您會收到 ARSubsystems 已被取代的警告,但您可以忽略它。 如果您看到任何 CS0618 警告,指出 "WorldAnchor.SetNativeSpatialAnchorPtr(IntPtr)" 已過時,您可以忽略這些警告。
準備場景
在本節中,您將藉由新增一些教學課程預製物件來準備場景。
在 [ 專案 ] 窗格中,移至 [資產>MRTK]。Tutorials.AzureSpatialAnchors>Prefabs 資料夾,然後將下列預製專案拖曳至 [階層 ] 窗格,以將它們新增至您的場景:
- ButtonParent 預製物件
- Instructions 預製物件
- ParentAnchor 預製物件
- 將 ButtonParent 的 Tranform/Position 值變更為下列:X = 0.0、Y = 1.6、Z = 0.6
- 將指令 Tranform/Position 的值變更為下列:X = -0.8、Y = 2.0、Z = 2.0
- 將 ParentAnchor 的 Tranform/Position 的值變更為下列:X = -0.3、Y = 1.5、Z = 0.6
提示
例如,如果您在場景中發現大型圖示 (例如,大型框架的「T」圖示) 干擾您,您可以開啟 Gizmos 下拉式清單,並關閉個別物件的圖示顯示來隱藏這些圖示。
在 [階層] 視窗中,選取 [MRTK XR Rig> 相機 Offset]。
在 [偵測器] 窗格中,使用 [新增元件] 按鈕來新增下列元件:
- AR Anchor Manager (指令碼)
- DisableDiagnosticsSystem (Script)
注意
XR Origin 元件會在您新增 AR Anchor Manager (指令碼) 元件時自動新增,因為這是 AR Anchor Manager (指令碼) 元件的必要項目。
設定按鈕以操作場景
在本節中,您將在場景中新增指令碼來建立一系列的按鈕事件,以示範本機錨點和空間錨點在應用程式中的行為基礎。
在 [ 階層] 窗格中,展開 ButtonParent 對象,然後選取第一個子物件 StartAzureSession。
在 [偵測器] 窗格中,瀏覽至 Pressable Button 元件。 它有 On Clicked 事件。
在 [階層] 中,選取 ParentAnchor 物件,然後將其拖曳至 [偵測器],並將其放在 On Click 事件的 [無 (物件)] 欄位中。
選取 [無函式] 下拉式清單,然後選取 AnchorModuleScript>StartAzureSession。 觸發事件時,將會執行此函式。
在 ButtonParent 子清單中的 [階層] 窗格中,選取 StopAzureSession
在 [偵測器] 窗格中,瀏覽至 Pressable Button 元件。
在 [階層] 中,選取 ParentAnchor 對象,然後將它拖曳至 Inspector,並將其放在 [On Clicked() 事件的 None (Object)] 字段中。
選取 [無函式] 下拉式清單,然後選取 AnchorModuleScript>StopAzureSession。
在 ButtonParent 子清單中的 [階層] 窗格中,選取 CreateAzureAnchor。
在 [偵測器] 窗格中,瀏覽至 Pressable Button 元件。
在 [階層] 中,選取 ParentAnchor 對象,然後將它拖曳至 Inspector,並將其放在 [On Clicked() 事件的 None (Object)] 字段中。
選取 [無函式] 下拉式列表,然後選取 [AnchorModuleScript>CreateAzureAnchor]。
再次選取 ParentAnchor 物件,然後將它拖曳至 Inspector,並將其放在 AnchorModuleScript.CreateAzureAnchor 參數中。
在 ButtonParent 子清單中的 [階層] 窗格中,選取 RemoveLocalAnchor。
在 [偵測器] 窗格中,瀏覽至 Pressable Button 元件。
在 [階層] 中,選取 ParentAnchor 對象,然後將它拖曳至 Inspector,並將其放在 [On Clicked() 事件的 None (Object)] 字段中。
選取 [無函式] 下拉式列表,然後選取 [AnchorModuleScript>RemoveLocalAnchor]。
再次選取 ParentAnchor 物件,然後將它拖曳至 Inspector,並將其放在 AnchorModuleScript.RemoveLocalAnchor 參數中。
在 ButtonParent 子清單中的 [階層] 窗格中,選取 FindAzureAnchor。
在 [偵測器] 窗格中,瀏覽至 Pressable Button 元件。
在 [階層] 中,選取 ParentAnchor 對象,然後將它拖曳至 Inspector,並將其放在 [On Clicked() 事件的 None (Object)] 字段中。
選取 [無函式] 下拉式列表,然後選取 [AnchorModuleScript>FindAzureAnchor]。
在 ButtonParent 子清單中的 [階層] 窗格中,選取 DeleteAzureAnchor。
在 [偵測器] 窗格中,瀏覽至 Pressable Button 元件。
在 [階層] 中,選取 ParentAnchor 對象,然後將它拖曳至 Inspector,並將其放在 [On Clicked() 事件的 None (Object)] 字段中。
選取 [無函式] 下拉式列表,然後選取 [AnchorModuleScript>DeleteAzureAnchor]。
將場景連線至 Azure 資源
在 [階層] 窗格中,選取 ParentAnchor 物件。
在 [偵測器] 窗格中,找出 Spatial Anchor Manager (指令碼) 元件。
使用 Azure Spatial Anchors 帳戶中的認證來設定 [認證] 區段,該帳戶會在本教學課程系列的必要條件中建立:
- 在 [Spatial Anchors 帳戶識別碼] 欄位中,貼上 Azure Spatial Anchors 帳戶中的帳戶識別碼值。
- 在 [Spatial Anchors 帳戶金鑰] 欄位中,貼上 Azure Spatial Anchors 帳戶中的主要或次要存取金鑰值。
- 在 [Spatial Anchors 帳戶網域] 欄位中,貼上 Azure Spatial Anchors 帳戶中的帳戶網域值。
嘗試 Azure Spatial Anchors 的基本行為
Azure Spatial Anchors 無法在 Unity 中執行。 若要測試 Azure Spatial Anchors 功能,您必須在裝置中建置專案並部署應用程式。
提示
如需有關如何建置 Unity 專案並將其部署至 HoloLens 2 的提醒,請參閱從 [選擇性] 建置和部署應用程式一節開始,將您的應用程式建置至 HoloLens 2 一文。
當應用程式在您的裝置上執行時,請遵循 Azure Spatial Anchor 教學課程指示面板上顯示的螢幕指示:
- 將 Cube 移至不同的位置。
- 啟動 Azure 工作階段。
- 在 Cube 的位置上建立 Azure 錨點。
- 停止 Azure 工作階段。
- 移除本機錨點,讓使用者可以移動 Cube。
- 將 Cube 移至其他地方。
- 啟動 Azure 工作階段。
- 尋找 Azure 錨點,將 Cube 定位於步驟 3 中的位置上。
- 刪除 Azure 錨點。
- 停止 Azure 工作階段。
警告
Azure Spatial Anchors 使用網際網路來儲存和載入錨點資料。 確定您的裝置已連線到網際網路。