練習 - 開始使用 Azure Spatial Anchors

已完成

在本單元中,您將探索下列作業的必要步驟:

  • 啟動和停止 Azure Spatial Anchors 工作階段。
  • 在單一裝置上建立、上傳和下載空間錨點。

由於完成了本學習課程模組的必要條件,您應該永遠會有一個針對 OpenXR 和 MRTK3 安裝和設定的 Unity 專案。 開啟該專案,然後檢查以確定您已選取適當的功能:

  1. 瀏覽至 [編輯 > 專案設定 > 播放程式 > 發佈設定]。
  2. 向下捲動至 [功能] 區段,如果尚未選取下列功能,請選取這些功能:
  • SpatialPerception
  • InternetClient
  • PrivateNetworkClientServer

當您完成時,請關閉 [專案設定] 視窗,並繼續執行後續步驟。

安裝內建的 Unity 套件並匯入教學課程資產

  1. 在功能表列上,選取[視窗]>[套件管理員]。

  2. 確認已安裝 AR Foundation 版本 5.0.3 或最新版本。

    Screenshot of selections for verifying the AR Foundation version for Package Manager.

匯入教學課程資產

  1. 遵循本教學課程,將 Azure Spatial Anchors SDK V2.12 或最新版本新增至您的專案。

  2. 依照此順序下載並匯入下列 Unity 自訂套件:

    注意

    當 ARFoundation 套件版本不符合匯入的 ARSubsystems 版本時,匯入 MRTK3 和 ASA 可能會導致錯誤。 在修正此問題之前,您可以手動將 com.unity.xr.arsubsystems 版本 5.0.2 作為因應措施新增至專案的套件管理員。

    您會收到 ARSubsystems 已被取代的警告,但您可以忽略它。 如果您看到任何 CS0618 警告,指出 "WorldAnchor.SetNativeSpatialAnchorPtr(IntPtr)" 已過時,您可以忽略這些警告。

準備場景

在本節中,您將藉由新增一些教學課程預製物件來準備場景。

  1. 在 [ 專案 ] 窗格中,移至 [資產>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 Screenshot of prefabs added to the Hierarchy pane.

    提示

    例如,如果您在場景中發現大型圖示 (例如,大型框架的「T」圖示) 干擾您,您可以開啟 Gizmos 下拉式清單,並關閉個別物件的圖示顯示來隱藏這些圖示。

  2. 在 [階層] 視窗中,選取 [MRTK XR Rig> 相機 Offset]。

  3. 在 [偵測器] 窗格中,使用 [新增元件] 按鈕來新增下列元件:

    • AR Anchor Manager (指令碼)
    • DisableDiagnosticsSystem (Script)

    注意

    XR Origin 元件會在您新增 AR Anchor Manager (指令碼) 元件時自動新增,因為這是 AR Anchor Manager (指令碼) 元件的必要項目。

    Screenshot of adding AR Anchor Manager.

設定按鈕以操作場景

在本節中,您將在場景中新增指令碼來建立一系列的按鈕事件,以示範本機錨點和空間錨點在應用程式中的行為基礎。

  1. 在 [ 階層] 窗格中,展開 ButtonParent 對象,然後選取第一個子物件 StartAzureSession

  2. [偵測器] 窗格中,瀏覽至 Pressable Button 元件。 它有 On Clicked 事件。

  3. [階層] 中,選取 ParentAnchor 物件,然後將其拖曳至 [偵測器],並將其放在 On Click 事件的 [無 (物件)] 欄位中。

  4. 選取 [無函式] 下拉式清單,然後選取 AnchorModuleScript>StartAzureSession。 觸發事件時,將會執行此函式。

    Screenshot that shows Unity with the StartAzureSession button's OnClick event configured.

  5. ButtonParent 子清單中的 [階層] 窗格中,選取 StopAzureSession

  6. [偵測器] 窗格中,瀏覽至 Pressable Button 元件。

  7. 在 [階層] 中,選取 ParentAnchor 對象,然後將它拖曳至 Inspector,並將其放在 [On Clicked() 事件的 None (Object)] 字段中。

  8. 選取 [無函式] 下拉式清單,然後選取 AnchorModuleScript>StopAzureSession

    Screenshot of Unity with the StopAzureSession button's OnClick event configured.

  9. ButtonParent 子清單中的 [階層] 窗格中,選取 CreateAzureAnchor

  10. [偵測器] 窗格中,瀏覽至 Pressable Button 元件。

  11. 在 [階層] 中,選取 ParentAnchor 對象,然後將它拖曳至 Inspector,並將其放在 [On Clicked() 事件的 None (Object)] 字段中。

  12. 選取 [無函式] 下拉式列表,然後選取 [AnchorModuleScript>CreateAzureAnchor]。

  13. 再次選取 ParentAnchor 物件,然後將它拖曳至 Inspector,並將其放在 AnchorModuleScript.CreateAzureAnchor 參數中。

    Screenshot of Unity with the CreateAzureAnchor button's OnClick event configured.

  14. ButtonParent 子清單中的 [階層] 窗格中,選取 RemoveLocalAnchor

  15. [偵測器] 窗格中,瀏覽至 Pressable Button 元件。

  16. 在 [階層] 中,選取 ParentAnchor 對象,然後將它拖曳至 Inspector,並將其放在 [On Clicked() 事件的 None (Object)] 字段中。

  17. 選取 [無函式] 下拉式列表,然後選取 [AnchorModuleScript>RemoveLocalAnchor]。

  18. 再次選取 ParentAnchor 物件,然後將它拖曳至 Inspector,並將其放在 AnchorModuleScript.RemoveLocalAnchor 參數中。

    Screenshot of Unity with the RemoveLocalAnchor button's OnClick event configured.

  19. ButtonParent 子清單中的 [階層] 窗格中,選取 FindAzureAnchor

  20. [偵測器] 窗格中,瀏覽至 Pressable Button 元件。

  21. 在 [階層] 中,選取 ParentAnchor 對象,然後將它拖曳至 Inspector,並將其放在 [On Clicked() 事件的 None (Object)] 字段中。

  22. 選取 [無函式] 下拉式列表,然後選取 [AnchorModuleScript>FindAzureAnchor]。

    Screenshot of Unity with the FindAzureAnchor button's OnClick event configured.

  23. ButtonParent 子清單中的 [階層] 窗格中,選取 DeleteAzureAnchor

  24. [偵測器] 窗格中,瀏覽至 Pressable Button 元件。

  25. 在 [階層] 中,選取 ParentAnchor 對象,然後將它拖曳至 Inspector,並將其放在 [On Clicked() 事件的 None (Object)] 字段中。

  26. 選取 [無函式] 下拉式列表,然後選取 [AnchorModuleScript>DeleteAzureAnchor]。

    Screenshot of Unity with the DeleteAzureAnchor button's OnClick event configured.

將場景連線至 Azure 資源

  1. 在 [階層] 窗格中,選取 ParentAnchor 物件。

  2. 在 [偵測器] 窗格中,找出 Spatial Anchor Manager (指令碼) 元件。

  3. 使用 Azure Spatial Anchors 帳戶中的認證來設定 [認證] 區段,該帳戶會在本教學課程系列的必要條件中建立:

    • 在 [Spatial Anchors 帳戶識別碼] 欄位中,貼上 Azure Spatial Anchors 帳戶中的帳戶識別碼值。
    • 在 [Spatial Anchors 帳戶金鑰] 欄位中,貼上 Azure Spatial Anchors 帳戶中的主要或次要存取金鑰值。
    • 在 [Spatial Anchors 帳戶網域] 欄位中,貼上 Azure Spatial Anchors 帳戶中的帳戶網域值。

    Screenshot of Unity with the Spatial Anchor Manager configured.

嘗試 Azure Spatial Anchors 的基本行為

Azure Spatial Anchors 無法在 Unity 中執行。 若要測試 Azure Spatial Anchors 功能,您必須在裝置中建置專案並部署應用程式。

提示

如需有關如何建置 Unity 專案並將其部署至 HoloLens 2 的提醒,請參閱從 [選擇性] 建置和部署應用程式一節開始,將您的應用程式建置至 HoloLens 2 一文。

當應用程式在您的裝置上執行時,請遵循 Azure Spatial Anchor 教學課程指示面板上顯示的螢幕指示:

  1. 將 Cube 移至不同的位置。
  2. 啟動 Azure 工作階段。
  3. 在 Cube 的位置上建立 Azure 錨點。
  4. 停止 Azure 工作階段。
  5. 移除本機錨點,讓使用者可以移動 Cube。
  6. 將 Cube 移至其他地方。
  7. 啟動 Azure 工作階段。
  8. 尋找 Azure 錨點,將 Cube 定位於步驟 3 中的位置上。
  9. 刪除 Azure 錨點。
  10. 停止 Azure 工作階段。

警告

Azure Spatial Anchors 使用網際網路來儲存和載入錨點資料。 確定您的裝置已連線到網際網路。