你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

快速入门:通过 MRTK 在 Unity 中创建具有 Azure Object Anchors 的 HoloLens 应用

本快速入门介绍如何创建使用 Azure Object Anchors 的 Unity HoloLens 应用。 Azure Object Anchors 是一项托管的云服务,它将 3D 资产转换为 AI 模型,以便为 HoloLens 启用对象感知混合现实体验。 完成本教程后,你将拥有一个使用 Unity 生成的 HoloLens 应用,该应用可检测到物理世界中的物体。

将了解如何执行以下操作:

  • 准备 Unity 生成设置。
  • 导出 HoloLens Visual Studio 项目。
  • 在 HoloLens 2 设备上部署并运行应用。

先决条件

若要完成本快速入门,请确保具备以下项:

  • 环境中存在一个物理对象及其 3D 模型(CAD 或扫描的)。
  • 安装了以下内容的 Windows 计算机:
  • 已启用开发人员模式的最新 HoloLens 2 设备。
    • 若要在 HoloLens 上更新为最新版本,请打开“设置”应用,转到“更新和安全”,然后选择“检查更新”

创建 Object Anchors 帐户

首先,需要创建一个 Object Anchors 服务帐户。

  1. 转到 Azure 门户,然后选择“创建资源”。

    创建新资源

  2. 搜索“Object Anchors”资源。

    搜索“Object Anchors”。

    选择 Object Anchors 资源

    在搜索结果中的“Object Anchors”资源中,选择“创建”->“Object Anchors”。

    创建 Object Anchors 资源

  3. 在“Object Anchors 帐户”对话框中:

    • 输入唯一的资源名称。
    • 选择要将资源附加到的订阅。
    • 创建资源组或使用现有资源组。
    • 选择希望资源所在的区域。

    输入 Object Anchors 资源帐户详细信息

    选择“创建”开始创建资源。

  4. 创建资源后,选择“转到资源”。

    转到资源

  5. 在“概述”页面上:

    记下帐户域。 稍后需要用到此信息。

    为 Object Anchors 资源复制帐户域

    记下帐户 ID。 稍后需要用到此信息。

    为 Object Anchors 资源复制帐户 ID

    转到“访问密钥”页,并记下主密钥。 稍后需要用到此信息。

    为 Object Anchors 资源复制帐户密钥

设置设备

若要将应用部署到 HoloLens,需要将 HoloLens 与计算机配对。

  1. 在 HoloLens 中,导航到“设置”-“>更新和安全”-“>面向开发人员”
  2. 单击“配对”,将屏幕保持打开状态,直到在第一次部署期间将 PIN 输入到 Visual Studio 中。

上传模型

在运行应用之前,需要使模型可供应用使用。 如果尚无 Object Anchors 模型,请按照创建模型中的说明进行操作,以创建一个模型。 然后,返回此处。

打开 HoloLens 的电源并将其连接到开发设备 (PC) 后,按照以下步骤将模型上传到 HoloLens 上的“3D 对象”文件夹:

  1. 同时按 Ctrl 和 C (Ctrl + C),选择并复制要使用的模型。

  2. 同时按 Windows 徽标键和 E (Win + E) 启动文件资源管理器。 你应会在左窗格中看到 HoloLens 与其他驱动器和文件夹一起列出。

    文件资源管理器

  3. 点击 HoloLens 链接,在右窗格中显示 HoloLens 设备上的存储。

    打开 HoloLens 内部存储

  4. 在文件资源管理器中,转到“内部存储”>“3D 对象”。 现在,可以通过同时按 Ctrl 键和 V (Ctrl + V) 将模型粘贴到“3D 对象”文件夹中。

    将模型粘贴到“3D 对象”文件夹中

打开示例项目

通过运行以下命令克隆示例存储库

git clone https://github.com/Azure/azure-object-anchors.git

cd ./azure-object-anchors

下一步是下载适用于 Unity 的 Azure Object Anchors 包。

此处找到适用于 Unity (com.microsoft.azure.object-anchors.runtime) 的 Azure Object Anchors 包。 选择所需的版本,并使用“下载”按钮下载该包。

在 Unity 中,打开 quickstarts/apps/unity/mrtk 项目。

按照此处的说明,使用 Unity 包管理器导入已下载到 Unity 项目中的 Azure Object Anchors 包。

配置帐户信息

接下来是将应用配置为使用你的帐户信息。 记下“创建 Object Anchors 帐户”部分中的“帐户密钥”、“帐户 ID”和“帐户域”值 。

在“项目”窗格中,转到 Assets\AzureObjectAnchors.SDK\Resources

选择“ObjectAnchorsConfig”。 在“检查器”窗格中,输入 Account Key 作为“Object Anchors 帐户密钥”的值,输入 Account ID 作为“Object Anchors 帐户 ID”的值,然后输入 Account Domain 作为“Object Anchors 帐户域”的值 。

生成并运行应用

生成示例场景

在 Unity 编辑器中,导航到“Assets/MixedReality.AzureObjectAnchors/Scenes”,然后打开“AOASampleScene”,并将其添加到“场景生成”列表中。

当“TMP 导入程序”对话框提示导入 TextMesh Pro 资源时,请选择“导入 TMP Essentials”以执行此操作。 导入 TextMesh Pro 资源

选择“文件”->“生成设置”。 依次选择“通用 Windows 平台”、“切换平台”。 如果 Unity 编辑器指出需要先下载某些组件,请下载并安装这些组件。 按照下面的屏幕截图配置生成设置。 确保只有“AOASampleScene”旁边有一个选中标记:不应包含所有其他场景。

生成设置

选择“生成”并选择一个输出文件夹。 现在可以在输出文件夹中生成 VS 项目。

生成并部署应用

打开 Unity 生成的 .sln 文件。 将生成配置更改为以下配置。

生成配置

接下来,需要配置“远程计算机 IP 地址”,以便部署和调试应用。

右键单击“应用”项目,然后选择“属性”。 在“属性”页中,选择“配置属性”->“调试”。 将“计算机名称”值更改为 HoloLens 设备的 IP 地址,然后单击“应用”。

远程调试

关闭“属性”页。 单击“远程计算机”。 应用应开始生成并部署到远程设备。 请确保设备处于活动状态。

在 Unity 初始屏幕后,应该会显示一个白色的边框。 你可以用手移动、缩放或旋转该边框。 放置边框以包围要检测的物体。

打开手动菜单,选择“锁定 SearchArea”以防止边框进一步移动。 选择“开始搜索”以启动物体检测。 检测到物体时,将在物体上呈现一个网格。 屏幕上将显示检测到的实例的详细信息,例如更新的时间戳和表面覆盖率。 选择“停止搜索”停止跟踪,将删除检测到的所有实例。

应用菜单

还可以使用手动菜单执行其他操作。

主菜单
  • 开始搜索/停止搜索 – 开始或停止物体检测过程。

  • 切换空间映射 – 显示/隐藏空间映射呈现。 此选项可用于调试扫描是否完成。

  • 跟踪器设置 – 切换跟踪器设置菜单的激活状态。

  • 搜索区域设置 – 切换搜索区域设置菜单的激活状态。

  • 开始跟踪 – 捕获诊断数据并将其保存到设备。 有关更多详细信息,请参阅“调试检测问题和捕获诊断”部分。

  • 上传跟踪 – 将诊断数据上传到 Object Anchors 服务。

    Unity 主手动菜单

跟踪器设置菜单
  • 高准确度 – 一种试验性功能,用于获取更准确的姿势。 启用此选项,物体检测期间将需要更多系统资源。 在此模式下,物体网格将显示为粉红色。 再次选择此按钮以切换回正常跟踪模式。

  • 宽松的垂直对齐 – 启用后,允许以非垂直角度检测物体。 对检测坡道上的物体很有用。

  • 允许缩放更改 – 允许跟踪器根据环境信息更改检测到的物体的大小。

  • 覆盖率滑块 – 调整跟踪器检测物体时必须匹配的表面点比例。 值越低,跟踪器越能更好地检测 HoloLens 传感器难以检测到的物体,例如深色物体或高反射性物体。 值较高,错误检测的频率越低。

    Unity 跟踪器手动菜单

搜索区域设置菜单
  • 锁定搜索区域 – 锁定区域边框以防止意外地手动移动。

  • 自动调整搜索区域 – 使搜索区域可以在物体检测期间自动重新定位。

  • 循环网格 – 循环显示搜索区域内已加载的网格。 此选项可帮助用户对齐搜索框以应对难以检测的物体。

    Unity 搜索区域手动菜单

疑难解答

提示

如果未检测到对象,则可以尝试以下步骤:

  1. 仔细检查你为对象使用的是否是正确的模型。
  2. 可视化搜索区域并确保它涵盖目标对象。
  3. 尝试降低 MinSurfaceCoverage
  4. 在 Windows 设备门户中,单击“视图”->“3D 视图”,并验证扫描是否已完成。

后续步骤