练习 - 适用于 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 学习路径中的步骤操作,不包括在设备上构建应用程序的说明,这涉及以下步骤:
- 创建 Unity 项目并为其提供一个合适的名称,例如 Azure 云教程
- 切换生成平台
- 导入 TextMeshPro 基本资源
- 导入混合现实工具包
- 配置 Unity 项目
- 创建并设置场景,并为场景提供一个合适的名称,例如 AzureCloudServices
导入教程资产
将
AzurespatialAnchors
SDK 添加到项目。 若要添加包,请按照此教程操作。按照列出的顺序下载并导入以下 Unity 自定义包:
导入教程资产后,项目窗口应如下所示:
准备场景
在本部分,你将添加一些教程预制件来准备场景。
在“项目”窗口中,导航到“资产”>“MRTK.Tutorials.AzureCloudServices”>“预制件”>“管理器”文件夹 。 按住 CTRL 按钮的同时,选择“SceneController”、“RootMenu”和“DataManager”以选择这三个预制件:
SceneController (预制件)包含两个脚本:SceneController (脚本)和 UnityDispatcher (脚本) 。 SceneController 脚本组件包含多个 UX 函数,让照片捕捉功能的使用更为便利,而 UnityDispatcher 是允许在 Unity 主线程上执行操作的帮助器类。
RootMenu(预制件)是主 UI 预制件,它保存所有通过各种小脚本组件相互连接的 UI 窗口,并控制应用程序的常规 UX 流。
DataManager(预制件)负责与 Azure 存储通信,下一教程将进一步介绍此内容。
现在,仍选中这三个预制件,将它们拖到“层次结构”窗口中,以将其添加到场景中:
若要重点关注场景中的对象,可以双击 RootMenu 对象,然后再略微缩小。 在 RootMenu 仍处于选定状态的情况下,将其 Transform 组件中的值更改为以下值:
位置:X = 0.0, Y = 1.6, Z = 0.6
提示
如果觉得场景中的大图标会分散注意力(例如大框“T”图标),则可以通过将 Gizmos 切换到“关闭”位置来隐藏它们。
配置场景
在本部分中,你要将 SceneManager、DataManager 和 RootMenu 连接在一起,以获得下一个集成 Azure 存储教程的工作场景。
连接对象
在“层次结构”窗口中,选择“DataManager”对象:
在“检查器”窗口中,找到“DataManager (脚本)”组件。 在这里,你将看到 On Data Manager Ready () 事件上有一个空槽。 将“SceneController”对象从“层次结构”窗口拖到“On Data Manager Ready ()”事件。
事件的下拉菜单现在处于活动状态。 选择该下拉菜单,导航到“SceneController”,然后在子菜单中选择“Init ()”选项。
从“层次结构”窗口中,选择“SceneController”对象。 你将在检查器中找到“SceneController (脚本)”组件。
现有多个未填充字段;我们来更改它吧。 将“DataManager”对象从“层次结构”移动到“数据管理器”字段,然后将“RootMenu”>“MainMenu”GameObject 从“层次结构”移到“主菜单”字段。
在“层次结构”窗口中,选择 MRTK XR Rig 对象。 确保已启用“MRTK 语音”子对象。 这样,就可以通过说“打开菜单”来打开菜单。
现在,你的场景已经准备就绪,可用于下一个教程。 请勿忘记将其保存到项目。
准备项目生成管道
注意
在 HoloLens 2 上生成和测试不是强制性的。 如果你没有 HoloLens 设备,还可以在 HoloLens 2 仿真器上进行测试。 你可以在 HoloLens.com 购买设备。
在完成场景之前,为 HoloLens 2 准备要生成的项目。
1. 添加其他所需功能
在 Unity 菜单中选择“编辑”>“项目设置...”,打开“项目设置”窗口。
在“项目设置”窗口中,依次选择“播放器”和“发布设置”:
在“发布设置”中,向下滚动到“功能”部分,并仔细检查 InternetClient、麦克风和 SpatialPerception 功能(在本教程开始创建项目时启用)是否仍处于启用状态。 然后启用“InternetClientServer”、“PrivateNetworkClientServer”和“Webcam”功能 :
2.将应用部署到 HoloLens 2
你将无法在 Unity 编辑器中运行将在本系列教程中使用的所有功能。 因此,你需要熟悉如何将应用程序部署到 HoloLens 2 设备或仿真器。
提示
如需回顾如何生成 Unity 项目并将其部署到 HoloLens 2,请参阅入门教程 - 生成和部署应用程序说明。
3.在 HoloLens 2 上运行该应用,并按照应用中的说明进行操作
注意
所有 Azure 服务都使用 Internet,因此请确保你的设备已连接到 Internet。
当应用程序在设备上运行时,请授予以下请求功能的访问权限:
- 麦克风
- 照相机
自定义视觉等服务需要上述功能才能正常运行。