クイック スタート: Azure Object Anchors を使用する HoloLens アプリを MRKT を使用した Unity で作成する

このクイックスタートでは、Azure Object Anchors を使用する Unity HoloLens アプリを作成します。 Azure Object Anchors は、3D アセットを HoloLens の物体認識 Mixed Reality エクスペリエンスを実現する AI モデルに変換するマネージド クラウド サービスです。 作業を終えると、Unity で作成された HoloLens アプリで、物理世界のオブジェクトを検出できるようになります。

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

  • Unity のビルド設定を準備する。
  • HoloLens Visual Studio プロジェクトをエクスポートする。
  • HoloLens 2 デバイスにアプリを配置して実行する。

前提条件

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

  • ご利用環境にある対象物と、その 3D モデル (CAD またはスキャン済みのいずれか)。
  • 以下がインストールされている Windows マシン。
  • 開発者モードが有効になっている最新の HoloLens 2 デバイス。
    • HoloLens を最新のリリースに更新するには、 [設定] アプリを開き、 [更新とセキュリティ] を選択し、 [更新プログラムの確認] を選択します。

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

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

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

    新しいリソースを作成

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

    「Object Anchors」を検索します。

    Object Anchors リソースを選択する

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

    Object Anchors リソースを作成する

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

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

    Object Anchors リソース アカウントの詳細を入力する

    [作成] を選択して、リソースの作成を開始します。

  4. リソースが作成されたら、[リソースに移動] を選択します。

    リソースに移動

  5. 概要ページで、以下を行います。

    アカウント ドメイン をメモします。 この情報は後で必要になります。

    Object Anchors リソースのアカウント ドメインをコピーする

    アカウント ID をメモします。 この情報は後で必要になります。

    Object Anchors リソースのアカウント ID をコピーする

    [アクセス キー] ページに移動し、主キー をメモします。 この情報は後で必要になります。

    Object Anchors リソースのアカウント キーをコピーする

デバイスのセットアップ

HoloLens にアプリを展開するには、HoloLens をコンピューターとペアリングする必要があります。

  1. HoloLens で、 [Settings](設定) -> [Update & Security](更新とセキュリティ) -> [For Developers](開発者向け) に移動します。
  2. [Pair](ペアリング) をクリックし、最初の展開時に Visual Studio に PIN を入力するまで画面を開いたままにします。

モデルをアップロードする

アプリを実行する前に、モデルをアプリで使用できるようにする必要があります。 Object Anchors モデルをまだお持ちでない場合は、モデルの作成の手順に従ってモデルを作成します。 その後、ここに戻ります。

HoloLens をオンにして開発デバイス (PC) に接続したら、次の手順に従って、HoloLens の 3D Objects フォルダーにモデルをアップロードします。

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

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

    エクスプローラー

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

    HoloLens の内部ストレージを開く

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

    3D Objects フォルダーにモデルを貼り付ける

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

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

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

cd ./azure-object-anchors

次の手順は、Unity 用 Azure Object Anchors パッケージのダウンロードです。

ここで Unity 用 Azure Object Anchors パッケージ (com.microsoft.azure.object-anchors.runtime) を見つけます。 目的のバージョンを選択し、 [Download](ダウンロード) ボタンを使用してパッケージをダウンロードします。

Unity で quickstarts/apps/unity/mrtk プロジェクトを開きます。

こちらの手順に従い、Unity Package Manager を使用して、ダウンロードした Azure Object Anchors パッケージを Unity プロジェクトにインポートします。

アカウント情報を構成する

次のステップは、自分のアカウントの情報を使用するようにアプリを構成することです。 [Object Anchors アカウントの作成] セクションの アカウント キーアカウント ID および アカウント ドメイン 値をメモします。

[プロジェクト] ウィンドウで Assets\AzureObjectAnchors.SDK\Resources に進みます。

ObjectAnchorsConfig を選択します。 [インスペクター] ペインで [Object Anchors アカウント キー] の値として Account Key を、 [Object Anchors アカウント ID] の値として Account ID を、 [Object Anchors アカウント ドメイン] の値として Account Domain を入力します。

アプリのビルドと実行

サンプル シーンをビルドする

Unity Editor で、Assets/MixedReality.AzureObjectAnchors/Scenes に移動し、AOASampleScene を開いて、ビルドするシーンの一覧に追加します。

[TMP Importer] ダイアログで TextMesh Pro リソースをインポートするように求めるメッセージが表示されたら、[Import TMP Essentials](TMP Essentials のインポート) を選択して、それを実行します。 TextMesh Pro リソースをインポートする

[File](ファイル) -> [Building Settings](ビルド設定) を選択します。 [Universal Windows Platform](ユニバーサル Windows プラットフォーム) を選択し、 [Switch Platform](プラットフォームの切り替え) を選択します。 最初にいくつかのコンポーネントをダウンロードする必要がある旨のメッセージが Unity Editor に表示された場合は、それらをダウンロードしてインストールします。 次のスクリーンショットに従って、ビルド設定を構成します。 AOASampleScene のチェック ボックス "だけ" がオンになっていることを確認します。それ以外のシーンは含めないでください。

ビルド設定

[Build](ビルド) を選択し、出力フォルダーを選択します。 これで、VS プロジェクトを出力フォルダーに生成できるようになりました。

アプリを構築してデプロイする

Unity によって生成された .sln ファイルを開きます。 ビルド構成を次のように変更します。

ビルド構成

次に、アプリをデプロイし、デバッグするために、 [Remote Machine IP address](リモート マシンの IP アドレス) を構成する必要があります。

[App project](アプリ プロジェクト) を右クリックし、 [Properties](プロパティ) をクリックします。 [Properties](プロパティ) ページで、 [Configuration Properties](構成プロパティ) -> [Debugging](デバッグ) を選択します。 [Machine Name](マシン名) の値を HoloLens デバイスの IP アドレスに変更し、 [Apply](適用) をクリックします。

リモート デバッグ

プロパティ ページを閉じます。 [Remote Machine](リモート マシン) をクリックします。 アプリのビルドとリモート デバイスへのデプロイが開始されます。 デバイスがアクティブであることを確認します。

Unity スプラッシュ スクリーンの後に、白い境界ボックスが表示されます。 手を使用して、境界ボックスの移動、拡大縮小、または回転を行うことができます。 検出したい物体を範囲に含むボックスを配置します。

ハンド メニューを開き、 [Lock Search Area](検索領域のロック) を選択して、境界ボックスがこれ以上移動しないようにします。 [検索開始] を選択して、物体検出を開始します。 物体が検出されると、メッシュがその物体に対してレンダリングされます。 検出されたインスタンスの詳細が画面に表示されます。たとえば、更新されたタイムスタンプやサーフェス カバレッジ比率などです。 [検索の停止] を選択して追跡を停止すると、検出されたすべてのインスタンスが削除されます。

アプリのメニュー

ハンド メニューを使用して他の操作を行うこともできます。

主なメニュー
  • 検索開始/検索の停止 - 物体検出プロセスを開始または停止します。

  • Toggle Spatial Mapping (空間マッピングの切り替え) – 空間マッピングのレンダリングの表示/非表示を切り替えます。 このオプションは、スキャンが完了したかどうかのデバッグに使用できます。

  • Tracker Settings (トラッカー設定) – トラッカー設定メニューをアクティブにするか、しないかを切り替えます。

  • Search Area Settings (検索領域の設定) – 検索領域の設定メニューをアクティブにするか、しないかを切り替えます。

  • Start Tracing (トレースの開始) – 診断データを取得し、デバイスに保存します。 詳細については 検出に関する問題のデバッグと診断の取得 に関するセクションを参照してください。

  • Upload Tracing (トレースのアップロード) – 診断データを Object Anchors サービスにアップロードします。

    Unity の主なハンド メニュー

[Tracker Settings](トラッカー設定) メニュー
  • High Accuracy (高精度) – より正確な姿勢の取得に使用される試験的な機能です。 このオプションを有効にすると、物体検出時により多くのシステム リソースが必要になります。 このモードでは、物体のメッシュはピンク色でレンダリングされます。 通常の追跡モードに戻すには、このボタンをもう一度選択します。

  • Relaxed Vertical Alignment (緩やかな垂直方向の整合) – 有効にすると、物体を非鉛直角で検出できます。 傾斜状態の物体を検出する場合に役立ちます。

  • Allow Scale Change (スケールの変更を許可) - 環境情報に基づいて、検出された物体のサイズをトラッカーが変更できるようにします。

  • Coverage Ratio (カバレッジ比率) スライダー – トラッカーが物体を検出するために一致する必要があるサーフェス ポイントの割合を調整します。 値を小さくすると、暗い物体や高反射性の物体など、HoloLens センサーで検出することが困難な物体を、トラッカーがより適切に検出できるようになります。 値を大きくすると、誤検出の頻度が低下します。

    Unity トラッカーのハンド メニュー

[Search Area Settings](検索領域の設定) メニュー
  • Lock Search Area (検索領域のロック) – 領域の境界ボックスをロックして、手で誤って移動しないようにします。

  • Auto-Adjust Search Area (検索領域の自動調整) - 物体検出中に検索領域によるそれ自体の位置変更を可能にします。

  • Cycle Mesh (メッシュの循環) – 検索領域内で読み込まれたメッシュの視覚化を順番に切り替えます。 このオプションを使用すると、物体を検出するためにユーザーが検索ボックスを厳格に調整しやすくなります。

    Unity 検索領域のハンド メニュー

トラブルシューティング

ヒント

オブジェクトが検出されない場合は、次の手順を試すことができます。

  1. オブジェクトに正しいモデルを使用していることを再確認します。
  2. 検索領域を視覚化し、ターゲット オブジェクトが対象になっていることを確認します。
  3. MinSurfaceCoverage を減らしてみます。
  4. Windows デバイス ポータルで、 [表示] -> [3D Views](3D ビュー) をクリックし、スキャンが完了したかどうかを確認します。

次の手順

FAQ