クイック スタート: Azure Object Anchors を使用する HoloLens アプリを C++/WinRT と DirectX で作成する

このクイック スタートでは、Azure Object Anchors を使用する HoloLens アプリを C++/WinRT と DirectX で作成する方法について説明します。 Object Anchors は、3D アセットを HoloLens の物体認識 Mixed Reality エクスペリエンスを実現する AI モデルに変換するマネージド クラウド サービスです。 作業を終えると、Holographic DirectX 11 (ユニバーサル Windows) アプリケーション内で物体とその姿勢を検出できる HoloLens アプリが完成します。

学習内容は次のとおりです。

  • HoloLens アプリケーションを作成してサイドロードする
  • 物体を検出し、そのモデルを視覚化する

Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。

前提条件

このクイック スタートを実行するには、以下が必要です。

  • ご利用環境にある対象物と、その 3D モデル (CAD またはスキャン済みのいずれか)。
  • 以下がインストールされている Windows コンピューター。
    • Git for Windows
    • ユニバーサル Windows プラットフォーム開発ワークロードを含む Visual Studio 2019Windows 10 SDK (10.0.18362.0 以降) コンポーネント
  • 開発者モードが有効になっている最新の HoloLens 2 デバイス。
    • HoloLens を最新のリリースに更新するには、[設定] アプリを開き、[更新とセキュリティ] を選択し、[更新プログラムの確認] を選択します。

Object Anchors アカウントを作成する

まず、Object Anchors サービスを使用してアカウントを作成する必要があります。

  1. Azure portal にアクセスし、 [リソースの作成] を選択します。

    Create a new resource

  2. Object Anchors リソースを検索します。

    「Object Anchors」を検索します。

    Select the Object Anchors Resource

    検索結果の Object Anchors リソースで、[作成] -> [Object Anchors] の順に選択します。

    Create an Object Anchors Resource

  3. [オブジェクト アンカー アカウント] ダイアログ ボックスで以下を行います。

    • 一意のリソース名を入力します。
    • リソースを接続するサブスクリプションを選択します。
    • リソース グループを作成するか、既存のものを使用します。
    • リソースが属するリージョンを選択します。

    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 Objects フォルダーにモデルをアップロードします。

  1. Ctrl キーと C キー (Ctrl + C) を押しながら、操作するモデルを選択してコピーします。

  2. Windows ロゴ キーと E キー (Win + E) を押して、エクスプローラーを起動します。 HoloLens が他のドライブやフォルダーと共に、左側のウィンドウに表示されます。

    file explorer

  3. HoloLens のリンクをタップすると、HoloLens デバイスのストレージが右側のペインに表示されます。

    open HoloLens internal storage

  4. エクスプローラーで、[内部ストレージ] > [3D Objects] にアクセスします。 これで、Ctrl キーを押しながら V キー (Ctrl + V) を押すことで、3D Objects フォルダーにモデルを貼り付けることができます。

    paste models in 3D Objects folder

サンプル プロジェクトを開く

次のコマンドを実行して samples リポジトリを複製します。

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

cd ./azure-object-anchors

Visual Studio で quickstarts/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 ケーブルを介して PC に接続されていることを確認します。 [デバイス] が選択された配置先であることを確認します (上記を参照)。

AoaSampleApp プロジェクトを右クリックし、コンテキスト メニューから [配置] を選択して、アプリをインストールします。 Visual Studio の出力ウィンドウにエラーが表示されなければ、アプリは HoloLens にインストールされます。

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

アプリを起動する前に、HoloLens の 3D Objects フォルダーに、オブジェクト モデル (たとえば chair.ou) をアップロードする必要があります。 まだ行っていない場合は、「モデルをアップロードする」セクションの手順に従ってください。

アプリを起動してデバッグするには、[デバッグ]>[デバッグの開始] の順に選択します。

オブジェクト モデルを取り込み、そのインスタンスを検出する

AoaSampleApp アプリが HoloLens デバイスで現在実行されています。 対象の物体 (椅子) の近く (2 メートル以内の距離) を歩き、複数の視点からそれを見てスキャンします。 その物体の周囲にピンク色の境界ボックスが表示され、いくつかの黄色の点が物体の表面の近くにレンダリングされています。これは、それが検出されたことを示しています。 検索領域を示す黄色のボックスも表示されます。

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

アプリ内で物体の検索スペースを定義するには、左右のどちらかの手を使用して空中で指をパチンと鳴らします。 検索スペースは、半径 2 メートルの球、4 m^3 の境界ボックス、ビューの視錐台の間で切り替わります。 自動車などの大きい物体の場合、通常、約 2 メートルの距離で物体の角の方を向いて立ちながら、ビューの視錐台の選択範囲を使用することが最適な方法です。 検索領域が変更されるたびに、アプリでは現在追跡されているインスタンスが削除されます。 その後、新しい検索領域でもう一度それらの検索が試みられます。

このアプリは、一度に複数の物体を追跡できます。 これを行うには、複数のモデルをデバイスの 3D Objects フォルダーにアップロードし、対象とするすべての物体を範囲に含む検索領域を設定します。 複数の物体の検出と追跡には時間がかかることがあります。

このアプリでは、3D モデルをそれに物理的に対応するものと密接に整合させます。 ユーザーは、左手を使用してエアタップを行って、高精度の追跡モードを有効にすることができます。これにより、さらに正確な姿勢が計算されます。 この機能はまだ試験段階です。 より多くのシステム リソースを消費します。また、推定される姿勢に高いジッターが発生する恐れがあります。 通常の追跡モードに戻すには、左手で再度エアタップを行います。

次のステップ

FAQ