メインコンテンツまでスキップ

Image-based Relocalization Sample

このサンプルで使われているのと同じ概念を説明している Map-based Relocalization Sample を最初に読むことを強くおすすめめします。このチュートリアルでは、すでにそこで説明している概念については説明しません。

このサンプルでは、画像マーカーを見つけ、その実世界の位置をシェアードアンカーとして使用する画像ベースの再定位を行っています。また、このサンプルでは、リローカリゼーションに成功すると、共有アンカーの位置に立方体が表示されます。シェアードアンカーが見つかると、ARの原点(0, 0, 0)をシェアードアンカーの位置に移動させます。画像ベースのシェアードアンカーでは、実世界空間におけるこの位置が画像マーカーの位置となります。

シーンを理解する

Scene Hierarchy

Map-based Relocalization Sample の階層と非常によく似ていることがわかります。最も顕著な違いは、ScoreUpdater オブジェクトがないことです。これは、画像ベースのリローカライゼーションでは RelocalizationScore をサポートしていないためです。ほかのオブジェクトや動作は全て同じで、ARSharedAnchorManagerの設定だけが異なります。

AR Shared Anchor Manager

ARSharedAnchorManager コンポーネントに、ARTrackedImageManager コンポーネントがアタッチされていることがわかります。画像ベースのリローカライズは、AR Foundation の画像トラッキング機能の上に構築されています。画像ベースのリローカリゼーションを設定するには、ARTrackedImageManager を割り当て、ReferenceImageLibrary にある画像の中からシェアードアンカーとして使用するものを選択する必要があります。

Starting/Stopping Relocalization

画像ベースのリローカライズを開始するには、マップベースの場合とは異なるAPIを使用します。

// Grab an instance of ARSharedAnchorManager
private ARSharedAnchorManager _sharedAnchorManager;

// Start image-based relocalization using the default
// reference image set in the inspector
_sharedAnchorManager.StartImageRelocalization();

// Alternatively, you can start image-based relocalization
// using referenceImage as input parameter
XRReferenceImage referenceImage;
_sharedAnchorManager.StartImageRelocalization(referenceImage);

// Stop any running relocalization process and
// reset the shared anchor status
_sharedAnchorManager.ResetSharedAnchor();

Handling Events

イベント処理は、前回のマップベースのリローカライズサンプルチュートリアルで説明したのと同じ方法で行います。詳しくは、Handling Events を参照してください。

Building the Sample

アプリケーションをビルドする前に、いくつかの設定を行う必要があります。アプリケーションをビルドする方法については、こちらのガイドを参照してください。

Running the Sample

サンプルを端末で実行し、設定した画像マーカーをスキャンしてアプリの動作を確認します。イメージマーカーの位置であるシェアードアンカー位置に立方体が表示されるはずです。