5.Azure Spatial Anchors の共有エクスペリエンスへの統合

このチュートリアルでは、Azure Spatial Anchors (ASA) を共有エクスペリエンスに統合する方法を学習します。 ASA により複数のデバイスが現実の世界への共通の参照を持てるようになり、ユーザーは互いの姿をその現実の物理的な位置に見たり、共有エクスペリエンスを同じ場所で見たりすることができるようになります。

目標

  • ASA を共有エクスペリエンスに統合し、複数デバイスで位置合わせする
  • ASA がローカル共有エクスペリエンスのコンテキストでどのように機能するかについての基本を学ぶ

シーンの準備

[Hierarchy](ヒエラルキー) ウィンドウで SharedPlayground オブジェクトを展開し、TableAnchor オブジェクトを展開してその子オブジェクトを公開します。

SharedPlayground と TableAnchor オブジェクトが展開された Unity

[Project](プロジェクト) ウィンドウで [Assets](アセット) > [MRTK.Tutorials.MultiUserCapabilities] > [Prefabs](プレハブ) フォルダーの順に移動して、Buttons プレハブを TableAnchor 子オブジェクト上にドラッグし、TableAnchor オブジェクトの子としてシーンに追加します。

新しく追加された Buttons プレハブが選択されている Unity

シーンを操作するためのボタンの構成

このセクションでは一連のボタン イベントを構成して、Azure Spatial Anchors を使用して共有エクスペリエンスでの空間的な位置合わせを実現する方法の基本を示します。

[Hierarchy](ヒエラルキー) ウィンドウで Button オブジェクトを展開し、StartAzureSession という名前の最初の子ボタン オブジェクトを選択します。

StartAzureSession ボタン オブジェクトが選択されている Unity

[Inspector](インスペクター) ウィンドウで Interactable (Script) コンポーネントを探し、OnClick () イベントを次のように構成します。

  • *[None (Object)](なし (オブジェクト))* フィールドに、TableAnchor オブジェクトを割り当てる
  • [No Function](関数なし) ドロップダウンから、 [AnchorModuleScript] > StartAzureSession () 関数の順に選択する

StartAzureSession ボタンの OnClick イベントが構成された Unity

[Hierarchy](ヒエラルキー) ウィンドウで CreateAzureAnchor という名前の 2 番目の子ボタン オブジェクトを選択し、[Inspector](インスペクター) ウィンドウで Interactable (Script) コンポーネントを探して OnClick () イベントを次のように構成します。

  • *[None (Object)](なし (オブジェクト))* フィールドに、TableAnchor オブジェクトを割り当てる
  • [No Function](関数なし) ドロップダウンから、 [AnchorModuleScript] > CreateAzureAnchor() 関数の順に選択する
  • 表示される新しい "None (Game Object)"(なし (ゲーム オブジェクト)) フィールドに、TableAnchor オブジェクトを割り当てる

CreateAzureAnchor ボタンの OnClick イベントが構成された Unity

[Hierarchy](ヒエラルキー) ウィンドウで ShareAzureAnchor という名前の 3 番目の子ボタン オブジェクトを選択して、[Inspector](インスペクター) ウィンドウで Interactable (Script) コンポーネントを探して OnClick () イベントを次のように構成します。

  • *[None (Object)](なし (オブジェクト))* フィールドに、TableAnchor オブジェクトを割り当てる
  • [No Function] (関数なし) ドロップダウンから、 [SharingModuleScript] > ShareAzureAnchor() 関数の順に選択する

ShareAzureAnchor ボタンの OnClick イベントが構成された Unity

[Hierarchy](階層) ウィンドウで GetAzureAnchor という名前の 4 番目の子ボタン オブジェクトを選択して、[Inspector](インスペクター) ウィンドウで Interactable (Script) コンポーネントを探して OnClick () イベントを次のように構成します。

  • *[None (Object)](なし (オブジェクト))* フィールドに、TableAnchor オブジェクトを割り当てる
  • [No Function] (関数なし) ドロップダウンから、 [SharingModuleScript] > GetAzureAnchor() 関数の順に選択する

GetAzureAnchor ボタンの OnClick イベントが構成された Unity

シーンを Azure リソースに接続する

[Hierarchy](ヒエラルキー) ウィンドウで SharedPlayground オブジェクトを展開し、TableAnchor オブジェクトを選択します。

[Inspector](インスペクター) ウィンドウで Spatial Anchor Manager (Script) コンポーネントを探し、このチュートリアル シリーズの「前提条件」の部分で作成した Azure Spatial Anchors アカウントからの資格情報を使用して、 [Credentials](資格情報) セクションを構成します。

  • "Spatial Anchors Account ID"(Spatial Anchors アカウント ID) フィールドに、Azure Spatial Anchors アカウントからの アカウント ID を貼り付ける
  • "Spatial Anchors Account Key"(Spatial Anchors アカウント キー) フィールドに、Azure Spatial Anchors アカウントからのプライマリまたはセカンダリ アクセス キー を貼り付ける

Spatial Anchor Manager が構成された Unity

ヒント

シーン内で空間アンカー アカウント ID およびキーを設定するのでなく、プロジェクト全体に対してそれを設定することもできます。ASA を使用して複数のシーンを用意する場合は、これが有利です。 それを行うには、[Project](プロジェクト) ウィンドウで、[Assets](アセット) > [AzureSpatialAnchors.SDK] > [Resources](リソース) > [SpatialAnchorConfig] アセットの順に移動し、次に [Inspector](インスペクター) ウィンドウで値を設定します。

[Hierarchy](階層) ウィンドウで、 [TableAnchor] オブジェクトを選択してから、[Inspector](インスペクター) ウィンドウで Anchor Module (Script) コンポーネントを探し、それを次のように構成します。

  • [Public Sharing Pin](パブリック共有ピン) フィールドで、いくつかの数字を変更します。これにより、ピンが自分のプロジェクトに固有のものとなります。

Anchor Module Script が構成された Unity

TableAnchor オブジェクトを選択したまま、[Inspector](インスペクター) ウィンドウですべてのスクリプト コンポーネントが 有効 になっていることを確認します。

  • Spatial Anchor Manager (Script) コンポーネントの隣にあるチェックボックスをオンにして有効にする
  • Anchor Module Script (Script) コンポーネントの隣にあるチェックボックスをオンにして有効にする
  • Sharing Module Script (Script) コンポーネントの隣にあるチェックボックスをオンにして有効にする

TableAnchor スクリプト コンポーネントが有効にされた Unity

空間的な位置合わせのエクスペリエンスを試す

注意

Azure Spatial Anchors を Unity で実行することはできません。 そのため、Azure Spatial Anchors の機能をテストするには、最低 2 台のデバイスにプロジェクトを配置する必要があります。

Unity プロジェクトをビルドして 2 台のデバイスに配置すると、Azure Anchor ID を共有してデバイス間で空間的な位置合わせを実現できます。 これをテストするには、次の手順を実行します。

  1. デバイス 1 の場合: アプリを開始する (Rover エクスプローラーのインスタンスが作成され、テーブルに配置されます)
  2. デバイス 2 の場合: アプリを開始する (両方のユーザーが Rover エクスプローラーのあるテーブルを見ることができますが、テーブルは同じ場所には表示されず、ユーザー アバターはユーザーが実際にいるところに表示されません)
  3. デバイス 1 の場合: [Start Azure Session](Azure セッションの開始) ボタンを押す
  4. デバイス 1 の場合: [Create Azure Anchor](Azure Anchor の作成) ボタンを押す (TableAnchor オブジェクトの場所にアンカーが作成され、アンカーの情報が Azure リソースに保存されます)。
  5. デバイス 1 の場合: [Share Azure Anchor](Azure Anchor の共有) ボタンを押す (他のユーザーとアンカー ID がリアルタイムで共有されます)
  6. デバイス 2 の場合: [Start Azure Session](Azure セッションの開始) ボタンを押す
  7. デバイス 2 の場合: [Get Azure Anchor](Azure Anchor の取得) ボタンを押す (Azure リソースに接続して共有アンカー ID のアンカー情報が取得され、TableAnchor オブジェクトはデバイス 1 でアンカーを作成した場所に移動します)

ヒント

2 台の HoloLens デバイスへのアクセス権がない場合は、モバイル デバイス用の Azure Spatial Anchors のビルドに関するページに従って、ご利用のモバイル デバイスにプロジェクトを配置することができます。

結論

このチュートリアルでは、Azure の強力な Spatial Anchors を統合して、複数のデバイスを共有エクスペリエンスの中に配置する方法を学習しました。

これでこのチュートリアル シリーズは終了となります。Photon アカウントを設定し、PUN アプリを作成し、PUN を Unity プロジェクトに統合し、ユーザー アバターと共有オブジェクトを構成し、最後に Azure Spatial Anchors を使用して複数の参加者を配置する方法を学習しました。