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

已完成

在每个连续章节中,你将添加新的 Azure 云服务来扩展应用程序功能和用户体验,同时指导你了解每个 Azure 云服务的基础知识。

注释

本模块系列将重点介绍 HoloLens 2,但由于 Unity 的跨平台性质,大部分课程也适用于桌面和移动应用程序。

应用程序目标

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

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

特点

  • 基本管理数据和映像
  • 图像训练和检测
  • 存储空间位置和相关指南

Azure 云服务

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

Azure 存储

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

Azure 自定义视觉

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

创建并准备 Unity 项目

在本部分中,你将创建新的 Unity 项目,并准备好进行 MRTK 开发。

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

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

导入教程资产

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

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

    导入教程资产后 Unity 层次结构、场景和项目窗口的屏幕截图。

准备场景

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

  1. 在“项目”窗口中,导航到 资源>MRTK.Tutorials.AzureCloudServices>Prefabs>Manager 文件夹。 按住 Ctrl 按钮时,选择 SceneControllerRootMenuDataManager 以选择三个预制件:

    Unity 的屏幕截图,其中选择了 SceneController、RootMenu 和 DataManager prefabs。

    SceneController (prefab) 包含两个脚本:SceneController(脚本)UnityDispatcher (脚本)。 SceneController 脚本组件包含多个 UX 函数并有助于照片捕获功能,而 UnityDispatcher 是一个帮助程序类,用于允许在 Unity 主线程上执行作。

    RootMenu(prefab)是主要的 UI 预制体,它通过各种小脚本组件连接所有 UI 窗口,并控制应用程序的一般用户体验流程。

    DataManager (prefab) 负责与 Azure 存储通信,并将在下一教程中进一步介绍。

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

    Unity 的屏幕截图,其中新添加的 SceneController、RootMenu 和 DataManager prefabs 仍处于选中状态。

  3. 若要将焦点放在场景中的对象上,可以双击 RootMenu 对象,然后稍微缩小一下。 选择 RootMenu 对象后,将其 转换 组件中的值更改为以下内容:

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

    选中了 RootMenu 对象的 Unity 屏幕截图。

    小窍门

    如果您发现场景中的显眼图标(例如,带框的 “T” 图标)干扰了注意力,可以通过 将 Gizmos 切换到关闭状态 来隐藏它们。

配置场景

在本部分中,你将将 SceneManagerDataManagerRootMenu 连接在一起,以获取下一个集成 Azure 存储教程的工作场景。

连接对象

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

    选择了 DataManager 对象的 Unity 屏幕截图。

  2. 在检查器窗口中,找到 DataManager(脚本) 组件。 在数据管理器就绪()事件中,你会看到一个空插槽。 将 SceneController 对象从“层次结构”窗口拖动到 “打开数据管理器就绪”() 事件。

    添加了 DataManager 事件侦听器的 Unity 屏幕截图。

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

    Unity 的屏幕截图,其中添加了 DataManager 事件操作。

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

    Unity 中选中 SceneController 的屏幕截图。

  5. 现在有多个未填充的字段;让我们来改变这一点。 将 DataManager 对象从“层次结构”拖动到“数据管理器”字段,然后将RootMenu>MainMenu GameObject 从“层次结构”拖动到“主菜单”字段。

    配置了 SceneController 的 Unity 屏幕截图。

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

  7. 现在,您的场景已为即将推出的教程做好准备。 别忘了把它保存到你的项目中。

准备项目生成管道

注释

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

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

1.添加其他必需功能

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

    Unity 打开项目设置的屏幕截图。

  2. 在“项目设置”窗口中,选择“ 播放器”,然后选择 “发布设置”:

    Unity 发布设置的屏幕截图。

  3. “发布设置”中,向下滚动到 “功能 ”部分,然后仔细检查 InternetClient麦克风SpatialPerception 功能(在教程开始时创建项目时启用的功能)。 然后,启用 InternetClientServerPrivateNetworkClientServer网络摄像头 功能:

    Unity 功能的屏幕截图

2.将应用部署到 HoloLens 2

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

小窍门

有关如何生成 Unity 项目并将其部署到 HoloLens 2 的提醒,请参阅 入门教程 - 生成和部署应用程序 说明。

3.在 HoloLens 2 上运行应用,并按照应用内说明进行作

谨慎

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

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

  • 麦克风
  • 照相机

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