练习 - 适用于 HoloLens 2 的 Azure 云服务

已完成

在每个连续的章节中,都将添加新的 Azure 云服务,以扩展应用程序功能和用户体验,同时还将介绍每种 Azure 云服务的基础知识。

注意

本模块系列将重点介绍“HoloLens 2”,但由于 Unity 的跨平台特性,大多数学习内容也适用于桌面和移动应用程序。

应用程序目标

在本模块系列中,你将生成一个 HoloLens 2 应用程序,它可检测图像中的对象并查找其空间位置。 我们将这些对象称为跟踪对象。

用户可以创建一个跟踪对象,以便通过计算机视觉或空间位置或两者共同来关联一组图像。 所有数据都必须保存到云中。

功能

  • 数据和图像的基本管理
  • 图像训练和检测
  • 存储空间位置及其指南

Azure 云服务

你将使用以下 Azure 云服务来实现上述功能:

Azure 存储

你将使用 Azure 存储来保存数据。 通过 Azure 存储,你可以将数据存储在表中,并上传大型二进制文件(例如图像)。

Azure 自定义视觉

通过 Azure 自定义视觉Azure AI 服务的一部分),可以将一组图像关联到跟踪对象、在创建的图像集上训练机器学习模型,以及检测跟踪对象。

Azure 空间定位点

若要存储跟踪对象位置,并提供查找该位置的指导说明,请使用 Azure 空间定位点

创建和准备 Unity 项目

在本部分,你将创建一个新的 Unity 项目,并为 MRTK 开发做好准备。

首先,按照 HoloLens 2 学习路径中的步骤操作,不包括在设备上构建应用程序的说明,这涉及以下步骤:

  1. 创建 Unity 项目并为其提供一个合适的名称,例如 Azure 云教程
  2. 切换生成平台
  3. 导入 TextMeshPro 基本资源
  4. 导入混合现实工具包
  5. 配置 Unity 项目
  6. 创建并设置场景,并为场景提供一个合适的名称,例如 AzureCloudServices

导入教程资产

  1. AzurespatialAnchors SDK 添加到项目。 若要添加包,请按照此教程操作

  2. 按照列出的顺序下载并导入以下 Unity 自定义包

    导入教程资产后,项目窗口应如下所示:

    Screenshot of Unity Hierarchy, Scene, and Project windows after importing the tutorial assets.

准备场景

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

  1. 在“项目”窗口中,导航到“资产”>“MRTK.Tutorials.AzureCloudServices”>“预制件”>“管理器”文件夹 。 按住 CTRL 按钮的同时,选择“SceneController”、“RootMenu”和“DataManager”以选择这三个预制件:

    Screenshot of Unity with SceneController, RootMenu, and DataManager prefabs selected.

    SceneController (预制件)包含两个脚本:SceneController (脚本)和 UnityDispatcher (脚本) 。 SceneController 脚本组件包含多个 UX 函数,让照片捕捉功能的使用更为便利,而 UnityDispatcher 是允许在 Unity 主线程上执行操作的帮助器类。

    RootMenu(预制件)是主 UI 预制件,它保存所有通过各种小脚本组件相互连接的 UI 窗口,并控制应用程序的常规 UX 流。

    DataManager(预制件)负责与 Azure 存储通信,下一教程将进一步介绍此内容。

  2. 现在,仍选中这三个预制件,将它们拖到“层次结构”窗口中,以将其添加到场景中:

    Screenshot of Unity with newly added SceneController, RootMenu and DataManager prefabs still selected.

  3. 若要重点关注场景中的对象,可以双击 RootMenu 对象,然后再略微缩小。 在 RootMenu 仍处于选定状态的情况下,将其 Transform 组件中的值更改为以下值:

    位置:X = 0.0, Y = 1.6, Z = 0.6

    Screenshot of Unity with RootMenu object selected.

    提示

    如果觉得场景中的大图标会分散注意力(例如大框“T”图标),则可以通过将 Gizmos 切换到“关闭”位置来隐藏它们。

配置场景

在本部分中,你要将 SceneManager、DataManager 和 RootMenu 连接在一起,以获得下一个集成 Azure 存储教程的工作场景。

连接对象

  1. 在“层次结构”窗口中,选择“DataManager”对象:

    Screenshot of Unity with DataManager object selected.

  2. 在“检查器”窗口中,找到“DataManager (脚本)”组件。 在这里,你将看到 On Data Manager Ready () 事件上有一个空槽。 将“SceneController”对象从“层次结构”窗口拖到“On Data Manager Ready ()”事件。

    Screenshot of Unity with DataManager event listener added.

  3. 事件的下拉菜单现在处于活动状态。 选择该下拉菜单,导航到“SceneController”,然后在子菜单中选择“Init ()”选项

    Screenshot of Unity with DataManager event action added.

  4. 从“层次结构”窗口中,选择“SceneController”对象。 你将在检查器中找到“SceneController (脚本)”组件

    Screenshot of Unity with SceneController selected.

  5. 现有多个未填充字段;我们来更改它吧。 将“DataManager”对象从“层次结构”移动到“数据管理器”字段,然后将“RootMenu”>“MainMenu”GameObject 从“层次结构”移到“主菜单”字段。

    Screenshot of Unity with SceneController configured.

  6. 在“层次结构”窗口中,选择 MRTK XR Rig 对象。 确保已启用“MRTK 语音”子对象。 这样,就可以通过说“打开菜单”来打开菜单。

  7. 现在,你的场景已经准备就绪,可用于下一个教程。 请勿忘记将其保存到项目。

准备项目生成管道

注意

在 HoloLens 2 上生成和测试不是强制性的。 如果你没有 HoloLens 设备,还可以在 HoloLens 2 仿真器上进行测试。 你可以在 HoloLens.com 购买设备。

在完成场景之前,为 HoloLens 2 准备要生成的项目

1. 添加其他所需功能

  1. 在 Unity 菜单中选择“编辑”>“项目设置...”,打开“项目设置”窗口

    Screenshot of Unity open Project Settings.

  2. 在“项目设置”窗口中,依次选择“播放器”和“发布设置”

    Screenshot of Unity Publishing Settings.

  3. 在“发布设置”中,向下滚动到“功能”部分,并仔细检查 InternetClient、麦克风和 SpatialPerception 功能(在本教程开始创建项目时启用)是否仍处于启用状态。 然后启用“InternetClientServer”、“PrivateNetworkClientServer”和“Webcam”功能 :

    Screenshot of Unity Capabilities

2.将应用部署到 HoloLens 2

你将无法在 Unity 编辑器中运行将在本系列教程中使用的所有功能。 因此,你需要熟悉如何将应用程序部署到 HoloLens 2 设备或仿真器。

提示

如需回顾如何生成 Unity 项目并将其部署到 HoloLens 2,请参阅入门教程 - 生成和部署应用程序说明。

3.在 HoloLens 2 上运行该应用,并按照应用中的说明进行操作

注意

所有 Azure 服务都使用 Internet,因此请确保你的设备已连接到 Internet。

当应用程序在设备上运行时,请授予以下请求功能的访问权限:

  • 麦克风
  • 照相机

自定义视觉等服务需要上述功能才能正常运行。