练习 - Azure 空间定位点入门

已完成

本单元将探讨以下操作所需的步骤:

  • 启动和停止 Azure 空间定位点会话。
  • 在单个设备上创建、上传和下载空间定位点。

满足此学习模块的先决条件后,你应该已拥有一个针对 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 空间定位点 SDK V2.12 或最新版本添加到项目。

  2. 按照此顺序下载并导入以下 Unity 自定义包:

    注意

    当 ARFoundation 包版本与导入的 ARSubsystems 版本不匹配时,导入 MRTK3 和 ASA 可能会导致错误。 在此问题得到修复之前,作为解决方法,你可以手动地将 com.unity.xr.arsubsystems 5.0.2 版本添加到项目的包管理器。

    你将收到一条警告,其中指出 ARSubsystems 已被弃用,但你可以忽略该警告。 如果看到任何显示“WorldAnchor.SetNativeSpatialAnchorPtr(IntPtr)”已过时的 CS0618 警告,可以忽略这些警告。

准备场景

在本部分,你将添加一些教程预制件来准备场景。

  1. 在“项目”窗格中,转到 MRTK“资产”>“MRTK.Tutorials.AzureSpatialAnchors”>“Prefabs”文件夹,然后将以下 prefabs 拖动到 “层次结构”窗格中,将其添加到场景中:

    • ButtonParent 预制件
    • Instructions 预制件
    • ParentAnchor 预制件
    • 按如下所示更改 ButtonParent 的 Tranform/Position 值:X = 0.0,Y = 1.6,Z = 0.6
    • 按如下所示更改 Instructions 的 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”>“相机偏移量”。

  3. 在“检查器”窗格中,使用“添加组件”按钮添加以下组件:

    • AR 定位点管理器(脚本)
    • DisableDiagnosticsSystem (脚本)

    注意

    添加“AR 定位点管理器(脚本)”组件时,会自动添加“XR 原点”组件,因为它是“AR 定位点管理器(脚本)”组件所必需的。

    Screenshot of adding AR Anchor Manager.

配置按钮来操作场景

在本部分,你将向场景添加脚本来创建一系列按钮事件,这些事件会展示本地定位点和空间定位点在应用中的行为方式。

  1. 在“层次结构”窗格中,展开“ButtonParent”对象,然后选择第一个子对象“StartAzureSession”。

  2. 在“检查器”窗格中,导航到“可按按钮”组件。 它具有 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. 在“检查器”窗格中,导航到“可按按钮”组件。

  7. 在“层次结构”中,选择“ParentAnchor”对象,然后将其拖到“检查器”并将其放入“On Click ()”事件的“无(对象)”字段。

  8. 选择“非功能”下拉菜单,然后选择“AnchorModuleScript”>“StopAzureSession ()”。

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

  9. 在“ButtonParent”子列表的“层次结构”窗格中,选择“CreateAzureAnchor”。

  10. 在“检查器”窗格中,导航到“可按按钮”组件。

  11. 在“层次结构”中,选择“ParentAnchor”对象,然后将其拖到“检查器”并将其放入“On Click ()”事件的“无(对象)”字段。

  12. 选择“非功能”下拉菜单,然后选择“AnchorModuleScript”>“CreateAzureAnchor”。

  13. 再次选择 ParentAnchor 对象,然后将其拖动到“检查器”,再将其拖放到 AnchorModuleScript.CreateAzureAnchor 的参数中。

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

  14. 在“ButtonParent”子列表的“层次结构”窗格中,选择“RemoveLocalAnchor”。

  15. 在“检查器”窗格中,导航到“可按按钮”组件。

  16. 在“层次结构”中,选择“ParentAnchor”对象,然后将其拖到“检查器”并将其放入“On Click ()”事件的“无(对象)”字段。

  17. 选择“非功能”下拉菜单,然后选择 “AnchorModuleScript”>“RemoveLocalAnchor”。

  18. 再次选择 ParentAnchor 对象,然后将其拖动到“检查器”,再将其拖放到 AnchorModuleScript.RemoveLocalAnchor 的参数中。

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

  19. 在“ButtonParent”子列表的“层次结构”窗格中,选择“FindAzureAnchor”。

  20. 在“检查器”窗格中,导航到“可按按钮”组件。

  21. 在“层次结构”中,选择“ParentAnchor”对象,然后将其拖到“检查器”并将其放入“On Click ()”事件的“无(对象)”字段。

  22. 选择“非功能”下拉菜单,然后选择“AnchorModuleScript”>“FindAzureAnchor”。

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

  23. 在“ButtonParent”子列表的“层次结构”窗格中,选择“DeleteAzureAnchor”。

  24. 在“检查器”窗格中,导航到“可按按钮”组件。

  25. 在“层次结构”中,选择“ParentAnchor”对象,然后将其拖到“检查器”并将其放入“On Click ()”事件的“无(对象)”字段。

  26. 选择“非功能”下拉菜单,然后选择“AnchorModuleScript”>“DeleteAzureAnchor”。

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

将场景连接到 Azure 资源

  1. 在“层次结构”窗格中,选择“ParentAnchor”对象。

  2. 在“检查器”窗格中,找到“空间定位点管理器(脚本)”组件。

  3. 配置“凭据”部分,其中包含作为本系列教程的先决条件的一部分创建的 Azure 空间定位点帐户中的凭据:

    • 在“空间定位点帐户 ID”字段中,粘贴 Azure 空间定位点帐户中的帐户 ID 值。
    • 在“空间定位点帐户密钥”字段中,粘贴 Azure 空间定位点帐户中的主访问密钥或辅助访问密钥。
    • 在“空间定位点帐户域”字段中,粘贴 Azure 空间定位点帐户中的帐户域值。

    Screenshot of Unity with the Spatial Anchor Manager configured.

尝试 Azure 空间定位点的基本行为

Azure 空间定位点不能在 Unity 中运行。 若要测试 Azure 空间定位点功能,需要生成项目并将应用部署到设备。

提示

有关如何生成 Unity 项目并将其部署到 HoloLens 2 的提示,请参阅将应用程序生成到 HoloLens 2 一文(从“(可选)生成和部署应用程序”这部分开始)。

当应用在设备上运行时,请按照“Azure 空间定位点教程说明”面板上显示的屏幕说明进行操作:

  1. 将多维数据集移动至其他位置。
  2. 启动 Azure 会话。
  3. 在多维数据集的位置创建 Azure 定位点。
  4. 停止 Azure 会话。
  5. 删除本地定位点以允许用户移动多维数据集。
  6. 将多维数据集移动到其他位置。
  7. 启动 Azure 会话。
  8. 找到 Azure 定位点以将多维数据集定位在步骤 3 中的位置。
  9. 删除 Azure 定位点。
  10. 停止 Azure 会话。

注意

Azure 空间定位点使用 Internet 来保存和加载定位点数据。 确保设备已连接到 Internet。