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

快速入门:在 C++/WinRT 和 DirectX 中使用 Azure Object Anchors 创建 HoloLens 应用

此快速指南介绍如何在 C++/WinRT 和 DirectX 中使用 Azure Object Anchors 创建 HoloLens 应用。 Object Anchors 是一项托管的云服务,它将 3D 资产转换为 AI 模型,以便为 HoloLens 启用对象感知混合现实体验。 完成本教程后,你将拥有一个 HoloLens 应用,可在全息版 DirectX 11(通用 Windows)应用程序中检测对象及其姿势。

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

  • 创建和旁加载 HoloLens 应用程序
  • 检测对象并将其模型可视化

如果没有 Azure 订阅,请在开始之前创建一个 Azure 免费帐户

先决条件

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

  • 环境中存在一个物理对象及其 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

上传模型

在运行应用之前,需要使模型可供应用使用。 如果尚无 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

在 Visual Studio 中打开快速入门/apps/directx/DirectXAoaSampleApp.sln

将“解决方案配置”更改为“发布”,将“解决方案平台”更改为 ARM64,并从部署目标选项中选择“设备” 。

配置帐户信息

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

打开 Assets\ObjectAnchorsConfig.json

找到 AccountId 字段,并将 Set me 替换为帐户 ID。

找到 AccountKey 字段,并将 Set me 替换为帐户密钥。

找到 AccountDomain 字段,并将 Set me 替换为帐户域。

现在,右键单击该项目并选择“生成”,生成“AoaSampleApp”项目 。

Screenshot shows configuring Visual Studio project to deploy.

将应用部署到 HoloLens

成功编译示例项目后,可以将应用部署到 HoloLens。

确保 HoloLens 设备已打开并通过 USB 电缆连接到电脑。 请确保“设备”是选择的部署目标(参见上文)。

右键单击“AoaSampleApp”项目,然后从快捷菜单中选择“部署”以安装应用。 如果 Visual Studio 的“输出窗口”中没有显示任何错误,则会在 HoloLens 上安装应用。

Screenshot shows the context menu for the project with Deploy selected.

在启动应用之前,应先将对象模型(例如 chair.ou)上传到 HoloLens 上的“3D 对象”文件夹 。 如果未上传,请按照“上传模型”部分中的说明进行操作。

若要启动和调试应用,请选择“调试”>“开始调试”>。

引入对象模型并检测其实例

AoaSampleApp 应用现已在 HoloLens设备上运行。 走近(2 米距离内)目标对象(椅子),并从多个角度观察以进行扫描。 应该会看到对象周围出现一个粉红色的边框,一些黄色的点呈现在对象表面的附近,这表示检测到了该对象。 还应看到一个黄色框,指示搜索区域。

Photograph shows a chair with the bounding box, point cloud, and search area.

你可以通过右手或左手的手指在空中点击,来定义应用中对象的搜索空间。 搜索空间将在半径为 2 米的球形、4 米 ^3 的边框和视锥之间切换。 对于汽车等大型对象,最佳选择通常是在面对对象的一角站立在大约 2 米的距离时,使用视锥选择。 每次搜索区域更改时,应用都会删除当前正在跟踪的实例。 然后,它会尝试在新搜索区域中再次找到它们。

此应用可一次跟踪多个对象。 为此,请将多个模型上传到设备的“3D 对象”文件夹,并设置一个涵盖所有目标对象的搜索区域。 检测和跟踪多个对象可能需要更长时间。

应用将 3D 模型紧密地对齐到其物理对应项。 用户可以在空中使用左手点击以启用高精度跟踪模式,这可以计算出更准确的姿势。 该功能仍以试验版提供。 它会消耗更多的系统资源,并可能会导致估计姿势的抖动更剧烈。 在空中使用左手再次点击即可切换回正常跟踪模式。

后续步骤