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