2.Azure Spatial Anchors をお使いになる前に2. Getting started with Azure Spatial Anchors

概要Overview

このチュートリアルでは、Azure Spatial Anchors セッションの開始と停止、および単一のデバイス上での Azure Spatial Anchors の作成、アップロード、ダウンロードに必要なさまざまな手順を学習します。In this tutorial, you will explore the various steps required to start and stop an Azure Spatial Anchors session and to create, upload, and download Azure Spatial Anchors on a single device.

目標Objectives

  • HoloLens 2 用の Azure Spatial Anchors を使用した開発の基礎について学習するLearn the fundamentals of developing with Azure Spatial Anchors for HoloLens 2
  • Spatial Anchors を作成し、それらを Azure からフェッチする方法を学習するLearn how to create spatial anchors and fetch them from Azure

Unity プロジェクトの作成と準備Creating and preparing the Unity project

このセクションでは、新しい Unity プロジェクトを作成し、MRTK 開発用に準備します。In this section, you will create a new Unity project and get it ready for MRTK development.

このためには、まず「プロジェクトの初期化と最初のアプリケーションの配置」に従ってください (デバイスにアプリケーションをビルドする手順は除きます)。これには、次の手順が含まれます。For this, first follow the Initializing your project and deploying your first application, excluding the Build your application to your device instructions, which includes the following steps:

  1. Unity プロジェクトを作成し、"MRTK チュートリアル" などの適切な名前を付けるCreating the Unity project and give it a suitable name, for example, MRTK Tutorials
  2. ビルド プラットフォームを切り替えるSwitching the build platform
  3. TextMeshPro の重要なリソースをインポートするImporting the TextMeshPro Essential Resources
  4. Mixed Reality Toolkit をインポートするImporting the Mixed Reality Toolkit
  5. Unity プロジェクトを構成するConfiguring the Unity project
  6. シーンを作成して構成し、シーンに AzureSpatialAnchors などの適切な名前を付けるCreating and configuring the scene and give the scene a suitable name, for example, AzureSpatialAnchors

次に、「空間認識表示オプションの変更」の指示に従い、次の作業を行います。Then follow the Changing the Spatial Awareness Display Option instructions to:

  1. MRTK 構成プロファイルDefaultHoloLens2ConfigurationProfile に変更しますChange the MRTK configuration profile for to the DefaultHoloLens2ConfigurationProfile
  2. 空間認識メッシュ表示オプション[Occlusion](オクルージョン) に変更しますChange the spatial awareness mesh display options to Occlusion.

組み込みの Unity パッケージのインストールInstalling inbuilt Unity packages

Unity メニューで、 [Window](ウィンドウ) > [Package Manager](パッケージ マネージャー) の順に選択して、[Package Manager](パッケージ マネージャー) ウィンドウを開きます。次に、 [AR Foundation] を選択し、 [Install](インストール) ボタンをクリックしてパッケージをインストールします。In the Unity menu, select Window > Package Manager to open the Package Manager window, then select AR Foundation and click the Install button to install the package:

AR Foundation が選択されている [Package Manager](パッケージ マネージャー) が表示された Unity

注意

Azure Spatial Anchors SDK で必要になるため、AR Foundation パッケージをインストールします。これは、次のセクションでインポートします。You are installing the AR Foundation package because the Azure Spatial Anchors SDK requires it, which you will import in the next section.

チュートリアルのアセットのインポートImporting the tutorial assets

次の Unity カスタム パッケージを、記載されている順で ダウンロードして インポート します。Download and import the following Unity custom packages in the order they are listed:

チュートリアルのアセットをインポートすると、プロジェクト ウィンドウは次のようになります。After you have imported the tutorial assets your Project window should look similar to this:

チュートリアルのアセットがインポートされた後の Unity の [Hierarchy](階層)、[Scene](シーン)、[Project](プロジェクト) ウィンドウ

注意

"WorldAnchor.SetNativeSpatialAnchorPtr(IntPtr)" が廃止されていることに関する CS0618 警告が表示されても、無視してかまいません。If you see any CS0618 warnings regarding 'WorldAnchor.SetNativeSpatialAnchorPtr(IntPtr)' is obsolete, you can ignore these warnings.

ヒント

Unity カスタム パッケージをインポートする方法については、「Mixed Reality Toolkit をインポートする」の手順を参照してください。For a reminder on how to import a Unity custom package, you can refer to the Importing the Mixed Reality Toolkit instructions.

シーンの準備Preparing the scene

このセクションでは、チュートリアルのプレハブをいくつか追加してシーンを準備します。In this section, you will prepare the scene by adding some of the tutorial prefabs.

[Project](プロジェクト) ウィンドウで、 [Assets](アセット) > [MRTK.Tutorials.AzureSpatialAnchors] > [Prefabs](プレハブ) フォルダーに移動し、次のプレハブを [Hierarchy](階層) ウィンドウにドラッグしてシーンに追加します。In the Project window, navigate to the Assets > MRTK.Tutorials.AzureSpatialAnchors > Prefabs folder, then click-and-drag the following prefabs into the Hierarchy window to add them to your scene:

  • ButtonParent プレハブButtonParent prefabs
  • DebugWindow プレハブDebugWindow prefabs
  • Instructions プレハブInstructions prefabs
  • ParentAnchor プレハブParentAnchor prefabs

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

ヒント

シーンに大きいアイコンが表示されている場合 (たとえば、大きいフレームの 'T' アイコンが邪魔になる場合など)、上の画像で示すように、ギズモをオフに切り替えることによってこれらを非表示にすることができます。If you find the large icons in your scene, for example, the large framed 'T' icons distracting, you can hide these by toggling the Gizmos to the off position, as shown in the image above.

シーンを操作するためのボタンの構成Configuring the buttons to operate the scene

このセクションでは、スクリプトをシーンに追加して、アプリでのローカル アンカーと Azure Spatial Anchors の両方の基本的な動作を示す一連のボタン イベントを作成します。In this section, you will add scripts to the scene to create a series of button events that demonstrate the fundamentals of how both local anchors and Azure Spatial Anchors behave in an app.

[Hierarchy](階層) ウィンドウで、 [ButtonParent] オブジェクトを展開し、StartAzureSession という名前の最初の子オブジェクトを選択し、[Inspector](インスペクター) ウィンドウで、Button Config Helper (Script) コンポーネントの On Click () イベントを次のように構成します。In the Hierarchy window, expand the ButtonParent object and select the first child object named StartAzureSession, in the Inspector window, configure the Button Config Helper (Script) component's On Click () event as follows:

  • ParentAnchor オブジェクトを [None (Object)](なし (オブジェクト)) フィールドに割り当てますAssign the ParentAnchor object to the None (Object) field
  • [No Function](関数なし) ドロップダウンから、 [AnchorModuleScript] > [StartAzureSession ()] の順に選択し、イベントがトリガーされたときに実行するアクションとして、この関数を設定しますFrom the No Function dropdown, select AnchorModuleScript > StartAzureSession () to set this function as the action to be executed when the event is triggered

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

[Hierarchy](階層) ウィンドウで、次の StopAzureSession という名前のボタンを選択し、[Inspector](インスペクター) ウィンドウで、Button Config Helper (Script) コンポーネントの On Click () イベントを次のように構成します。In the Hierarchy window, select the next button named StopAzureSession, then in the Inspector window, configure the Button Config Helper (Script) component's On Click () event as follows:

  • ParentAnchor オブジェクトを [None (Object)](なし (オブジェクト)) フィールドに割り当てますAssign the ParentAnchor object to the None (Object) field
  • [No Function](関数なし) ドロップダウンから、 [AnchorModuleScript] > [StopAzureSession ()] の順に選択し、イベントがトリガーされたときに実行するアクションとして、この関数を設定しますFrom the No Function dropdown, select AnchorModuleScript > StopAzureSession () to set this function as the action to be executed when the event is triggered

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

[Hierarchy](階層) ウィンドウで、次の CreateAzureAnchor という名前のボタンを選択し、[Inspector](インスペクター) ウィンドウで、Button Config Helper (Script) コンポーネントの On Click () イベントを次のように構成します。In the Hierarchy window, select the next button named CreateAzureAnchor, then in the Inspector window, configure the Button Config Helper (Script) component's On Click () event as follows:

  • ParentAnchor オブジェクトを [None (Object)](なし (オブジェクト)) フィールドに割り当てますAssign the ParentAnchor object to the None (Object) field
  • [No Function](関数なし) ドロップダウンから、 [AnchorModuleScript] > [CreateAzureAnchor ()] の順に選択し、イベントがトリガーされたときに実行するアクションとして、この関数を設定しますFrom the No Function dropdown, select AnchorModuleScript > CreateAzureAnchor () to set this function as the action to be executed when the event is triggered
  • [ParentAnchor] オブジェクトを空の [None (Game Object)](なし (ゲーム オブジェクト)) フィールドに割り当てて、CreateAzureAnchor () 関数の引数にしますAssign the ParentAnchor object to the empty None (Game Object) field to make it the argument for the CreateAzureAnchor () function

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

[Hierarchy](階層) ウィンドウで、次の RemoveLocalAnchor という名前のボタンを選択し、[Inspector](インスペクター) ウィンドウで、Button Config Helper (Script) コンポーネントの On Click () イベントを次のように構成します。In the Hierarchy window, select the next button named RemoveLocalAnchor,then in the Inspector window, configure the Button Config Helper (Script) component's On Click () event as follows:

  • ParentAnchor オブジェクトを [None (Object)](なし (オブジェクト)) フィールドに割り当てますAssign the ParentAnchor object to the None (Object) field
  • [No Function](関数なし) ドロップダウンから、 [AnchorModuleScript] > [RemoveLocalAnchor ()] の順に選択し、イベントがトリガーされたときに実行するアクションとして、この関数を設定しますFrom the No Function dropdown, select AnchorModuleScript > RemoveLocalAnchor () to set this function as the action to be executed when the event is triggered
  • [ParentAnchor] オブジェクトを空の [None (Game Object)](なし (ゲーム オブジェクト)) フィールドに割り当てて、RemoveLocalAnchor () 関数の引数にしますAssign the ParentAnchor object to the empty None (Game Object) field to make it the argument for the RemoveLocalAnchor () function

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

[Hierarchy](階層) ウィンドウで、次の FindAzureAnchor という名前のボタンを選択し、[Inspector](インスペクター) ウィンドウで、Button Config Helper (Script) コンポーネントの On Click () イベントを次のように構成します。In the Hierarchy window, select the next button named FindAzureAnchor,then in the Inspector window, configure the Button Config Helper (Script) component's On Click () event as follows:

  • ParentAnchor オブジェクトを [None (Object)](なし (オブジェクト)) フィールドに割り当てますAssign the ParentAnchor object to the None (Object) field
  • [No Function](関数なし) ドロップダウンから、 [AnchorModuleScript] > [FindAzureAnchor ()] の順に選択し、イベントがトリガーされたときに実行するアクションとして、この関数を設定しますFrom the No Function dropdown, select AnchorModuleScript > FindAzureAnchor () to set this function as the action to be executed when the event is triggered

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

[Hierarchy](階層) ウィンドウで、次の DeleteAzureAnchor という名前のボタンを選択し、[Inspector](インスペクター) ウィンドウで、Button Config Helper (Script) コンポーネントの On Click () イベントを次のように構成します。In the Hierarchy window, select the next button named DeleteAzureAnchor, then in the Inspector window, configure the Button Config Helper (Script) component's On Click () event as follows:

  • DeleteAzureAnchor オブジェクトを [None (Object)](なし (オブジェクト)) フィールドに割り当てますAssign the DeleteAzureAnchor object to the None (Object) field
  • [No Function](関数なし) ドロップダウンから、 [AnchorModuleScript] > [DeleteAzureAnchor ()] の順に選択し、イベントがトリガーされたときに実行するアクションとして、この関数を設定しますFrom the No Function dropdown, select AnchorModuleScript > DeleteAzureAnchor () to set this function as the action to be executed when the event is triggered

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

シーンを Azure リソースに接続するConnecting the scene to the Azure resource

[Hierarchy](階層) ウィンドウで [ParentAnchor] オブジェクトを選択し、[Inspector](インスペクター) ウィンドウで、Spatial Anchor Manager (Script) コンポーネントを見つけます。In the Hierarchy window, select the ParentAnchor object, then in the Inspector window, locate the Spatial Anchor Manager (Script) component. このチュートリアル シリーズの「前提条件」の一環として作成した Azure Spatial Anchors アカウントの資格情報を使用して、 [Credentials](資格情報) セクションを構成します。Configure the Credentials section with the credentials from the Azure Spatial Anchors account created as part of the Prerequisites for this tutorial series:

  • "Spatial Anchors Account ID"(Spatial Anchors アカウント ID) フィールドに、Azure Spatial Anchors アカウントからの アカウント ID を貼り付けるIn the Spatial Anchors Account ID field, paste the Account ID from your Azure Spatial Anchors account
  • "Spatial Anchors Account Key"(Spatial Anchors アカウント キー) フィールドに、Azure Spatial Anchors アカウントからのプライマリまたはセカンダリ アクセス キー を貼り付けるIn the Spatial Anchors Account Key field, paste the primary or secondary Access Key from your Azure Spatial Anchors account

Spatial Anchor Manager が構成された Unity

Azure Spatial Anchors の基本的な動作を試すTrying the basic behaviors of Azure Spatial Anchors

Azure Spatial Anchors は Unity では実行できないため、Azure Spatial Anchors の機能をテストするには、ご利用のデバイスにプロジェクトをビルドし、アプリをデプロイする必要があります。Azure Spatial Anchors can not run in Unity, so to test the Azure Spatial Anchors functionality, you need to build the project and deploy the app to your device.

ヒント

HoloLens 2 に Unity プロジェクトをビルドしてデプロイする方法については、HoloLens 2 にアプリをビルドする手順に関するページを参照してください。For a reminder on how to build and deploy your Unity project to HoloLens 2, you can refer to the Building your application to your HoloLens 2 instructions.

ご利用のデバイスでアプリケーションが実行されているときに、Azure Spatial Anchor チュートリアルの手順パネルに表示される画面の指示に従います。When the app runs on your device, follow the on-screen instructions displayed on the Azure Spatial Anchor Tutorial Instructions panel:

  1. キューブを別の場所に移動しますMove the cube to a different location
  2. Azure セッションを開始しますStart Azure Session
  3. Azure Anchor を作成します (キューブの場所に Anchor を作成します)。Create Azure Anchor (creates an anchor at the location of the cube).
  4. Azure セッションを停止しますStop Azure Session
  5. ローカル アンカーを削除します (これにより、ユーザーはキューブを移動できます)Remove Local Anchor (allows the user to move the cube)
  6. キューブを別の場所に移動しますMove the cube somewhere else
  7. Azure セッションを開始しますStart Azure Session
  8. Azure Anchor を見つけます (手順 3 の場所にキューブを配置します)Find Azure Anchor (positions the cube at the location from step 3)
  9. Azure Anchor を削除しますDelete Azure Anchor
  10. Azure セッションを停止しますStop Azure session

Instructions オブジェクトが選択されている Unity

注意事項

Azure Spatial Anchors では、インターネットを使用してアンカー データの保存と読み込みを行うため、ご利用のデバイスがインターネットに接続されていることを確認してください。Azure Spatial Anchors uses the internet to save and load the anchor data, so make sure your device is connected to the internet.

エクスペリエンスの固定Anchoring an experience

前のセクションでは、Azure Spatial Anchors の基礎について学習しました。In the previous sections, you learned the fundamentals of Azure Spatial Anchors. キューブを使用して、アンカーがアタッチされた親のゲーム オブジェクトを表現および視覚化しました。We used a cube to represent and visualize the parent game object with the attached anchor. このセクションでは、エクスペリエンス全体を、ParentAnchor オブジェクトの子として配置して固定する方法について説明します。In this section, you will learn how to anchor an entire experience by placing it as a child of the ParentAnchor object.

[Hierarchy](階層) ウィンドウで、ParentAnchor オブジェクトを選択し、[Inspector](インスペクター) ウィンドウで、Transform コンポーネントを次のように構成します。In the Hierarchy window, select the ParentAnchor object, then in the Inspector window, configure the Transform components as follows:

  • [Scale X](X 拡大縮小) を 1.1 に変更しますChange Scale X to 1.1
  • [Scale Z](Z 拡大縮小) を 1.1 に変更しますChange Scale Z to 1.1

ParentAnchor オブジェクトが選択され、配置され、スケーリングされている Unity

[Project](プロジェクト) ウィンドウで、 [Assets](アセット) > [MRTK.Tutorials.GettingStarted] > [Prefabs](プレハブ) > [Rover] フォルダーの順に移動し、RoverExplorer_Complete プレハブをクリックして [Hierarchy](階層) ウィンドウにドラッグし、シーンに追加します。In the Project window, navigate to the Assets > MRTK.Tutorials.GettingStarted > Prefabs > Rover folder, then click-and-drag the RoverExplorer_Complete prefab into the Hierarchy window to add it to the scene:

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

新しく追加した RoverModule_Complete オブジェクトが [Hierarchy](階層) ウィンドウで選択されたままの状態で、それを ParentAnchor オブジェクトにドラッグして、ParentAnchor オブジェクトの子にします。With the newly added RoverModule_Complete object still selected in the Hierarchy window, drag it onto the ParentAnchor object to make it a child of the ParentAnchor object:

RoverExplorer_Complete オブジェクトが ParentAnchor の子として設定されている Unity

ここでプロジェクトを再ビルドして、アプリをご利用のデバイスにデプロイすると、サイズ変更したキューブを移動して、Rover エクスプローラー エクスペリエンス全体を再配置できます。If you now rebuild the project and deploy the app to your device, you can now reposition the entire Rover Explorer experience by moving the resized cube.

ヒント

エクスペリエンスの再配置には、再配置オブジェクト (このチュートリアルで使用するキューブなど) の使用、エクスペリエンスを囲む境界ボックスを切り替えるボタンの使用、位置と回転のギズモの使用など、さまざまなユーザー エクスペリエンス フローがあります。A variety of user experience flows for repositioning experiences, including the use of a repositioning object (such as the cube used in this tutorial), the use of a button to toggle a bounding box that surrounds the experience, the use of position and rotation gizmos, and more.

結論Congratulations

このチュートリアルでは、Azure Spatial Anchors の基礎について学習しました。In this tutorial, you learned the fundamentals of Azure Spatial Anchors. このチュートリアルでは、Azure Spatial Anchors セッションの開始と停止を行うため、および単一のデバイスで Azure Spatial Anchors の作成、アップロード、ダウンロードを行うためにThis tutorial provided you with several buttons to let you explore the various steps required to start and stop an Azure Spatial Anchors session. 必要なさまざまな手順を調べることができるいくつかのボタンについて説明しました。Also, to create, upload, and download Azure Spatial Anchors on a single device.

次のチュートリアルでは、アプリを再起動した後でも取得できるように、Azure アンカー ID を HoloLens 2 に保存する方法と、アンカー ID を複数のデバイス間で転送して空間的な位置合わせを行う方法について学習します。In the next tutorial, you will learn how to save Azure anchor IDs to your HoloLens 2 for retrieval, even after the app is restarted, and how to transfer anchor IDs between multiple devices to achieve spatial alignment.