练习 - Azure 空间定位点入门
本单元将探讨以下操作所需的步骤:
- 启动和停止 Azure 空间定位点会话。
- 在单个设备上创建、上传和下载空间定位点。
满足此学习模块的先决条件后,你应该已拥有一个针对 OpenXR 和 MRTK3 设置和配置的 Unity 项目。 打开该项目,然后进行检查,以确保选择了适当的功能:
- 导航至“编辑”>“项目设置”>“播放器”>“发布设置”。
- 向下滚动到“功能”部分并选择以下选项(如果尚未选择):
- SpatialPerception
- InternetClient
- PrivateNetworkClientServer
完成后,关闭“项目设置”窗口并继续执行后续步骤。
安装内置的 Unity 包并导入教程资产
在菜单栏上,选择“窗口”>“包管理器”。
验证是否已安装 AR Foundation 5.0.3 或最新版本。
导入教程资产
按照本教程所述,将 Azure 空间定位点 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 已被弃用,但你可以忽略该警告。 如果看到任何显示“WorldAnchor.SetNativeSpatialAnchorPtr(IntPtr)”已过时的 CS0618 警告,可以忽略这些警告。
准备场景
在本部分,你将添加一些教程预制件来准备场景。
在“项目”窗格中,转到 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
提示
如果感觉场景中的大图标会分散注意力(例如带框的大“T”图标),可以通过打开 Gizmos 下拉菜单并关闭单个对象的图标显示来隐藏它们。
在“层次结构”窗口中,选择“MRTK XR Rig”>“相机偏移量”。
在“检查器”窗格中,使用“添加组件”按钮添加以下组件:
- AR 定位点管理器(脚本)
- DisableDiagnosticsSystem (脚本)
注意
添加“AR 定位点管理器(脚本)”组件时,会自动添加“XR 原点”组件,因为它是“AR 定位点管理器(脚本)”组件所必需的。
配置按钮来操作场景
在本部分,你将向场景添加脚本来创建一系列按钮事件,这些事件会展示本地定位点和空间定位点在应用中的行为方式。
在“层次结构”窗格中,展开“ButtonParent”对象,然后选择第一个子对象“StartAzureSession”。
在“检查器”窗格中,导航到“可按按钮”组件。 它具有 On Clicked () 事件。
在“层次结构”中,选择“ParentAnchor”对象,然后将其拖到“检查器”并将其放入“On Click ()”事件的“无(对象)”字段。
选择“非功能”下拉菜单,然后选择“AnchorModuleScript”>“StartAzureSession ()”。 该函数将在事件触发时执行。
在“ButtonParent”子列表的“层次结构”窗格中,选择 StopAzureSession
在“检查器”窗格中,导航到“可按按钮”组件。
在“层次结构”中,选择“ParentAnchor”对象,然后将其拖到“检查器”并将其放入“On Click ()”事件的“无(对象)”字段。
选择“非功能”下拉菜单,然后选择“AnchorModuleScript”>“StopAzureSession ()”。
在“ButtonParent”子列表的“层次结构”窗格中,选择“CreateAzureAnchor”。
在“检查器”窗格中,导航到“可按按钮”组件。
在“层次结构”中,选择“ParentAnchor”对象,然后将其拖到“检查器”并将其放入“On Click ()”事件的“无(对象)”字段。
选择“非功能”下拉菜单,然后选择“AnchorModuleScript”>“CreateAzureAnchor”。
再次选择 ParentAnchor 对象,然后将其拖动到“检查器”,再将其拖放到 AnchorModuleScript.CreateAzureAnchor 的参数中。
在“ButtonParent”子列表的“层次结构”窗格中,选择“RemoveLocalAnchor”。
在“检查器”窗格中,导航到“可按按钮”组件。
在“层次结构”中,选择“ParentAnchor”对象,然后将其拖到“检查器”并将其放入“On Click ()”事件的“无(对象)”字段。
选择“非功能”下拉菜单,然后选择 “AnchorModuleScript”>“RemoveLocalAnchor”。
再次选择 ParentAnchor 对象,然后将其拖动到“检查器”,再将其拖放到 AnchorModuleScript.RemoveLocalAnchor 的参数中。
在“ButtonParent”子列表的“层次结构”窗格中,选择“FindAzureAnchor”。
在“检查器”窗格中,导航到“可按按钮”组件。
在“层次结构”中,选择“ParentAnchor”对象,然后将其拖到“检查器”并将其放入“On Click ()”事件的“无(对象)”字段。
选择“非功能”下拉菜单,然后选择“AnchorModuleScript”>“FindAzureAnchor”。
在“ButtonParent”子列表的“层次结构”窗格中,选择“DeleteAzureAnchor”。
在“检查器”窗格中,导航到“可按按钮”组件。
在“层次结构”中,选择“ParentAnchor”对象,然后将其拖到“检查器”并将其放入“On Click ()”事件的“无(对象)”字段。
选择“非功能”下拉菜单,然后选择“AnchorModuleScript”>“DeleteAzureAnchor”。
将场景连接到 Azure 资源
在“层次结构”窗格中,选择“ParentAnchor”对象。
在“检查器”窗格中,找到“空间定位点管理器(脚本)”组件。
配置“凭据”部分,其中包含作为本系列教程的先决条件的一部分创建的 Azure 空间定位点帐户中的凭据:
- 在“空间定位点帐户 ID”字段中,粘贴 Azure 空间定位点帐户中的帐户 ID 值。
- 在“空间定位点帐户密钥”字段中,粘贴 Azure 空间定位点帐户中的主访问密钥或辅助访问密钥。
- 在“空间定位点帐户域”字段中,粘贴 Azure 空间定位点帐户中的帐户域值。
尝试 Azure 空间定位点的基本行为
Azure 空间定位点不能在 Unity 中运行。 若要测试 Azure 空间定位点功能,需要生成项目并将应用部署到设备。
提示
有关如何生成 Unity 项目并将其部署到 HoloLens 2 的提示,请参阅将应用程序生成到 HoloLens 2 一文(从“(可选)生成和部署应用程序”这部分开始)。
当应用在设备上运行时,请按照“Azure 空间定位点教程说明”面板上显示的屏幕说明进行操作:
- 将多维数据集移动至其他位置。
- 启动 Azure 会话。
- 在多维数据集的位置创建 Azure 定位点。
- 停止 Azure 会话。
- 删除本地定位点以允许用户移动多维数据集。
- 将多维数据集移动到其他位置。
- 启动 Azure 会话。
- 找到 Azure 定位点以将多维数据集定位在步骤 3 中的位置。
- 删除 Azure 定位点。
- 停止 Azure 会话。
注意
Azure 空间定位点使用 Internet 来保存和加载定位点数据。 确保设备已连接到 Internet。