你当前正在访问 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 门户,然后选择“创建资源”。

    Create a new resource

  2. 搜索“Object Anchors”资源。

    搜索“Object Anchors”。

    Select the Object Anchors Resource

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

    Create an Object Anchors Resource

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

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

    Enter Object Anchors resource account details

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

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

    Go to resource

  5. 在“概述”页面上:

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

    Copy the account domain for your Object Anchors resource

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

    Copy the account ID for your Object Anchors resource

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

    Copy the account key for your Object Anchors resource

设置设备

若要将应用部署到 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 与其他驱动器和文件夹一起列出。

    file explorer

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

    open HoloLens internal storage

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

    paste models in 3D Objects folder

打开示例项目

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

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”以执行此操作。 Import TextMesh Pro resources

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

build settings

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

生成并部署应用

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

build configuration

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

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

remote debug

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

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

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

应用菜单

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

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

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

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

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

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

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

    Unity primary hand menu

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

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

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

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

    Unity tracker hand menu

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

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

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

    Unity search area hand menu

疑难解答

提示

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

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

后续步骤