空間アンカー

空間アンカーは、システムが時間の間に追跡する世界の重要なポイントを表します。 各アンカーには、 他のアンカーまたは参照フレームに基づいて調整可能な座標系が用意されています。これにより、固定されたホログラムが正確に配置されます。 アンカーの座標系でホログラムをレンダリングすると、任意の時点でホログラムの最も正確な位置が提供されます。 これは、システムが現実世界に基づいて継続的に位置に戻す際に、ホログラムの位置に対する時間の少ない調整のコストがかかります。

また、アプリケーション セッション間およびデバイス間で空間アンカーを保持および共有することもできます。

  • ローカル空間アンカーをディスクに保存し、後で読み込み戻す方法により、アプリケーションは、1 つの HoloLens 上の複数のアプリケーション セッションで現実世界の同じ場所を計算できます。
  • Azure Spatial Anchorsを使用してクラウド アンカーを作成することで、アプリケーションは複数の HoloLens、iOS、Android デバイス間で空間アンカーを共有できます。 各デバイスで同じ空間アンカーを使用してホログラムをレンダリングすると、現実世界の同じ場所にホログラムが表示されます。 これにより、リアルタイム共有エクスペリエンスを実現できます。
  • また、Azure Spatial Anchors を使用して、HoloLens、iOS、Android デバイス間で非同期ホログラムを永続化することもできます。 永続的なクラウド空間アンカーを共有することで、デバイスが同時に存在しない場合でも、複数のデバイスが時間の間に同じ永続化されたホログラムを観察できます。

テザリングされたデスクトップ ヘッドセットを 5 メートルのパイプで固定する場合は、通常、空間アンカーではなくステージ フレームの参照を使用できます。この場合、すべてのコンテンツをレンダリングする 1 つの座標系が提供されます。 ただし、アプリケーションでユーザーが HoloLens の 5 メートルを超えて移動できる場合は、おそらくビルのフロア全体を操作する場合、コンテンツを安定した状態に保つために空間アンカーが必要になります。

空間アンカーは、世界の中に固定するホログラムに適しています。空間アンカーは、一度配置すると移動させることはできません。 ユーザーと共にタグ付けする動的ホログラムに適したアンカーの代替手段があります。 固定された参照フレーム (Unity の世界座標の基礎) またはアタッチされた参照フレームを使用して、動的ホログラムを配置する方が最適です。

ベスト プラクティス

以下の空間アンカー ガイドラインを使用すると、現実世界を正確に追跡する安定したホログラムをレンダリングできます。

空間アンカーはユーザーが配置した場所に作成する

通常、ユーザーは空間アンカーを明示的に配置します。

たとえば、HoloLensアプリケーションでは、ユーザーの視線入力レイと空間マッピング メッシュを交差させて、ユーザーがホログラムを配置する場所を決定できます。 ユーザーがタップしてそのホログラムを配置したら、交差ポイントに空間アンカーを作成し、そのアンカーの座標系の原点にホログラムを配置します。

ローカル空間アンカーは、作成が簡単でパフォーマンスが高い。 複数のアンカーが基になるセンサー データを共有できる場合、システムは内部データを結合します。 ホログラムの固定グループなど、以下で説明する場合を除き、ユーザーが明示的に配置するホログラムごとに新しいローカル空間アンカーを作成することをお勧めします。

固定されたホログラムは必ずアンカーから 3 m にレンダリングする

空間アンカーは、アンカーの原点近くの座標系を安定させます。 原点から 3 メートルを超えるホログラムをレンダリングすると、ホログラムでは、手押し効果のために、その原点からの距離に比例して顕著な位置誤差が発生する可能性があります。 これは、ホログラムがユーザーから遠く離れた場所に存在する場合に、ユーザーがアンカーの近くに立っている場合に機能します。 つまり、離れたホログラムの角誤差は小さくなるのです。 ただし、ユーザーが遠くのホログラムに歩み上げると、そのビューは大きくなるので、遠くのアンカーの原点からの手押しの効果が明らかになります。

剛体クラスターを形成すべきグループ ホログラム

アプリケーションがそれらのホログラムが固定された関係を維持するとアプリケーションが期待している場合、複数のホログラムが同じ空間アンカーを共有できます。

たとえば、部屋でホログラフィック太陽系をアニメーション化する場合は、すべての太陽系オブジェクトを中央の 1 つのアンカーに結び付けます。 そうすることで、互いに基づいてスムーズに移動します。 この場合、コンポーネントパーツがアンカーの周りを動的に移動している場合でも、固定されているのは太陽系全体です。

ホログラムの安定性を維持するための重要な注意点は、上記の 3 メートルの規則に従う方法です。

ローカルの空間アンカーの代わりに静止基準系を使用して非常に動的なホログラムをレンダリングする

部屋を歩き回る文字や、ユーザーの近くの壁に沿って続くフローティング UI など、非常に動的なホログラムがある場合は、ローカルの空間アンカーをスキップし、それらのホログラムを、参照の固定フレーム によって提供される座標系で直接レンダリングすることを推奨します。 Unity では、WorldAnchor を使用せずにホログラムをワールド座標に直接配置することで、これを実現できます。 ホログラムがホログラムから離れているとき、固定された参照フレームに移動するとドリフトが発生する可能性があります。 しかし、これは動的ホログラムでは目立たない可能性が低いです。ホログラムが常に動いているか、あるいはその動きが常にユーザーの近くに維持され、ドリフトが最小限に抑えらされます。

動的ホログラムにおける興味深いケースとして、ある固定の座標系から別の座標系にアニメーションするオブジェクトがあげられます。 たとえば、10 メートル離れた 2 つの施設がある場合、それぞれが独自の空間アンカー上に配置されます。1 つは、もう一方の天守で式式を打つ 1 つの施設です。 ボールが発生した場合は、最初の天地のアンカー座標系の目のと一致する、固定された参照フレーム内の適切な位置にレンダリングできます。 その後、静止基準系にある弾道をたどって弾を 10 m 飛ばします。 ボールがもう一方の山に到達すると、それを 2 番目の天守の固定座標系に移動して、その基礎の厳格な体で物理計算を行うのを可能にできます。

デバイス間で非常に動的なホログラムを共有している場合は、静的な参照フレームをデバイス間で共有できないので、親として機能するクラウド空間アンカーを選択します。 ただし、動的ホログラムまたはそれを表示しているデバイスがアンカーの半径 3 m 以内に維持され、ホログラムがすべてのデバイスで安定して表示される必要があります。

空間アンカーのグリッドを作成しない

ユーザーが移動する間に、アプリケーションで空間アンカーの通常のグリッドを削除し、動的オブジェクトを移動中にアンカーからアンカーに切り替えた方が良い場合があります。 ただし、これには、システム自体が内部的に保持するディープ センサー データの利点を持たなくても、アプリケーションの管理が多く必要になります。 このような場合は、上のセクションで説明したように、ホログラムを固定参照フレームに配置することで、より良い結果を得ることができます。 静的空間の周囲に一連のクラウド空間アンカーを事前に配置する場合は、アンカーの任意のグリッドを作成するのではなく、ユーザーが上記の原則に従って得た主要ホログラムの場所に空間アンカーを配置します。 これにより、重要なホログラムを最大限に安定させることができます。

不要になったローカル空間アンカーをリリースする

ローカル空間アンカーがアクティブな間、システムは、そのアンカーの近くにセンサー データを保持する優先順位を設定します。 空間アンカーを使用しなくなった場合は、その座標系へのアクセスを停止します。 これにより、基になるセンサー データを必要に応じて削除できます。

これは、空間アンカー ストアに永続化したローカル アンカーで特に重要です。 これらのアンカーの背後にあるセンサー データは永続的に保持され、アプリケーションが将来のセッションでそのアンカーを見つけ出し、他のアンカーを追跡するために使用できる領域が減ります。 今後のセッションでもう一度見つける必要があるローカル アンカーのみを保持します。 ユーザーにとって意味がなくなった場合は、ストアから削除することをお勧めします。

クラウド空間のアンカーのストレージは、シナリオで必要とされるだけ拡張することができます。 必要な数のクラウド アンカーを格納し、ユーザーがアンカーを再び必要とすることがわかっているときにリリースできます。

こちらもご覧ください