空間アンカー
機能の有効化
この機能を使用するには、以下のOpenXRのプロジェクト設定でSpatial Anchorsにチェックする必要があります。
Project Settings > XR Plug-in Management > OpenXR (Androidタブ)
空間アンカーストア
WARNING
トラッキング用のマップを精度高く生成し、保存と読み込みの時間を短縮するために、現実世界では必ず周囲を見回してください。
一度に複数のアンカーを保存するとメインスレッドがブロックされるため、コール バックを使用して後続のアンカーを保存する必要があります。
このコンポーネントにはAR Anchor Managerコンポーネントが必要で、GameObjectにまだ存在しない場合は追加されます。AR Anchor Managerの隣にSpaces Anchor Storeコンポーネントを追加することで、アンカーをローカルに保存し、後のセッションで認識と追跡を行うことができます。
このコンポーネントは、アンカーのロードと保存、保存したアンカーの削除、アンカーのローカルストレージのクリアのためのAPIを提供します。
namespace Qualcomm.Snapdragon.Spaces
{
public class SpacesAnchorStore
{
public void ClearStore();
public void SaveAnchor(ARAnchor anchor, string anchorName, Action<bool> onSavedCallback = null);
public void SaveAnchor(ARAnchor anchor, Action<bool> onSavedCallback = null);
public void SaveAnchorWithResult(ARAnchor anchor, string anchorName, Action<SaveAnchorResult> onSavedCallback = null);
public void SaveAnchorWithResult(ARAnchor anchor, Action<SaveAnchorResult> onSavedCallback = null);
public void DeleteSavedAnchor(string anchorName);
public void LoadSavedAnchor(string anchorName, Action<bool> onLoadedCallback = null);
public void LoadAllSavedAnchors(Action<bool> onLoadedCallback = null);
public string[] GetSavedAnchorNames();
public string GetSavedAnchorNameFromARAnchor(ARAnchor anchor);
}
}
これらのメソッドについて簡単に紹介します。
-
ClearStore
- アンカーのローカルストレージをクリアします。
-
SaveAnchor
AR Anchor
オブジェクトを指定された名前または生成されたハッシュで保存します。完了時にコールバックを呼び出すことができます。
-
SaveAnchorWithResult
- 指定された名前または生成されたハッシュで、
AR Anchor
オブジェクトを保存します。完了時にコールバックを呼び出すことができます。 SaveAnchorResult
に指定できる値は以下の通りです。PENDING
: アンカーは保存を保留中です。通常は見ることができないので、代わりにARAnchor.pending
を使用してください。SAVED
: ローカルストレージに正常に保存されました。FAILURE_RUNTIME_ERROR
: ランタイムエラーのため、ローカルストレージに保存されませんでした。FAILURE_STORE_NOT_LOADED
: Spaces Anchor Storeの読み込みに失敗したため、ローカルストレージに保存されませんでした。FAILURE_INSUFFICIENT_QUALITY
: 環境マップの品質が不十分なため、ローカルストレージに保存されませんでした。
- 指定された名前または生成されたハッシュで、
-
DeleteSavedAnchor
- ローカルストレージから名前を指定して保存されたアンカーを削除します。
-
LoadSavedAnchor
- ローカルストレージからアンカーをロードし、シーン内でアンカーを見つけようとします。アンカーが見つかった場合、
AR Anchor
オブジェクトがインスタンス化されます。ロードされたアンカーは、ARAnchorManager
のanchorsChanged
イベントに追加されたものとしてリストされます。保存されたアンカーの名前はGetSavedAnchorNames
で取得できます。完了時にコールバックを呼び出すことができます。
- ローカルストレージからアンカーをロードし、シーン内でアンカーを見つけようとします。アンカーが見つかった場合、
-
LoadAllSavedAnchors
- すべてのアンカーをストレージからロードし、シーン内で位置を特定しようとします。
LoadSavedAnchor
と同様に、AR Anchor
オブジェクトは認識されるとインスタンス化されます。
- すべてのアンカーをストレージからロードし、シーン内で位置を特定しようとします。
-
GetSavedAnchorNames
- 保存されているすべてのアンカーを名前で返します。
-
GetSavedAnchorNameFromARAnchor
- 追跡された
AR Anchor
オブジェクトが以前保存されたものであれば、このメソッドはその名前を返し、そうでなければ空文字列を返します。このメソッドは、アンカーが保存されているかどうかをチェックするために使用できます。
- 追跡された