演習 - HoloLens 2 用の Azure Cloud Services

完了

章が進むごとに新しい Azure クラウド サービスを追加して、アプリケーションの機能とユーザー エクスペリエンスを拡張しながら、各 Azure クラウド サービスの基礎について学びます。

Note

このモジュール シリーズでは HoloLens 2 に焦点を当てますが、Unity のクロスプラットフォーム的な性質により、これらのレッスンのほとんどはデスクトップおよびモバイル アプリケーションにも当てはまります。

アプリケーションの目標

このモジュール シリーズでは、画像からオブジェクトを検出し、その空間位置を見つけることができる HoloLens 2 アプリケーションを構築します。 これらのオブジェクトを追跡オブジェクトと呼びます。

ユーザーは、追跡オブジェクトを作成して、Computer Vision または空間位置、あるいは両方を介して一連の画像を関連付けることができます。 すべてのデータをクラウドに保存する必要があります。

機能

  • データと画像の基本的な管理
  • 画像のトレーニングと検出
  • 空間位置の格納とそのガイダンス

Azure クラウド サービス

以下の Azure Cloud サービスを使用して、上の機能を実装します。

Azure Storage

データを保持するには Azure Storage を使用します。 Azure Storage を使用すると、テーブルにデータを格納し、画像などの大きなバイナリをアップロードできます。

Azure Custom Vision

Azure AI Custom Vision (Azure AI サービスの一部) を使用すると、画像セットを "追跡オブジェクト" に関連付け、作成したセットで機械学習モデルをトレーニングし、"追跡オブジェクト" を検出できます。

Azure Spatial Anchors

追跡オブジェクトの場所を格納し、それを見つけるガイド付き指示を指定するには、Azure Spatial Anchors を使用します。

Unity プロジェクトを作成して準備する

このセクションでは、新しい Unity プロジェクトを作成し、MRTK 開発用に準備します。

まず、HoloLens 2 ラーニング パスの手順を実行します。ただし、アプリケーションをデバイスにビルドする手順は除きます。

  1. Unity プロジェクトを作成し、適切な名前 (Azure Cloud Tutorials など) を付ける
  2. ビルド プラットフォームを切り替える
  3. TextMeshPro の重要なリソースをインポートする
  4. Mixed Reality Toolkit をインポートする
  5. Unity プロジェクトを構成する
  6. シーンを作成して構成し、シーンに AzureCloudServices などの適切な名前を付ける

チュートリアルのアセットをインポートする

  1. AzurespatialAnchors SDK をプロジェクトに追加します。 パッケージを追加するには、このチュートリアルに従います

  2. 次の Unity カスタム パッケージを、リストされている順序でダウンロードしてインポートします。

    チュートリアル アセットをインポートし終わると、[プロジェクト] ウィンドウは次のように表示されます。

    Screenshot of Unity Hierarchy, Scene, and Project windows after importing the tutorial assets.

シーンを準備する

このセクションでは、いくつかのチュートリアル プレハブを追加することでシーンを準備します。

  1. [Project]\(プロジェクト\) ウィンドウで、 [Assets]\(アセット\)>MRTK.Tutorials.AzureCloudServices>[Prefabs]\(プレハブ\)>Manager フォルダーの順に移動します。 Ctrl ボタンを押しながら、SceneControllerRootMenuDataManager を選び、3 つのプレハブを選択します。

    Screenshot of Unity with SceneController, RootMenu, and DataManager prefabs selected.

    SceneController (プレハブ) には、SceneController (スクリプト)UnityDispatcher (スクリプト) の 2 つのスクリプトが含まれています。 SceneController スクリプト コンポーネントにはいくつかの UX 関数が含まれており、写真キャプチャ機能が使いやすくなっています。一方、UnityDispatcher は Unity メイン スレッドでのアクションの実行を許可するヘルパー クラスです。

    RootMenu (プレハブ) は、さまざまな小さいスクリプト コンポーネントを介して互いに接続されているすべての UI ウィンドウを保持し、アプリケーションの一般的な UX フローを制御する主要な UI プレハブです。

    DataManager (プレハブ) は、Azure Storage との対話を担当します。これについては、次のチュートリアルで詳しく説明します。

  2. 次に、3 つのプレハブを選択した状態で、[階層] ウィンドウにドラッグしてシーンに追加します。

    Screenshot of Unity with newly added SceneController, RootMenu and DataManager prefabs still selected.

  3. シーン内のオブジェクトに焦点を当てるために、RootMenu オブジェクトをダブルクリックし、もう一度少し縮小することできます。 RootMenu オブジェクトを選択したまま、[変換] コンポーネントの値を次のように変更します。

    位置: X = 0.0、Y = 1.6、Z = 0.6

    Screenshot of Unity with RootMenu object selected.

    ヒント

    シーン内の大きなアイコン (フレームで囲まれた大きな "T" アイコンなど) が目障りに感じる場合は、オフ位置にギズモを切り替えると非表示にできます。

シーンの構成

このセクションでは、SceneManagerDataManagerRootMenu を接続し、次の Azure Storage の統合に関するチュートリアルの作業シーンを作成します。

オブジェクトを接続する

  1. [階層] ウィンドウで、DataManager オブジェクトを選択します。

    Screenshot of Unity with DataManager object selected.

  2. [インスペクター] ウィンドウで DataManager (スクリプト) コンポーネントを見つけます。 On Data Manager Ready () イベントに空のスロットが表示されます。 SceneController オブジェクトを [階層] ウィンドウから、On Data Manager Ready () イベントにドラッグします。

    Screenshot of Unity with DataManager event listener added.

  3. これでイベントのドロップダウン メニューがアクティブになります。 ドロップダウン メニューを選び、SceneController に移動して、サブメニューの [Init ()] オプションを選びます。

    Screenshot of Unity with DataManager event action added.

  4. [階層] ウィンドウから、SceneController オブジェクトを選択します。 SceneController (スクリプト) コンポーネントが [インスペクター] に表示されます。

    Screenshot of Unity with SceneController selected.

  5. 現在、設定されていないフィールドがいくつかあります。それを変更しましょう。 DataManager オブジェクトを [階層] から [Data Manager] フィールドに移動し、RootMenu>MainMenu GameObject を [階層] から [メイン メニュー] フィールドに移動します。

    Screenshot of Unity with SceneController configured.

  6. [階層] ウィンドウで、 MRTK XR Rig オブジェクトを選択します。 MRTK Speech 子オブジェクトが有効になっていることを確認します。 これにより、"メニューを開く" と言ってメニューを開くことができるようになります。

  7. これで、今後のチュートリアルのためにシーンの準備ができました。 これは必ずプロジェクトに保存してください。

プロジェクト ビルド パイプラインを準備する

Note

HoloLens 2 のビルドとテストは必須ではありません。 HoloLens デバイスがない場合は、HoloLens 2 Emulator でテストできます。 デバイスは HoloLens.com で購入できます。

シーンを終了する前に、HoloLens 2 用にビルドするプロジェクトを準備しましょう。

1. 必要な他の機能を追加する

  1. Unity のメニューで、[Edit] (編集)>[Project Settings] (プロジェクトの設定) を選び、[Project Settings] (プロジェクトの設定) ウィンドウを開きます。

    Screenshot of Unity open Project Settings.

  2. [Project Settings] (プロジェクトの設定) ウィンドウで、[Player] (プレーヤー)[Publishing Settings] (公開の設定) の順に選びます。

    Screenshot of Unity Publishing Settings.

  3. [発行の設定] で、[機能] セクションまで下にスクロールし、InternetClientMicrophoneSpatialPerception の機能 (チュートリアルの冒頭でプロジェクトを作成するときに有効にしたもの) が有効になっているかどうかを再確認します。 その後、InternetClientServerPrivateNetworkClientServer、および Webcam の機能を有効にします。

    Screenshot of Unity Capabilities

2.HoloLens 2 にアプリをデプロイする

このチュートリアル シリーズで使用するすべての機能を、Unity エディター内で実行することはできません。 そのため、HoloLens 2 デバイスまたはエミュレーターへのアプリケーションの配置についてよく理解する必要があります。

ヒント

Unity プロジェクトをビルドして HoloLens 2 に配置する方法については、基礎チュートリアル - アプリケーションのビルドとデプロイの手順を参照してください。

3.HoloLens 2 でアプリを実行し、アプリ内の指示に従う

注意事項

すべての Azure Services でインターネットが使用されるため、デバイスがインターネットに接続されていることを確認してください。

アプリケーションがデバイスで実行されている場合は、次の要求された機能へのアクセスを許可します。

  • マイク
  • カメラ

これらの機能は、Custom Vision などのサービスを正しく機能させるために必要です。