クイック スタート: 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 にアクセスし、 [リソースの作成] を選択します。

    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

デバイスのセットアップ

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

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

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

アプリを実行する前に、モデルをアプリで使用できるようにする必要があります。 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

次の手順は、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 のインポート) を選択して、それを実行します。 Import TextMesh Pro resources

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

build settings

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

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

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

build configuration

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

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

remote debug

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

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

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

アプリのメニュー

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

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

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

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

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

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

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

    Unity primary hand menu

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

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

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

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

    Unity tracker hand menu

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

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

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

    Unity search area hand menu

トラブルシューティング

ヒント

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

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

次のステップ

FAQ