読者です 読者をやめる 読者になる 読者になる

littlewing

人間とコンピューターとメディアの接点をデザインするために考えたこと

HoloLensの空間アンカー(Spatial Anchor)ドキュメントの日本語訳

Hololens

HoloLens

HoloLens翻訳シリーズ3回目は MicrosoftのHolographicサイト上にあるSpatial Anchor(空間アンカー)のドキュメントです。


目次

Spatial Anchor(空間アンカー)

  1. 空間アンカーのベストプラクティス
    • 1.1 ユーザーが指定した位置に空間アンカーを配置する
    • 1.2 原点座標から3メール以内にホログラムを配置する
    • 1.3 グループ化されたホログラム
    • 1.4 動き回るホログラムは空間アンカーを利用せずに静止座標系を用いる
    • 1.5 空間アンカーのグリッドを作成しない
    • 1.6 使わなくなった空間アンカーは消去する
  2. 関連ドキュメント

Spatial Anchor(空間アンカー)

空間アンカーは時間を超えて実世界の重要な座標を表現するものです。

空間アンカーは、ホログラムが確実に所定の位置に正しく留まるために、他の空間アンカーや静止座標系に対して必要に応じて調整される座標系を有しています。またアンカーをセーブしたりロードしたりする事で、アプリはセッションをまたいで現実世界の同じ座標を利用する事ができます。

空間アンカーの座標系を利用してホログラムを配置する事でいつでもホログラムを正しい位置に表示する事ができ、システムは実世界の状況沿った形で、時間が経過してもホログラムを同じ場所に表示できるように微調整を行う事ができます。

空間アンカーは実世界の固定位置にホログラムを配置するには好都合ですが、一度空間アンカーを配置するとそれを移動させる事はできません。

そのような場合は、ユーザーの動きにあわせてダイナミックに動き回るのに適した座標系を使う事もできます。

動的に動くホログラムを配置するには、(Unityの座標系の基盤でもある)静止座標系(stationary frame of reference)を利用するか、従属座標系(attached frame of reference)を利用するのがベストです。

空間アンカーや静止座標系に関しては、座標系システムのページを最初に読んでおくのが良いでしょう。


1.Best practices(空間アンカーのベストプラクティス)

以下の空間アンカーの利用に関するガイドラインは、実世界に対して正確に安定してホログラムを表示することの助けになるでしょう。

1.1 Create spatial anchors where users place them (ユーザーが指定した位置に空間アンカーを配置する)

多くの場合、利用者が明示的に空間アンカーを配置するべきです。

例えば、利用者の注視線(gaze)と spatial mapping mesh が交錯するようなアプリでは、ホログラムを配置する位置を利用者に決めさせるべきです。

利用者がホログラムを配置するためにタップを行った際に、注視線とspatial mapping meshが交錯した場所に、空間アンカーを生成し、その原点座標にホログラムを配置します。

空間アンカーを生成するのは非常に簡単でです。また複数のアンカーが、その基礎となるセンサデータを共有することができる場合、システムは内部データを統合して利用します。

開発者は通常の場合は、明示的にグループ化されたホログラムのような場合を除いて、配置した各ホログラムのための新しい空間アンカーを生成するするのが良いでしょう。

1.2 Always render anchored holograms within 3 meters of their anchor (原点座標から3メール以内にホログラムを配置する)

空間アンカーは、アンカーの原点付近が一番座標が安定しています。多くの場合、その原点から約3メートル以上離れた場所にホログラムをレンダリングする場合、原点からの距離に比例して著しい位置の誤差が発生することがあります。

1.3 Group holograms that should form a rigid cluster (グループ化されたホログラム)

アプリ内において、複数のホログラムを固定された関係性を持って(グループ化して)配置したいのであれば、複数のホログラムは同一の空間アンカーを共有することができます。

例えば、部屋の中に、アニメーションする太陽系のホログラムを表示したい場合、中心に一つの空間アンカーを配置するのが良いでしょう。そうすれば、お互いの関係性をもたせたままスムーズに動かすことができるでしょう。個々のホログラムは動的に空間アンカーの周りを動き回っているにもかかわらず、太陽系全体は固定の位置に配置されるようになります。

ホログラムの安定性を維持するために、ここで重要な注意点は、前述の3メートルルールに従うことです。

1.4 Render highly dynamic holograms using the stationary frame of reference instead of a spatial anchor (動き回るホログラムは空間アンカーを利用せずに静止座標系を用いる)

もしあなたが、部屋中をダイナミックに動き回るキャラクターやユーザーの近くの壁に沿って配置されるフローティングUIのようなホログラムを利用するのであれば、空間アンカーを使わずに、直接、静止座標系を利用して描画するのが良いでしょう(これはUnityにおいては、World Anchorを利用せずに、そのままの座標系を利用してHologramを直接配置することを意味します)。

静止座標系を利用したホログラムはユーザーから離れた場所にある時に、配置位置がずれる(drift)ことがありますが、ダイナミックに動くホログラムであれば、あまり気になりません。 ホログラムが常に動き回ってユーザーから離れたり近づいたりする場合には、ドリフトの誤差は、かなり少なくなります。

ダイナミックに動き回るホログラムに関する興味深い事例の一つは、ある空間アンカーから別の空間アンカーの座標系にアニメーションするオブジェクトです。

例えば、10メートル離れた場所に2つのお城があるとして、それぞれが独立した空間アンカーの座標に基づいて配置されているとします。 最初の城の空間アンカー座標系で大砲と一致する位置から砲弾が発射された時に あなたは、静止座標系の適切な場所にそれをレンダリングすることができます。

その後、空中を10メートル飛んでいる状態については静止座標系を用いて軌跡を描画することができます。

そして砲弾が第二の城に到達した時には、その城の(爆発を表現するための)物理計算を行うためにの座標系として、第二の城の空間アンカーの空間座標系を使うことができます。

1.5 Avoid creating a grid of spatial anchors (空間アンカーのグリッドを作成しない)

あなたはユーザーが歩き回るのに合わせて、空間アンカーのグリッドを順番に構築したくなるかもしれません。しかし、そうするとあなたのアプリは、元来のシステムやセンサーが持っている利点を活用できずに、複雑な独自の座標管理を強いられることになってしまいます。

このような場合は、上述のセクションで説明したように、静止座標系を用いてホログラムを配置することで、少ない労力でより良い結果を得ることができるでしょう。

1.6 Release spatial anchors you no longer need (使わなくなった空間アンカーは消去する)

空間アンカーがアクティブである間、システムはそのアンカーの近くにあるセンサデータの利用に優先順位を付けます。空間アンカーをもう使用しない場合は、その座標系の利用をやめてください。 これによりシステムはセンサデータ利用を必要に応じて止めることができます。

このことは、spatial anchor store(空間アンカーの保存・共有機能)を利用している場合は特に重要です。次回のセッションなどでシステム内部で空間アンカーの追跡・把握のために利用しているリソースを削減することができます。 将来のセッションで意味があり、発見する必要がある空間アンカーのみを継続して保管するようにしてください。

2.See also (関連ドキュメント)