空間アンカーSpatial anchors

空間アンカーは、システムによって時間の経過と共に追跡される、世界中の重要なポイントを表します。A spatial anchor represents an important point in the world that the system keeps track of over time. アンカーで固定されたホログラムを正確に固定するため、各アンカーには、必要に応じて他のアンカーや座標系に対して調整される座標系があります。Each anchor has a coordinate system that adjusts as needed, relative to other anchors or frames of reference, in order to ensure that anchored holograms stay precisely in place. アンカーの座標系でホログラムをレンダリングすると、ホログラムの位置は常に最も正確なものになります。Rendering a hologram in an anchor's coordinate system gives you the most accurate positioning for that hologram at any given time. これは、システムが実際の世界を基準にして継続的に移動するときに、ホログラムの位置に対して時間の経過に伴う微調整のコストを発生させます。This comes at the cost of small adjustments over time to the hologram's position as the system continually moves it back into place relative to the real world.

また、アプリケーションセッション間およびデバイス間で空間アンカーを永続化して共有することもできます。You can also persist and share spatial anchors across application sessions and across devices:

  • ローカル空間アンカーをディスクに保存し、後で読み込むことによって、アプリケーションは、単一の HoloLens 上の複数のアプリケーションセッションで、実際の環境内の同じ場所を計算できます。By saving local spatial anchors to disk and loading them back later, your application can calculate the same location in the real world across multiple application sessions on a single HoloLens.
  • Azure 空間アンカーを使用してクラウドアンカーを作成することにより、アプリケーションは複数の HoloLens、iOS、および Android デバイス間で空間アンカーを共有できます。By using Azure Spatial Anchors to create a cloud anchor, your application can share a spatial anchor across multiple HoloLens, iOS, and Android devices. 各デバイスで同じ空間アンカーを使用してホログラムをレンダリングすることにより、ユーザーには、そのホログラムが現実世界の同じ場所に表示されることがわかります。By having each device render a hologram using the same spatial anchor, users will see the hologram appear at the same place in the real world. これにより、リアルタイム共有エクスペリエンスを実現できます。This allows for real-time shared experiences.
  • Azure 空間アンカーを使用して HoloLens、iOS および Android デバイスの間で非同期ホログラム永続化を行うこともできます。You can also use Azure Spatial Anchors for asynchronous hologram persistence across HoloLens, iOS and Android devices. 永続的なクラウド空間アンカーを共有すると、永続化した同じホログラムを長時間にわたって複数のデバイスに表示できます。これらのデバイスが同じ時間と場所に居合わせていなくても問題ありません。By sharing a durable cloud spatial anchor, multiple devices can observe the same persisted hologram over time, even if those devices are not present together at the same time.

5メートルの直径内に収まるテザリングさデスクトップヘッドセットのための、継続的なスケールまたはルームスケールのエクスペリエンスについては、通常、空間アンカーではなく、参照のステージフレームを使用します。これにより、1つの座標系がすべてのコンテンツを表示します。For standing-scale or room-scale experiences for tethered desktop headsets that will stay within a 5-meter diameter, you can typically use the stage frame of reference instead of spatial anchors, which provides you a single coordinate system in which to render all content. ただし、アプリケーションで、ユーザーが HoloLens で5メートルを超えている場合、たとえばビルのフロア全体で動作するようにする場合は、コンテンツを安定した状態に保つために空間アンカーが必要になります。However, if your application intends to let users wander beyond 5 meters in HoloLens, perhaps operating throughout an entire floor of a building, you'll need spatial anchors to keep content stable.

空間アンカーは、世界の中に固定するホログラムに適しています。空間アンカーは、一度配置すると移動させることはできません。While spatial anchors are great for holograms that should remain fixed in the world, once an anchor is placed, it can't be moved. アンカーの代替手段として、ユーザーとタグを付ける動的ホログラムに適しています。There are alternatives to anchors that are more appropriate for dynamic holograms that tag along with the user. 動的ホログラムは、静止基準系 (Unity のワールド座標系の土台) または接続座標系を使用して配置することをお勧めします。It is best to position dynamic holograms using a stationary frame of reference (the foundation for Unity's world coordinates) or an attached frame of reference.

ベスト プラクティスBest practices

以下の空間アンカー ガイドラインを使用すると、現実世界を正確に追跡する安定したホログラムをレンダリングできます。These spatial anchor guidelines will help you render stable holograms that accurately track the real world.

空間アンカーはユーザーが配置した場所に作成するCreate spatial anchors where users place them

通常、ユーザーは空間アンカーを明示的に配置しています。Typically, users are the ones explicitly placing spatial anchors.

たとえば、HoloLens では、アプリケーションはユーザーの宝石空間マッピングメッシュを交差させて、ユーザーがホログラムをどこに配置するかを決定できるようにすることができます。For example, on HoloLens, an application can intersect the user's gaze ray with the spatial mapping mesh to let the user decide where to place a hologram. ユーザーがタップしてそのホログラムを配置したら、交差点に空間アンカーを作成し、そのアンカーの座標系の原点にホログラムを配置します。When the user taps to place that hologram, create a spatial anchor at the intersection point, and then place the hologram at the origin of that anchor's coordinate system.

ローカル空間アンカーは、簡単かつ高性能に作成できます。Local spatial anchors are easy and performant to create. 複数のアンカーが基になるセンサーデータを共有できる場合、システムは内部データを統合します。The system will consolidate their internal data if multiple anchors can share their underlying sensor data. 通常は、ユーザーが明示的に配置した各ホログラムに対して、新しいローカル空間アンカーを作成する必要があります。ただし、ホログラムの固定グループなど、以下に示すケースは除きます。You should typically create a new local spatial anchor for each hologram that a user explicitly places, except in cases outlined below, such as rigid groups of holograms.

固定されたホログラムは必ずアンカーから 3 m にレンダリングするAlways render anchored holograms within 3 meters of their anchor

空間アンカーは、アンカーの原点近くの座標系を安定させます。Spatial anchors stabilize their coordinate system near the anchor's origin. このオリジンから3メートルを超えるホログラムをレンダリングした場合、それらのホログラムは、レバー arm の効果に起因して、その原点からの距離に比例して顕著な位置指定エラーを発生させる可能性があります。If you render holograms more than 3 meters from that origin, those holograms might experience noticeable positional errors in proportion to their distance from that origin due to lever-arm effects. これは、ユーザーがアンカーの近くにある場合に機能します。これは、ホログラムがユーザーから離れた場所にあるためです。This works if the user stands near the anchor, since the hologram is far away from the user, too. 言い換えると、遠くのホログラムの角誤差は小さくなります。In other words, the angular error of the distant hologram will be small. ただし、ユーザーが遠くのホログラムについての説明を見ると、それが大きくなり、遠隔地アンカーの原点からのレバー arm の効果が非常に明確になります。However, if the user walks up to that distant hologram, it will be large in their view, making the lever-arm effects from the faraway anchor origin quite obvious.

剛体クラスターを形成すべきグループ ホログラムGroup holograms that should form a rigid cluster

アプリケーションで固定関係を維持するために、複数のホログラムは同じ空間アンカーを共有できます。Multiple holograms can share the same spatial anchor if the application expects those holograms to maintain fixed relationships with one another.

たとえば、部屋で holographic 太陽システムをアニメーション化する場合は、すべての太陽システムオブジェクトを中央の1つのアンカーに関連付けて、互いに滑らかに移動させることをお勧めします。For example, if you are animating a holographic solar system in a room, it's better to tie all of the solar system objects to a single anchor in the center so that they move smoothly relative to each other. この場合、太陽系の個々の構成要素が直接アンカーの周囲を移動しますが、太陽系全体をアンカーで固定します。In this case, it is the solar system as a whole that is anchored, even though its component parts are moving dynamically around the anchor.

ホログラムの安定性を維持するための重要な注意事項は、上記の3メートルの規則に従うことです。The key caveat to maintain hologram stability is to follow the 3-meter rule above.

ローカルの空間アンカーの代わりに静止基準系を使用して非常に動的なホログラムをレンダリングするRender highly dynamic holograms using the stationary frame of reference instead of a local spatial anchor

部屋を囲む文字や、ユーザーの近くの壁に沿ったフローティング UI など、高度に動的なホログラムがある場合は、ローカル空間アンカーをスキップし、次のように指定された座標系でそれらのホログラムを直接レンダリングすることをお勧めします。静止した参照フレームIf you have a highly dynamic hologram, such as a character walking around a room or a floating UI that follows along the wall near the user, it is best to skip local spatial anchors, and render those holograms directly in the coordinate system provided by the stationary frame of reference. 私は、WorldAnchor を使用せずに、ワールド座標にホログラムを直接配置することによってこれを実現しています。I Unity, you achieve this by placing holograms directly in world coordinates without a WorldAnchor. 静止した参照フレーム内のホログラムは、ユーザーがホログラムから離れていると、ずれを感じることがあります。Holograms in a stationary frame of reference might experience drift when the user is far from the hologram. ただし、動的なホログラムの場合、これはあまり顕著ではありません。ホログラムが常に移動されるか、またはそのモーションによって、誤差が最小化されるユーザーに近い状態を維持することができます。But this is less likely to be noticeable for dynamic holograms: either the hologram is constantly moving anyway or its motion constantly keeps it close to the user where drift will be minimized.

動的ホログラムにおける興味深いケースとして、ある固定の座標系から別の座標系にアニメーションするオブジェクトがあげられます。One interesting case of dynamic holograms is an object that is animating from one anchored coordinate system to another. たとえば、城10の2つのメーターがあるとします。それぞれが独自の空間アンカーにあり、もう一方の城では、1つの城主がある城以外のボールを起動します。For example, you might have two castles 10 meters apart, each on their own spatial anchor with one castle firing a cannonball at the other castle. Cannonball が起動されると、最初の城の固定された座標系でキャノンと一致するように、参照フレーム内の適切な位置にレンダリングできるようになります。At the moment the cannonball is fired, you can render it at the appropriate location in the stationary frame of reference to coincide with the cannon in the first castle's anchored coordinate system. その後、静止基準系にある弾道をたどって弾を 10 m 飛ばします。It can then follow its trajectory in the stationary frame of reference as it flies 10 meters through the air. Cannonball が他の城に達したときは、2番目の城の固定された座標系に移動して、その城の固定の本体で物理的な計算を行うことができます。As the cannonball reaches the other castle, you can choose to move it into the second castle's anchored coordinate system to allow for physics calculations with that castle's rigid bodies.

デバイス間で高度に動的なホログラムを共有している場合は、一部のクラウド空間アンカーを選択して親として機能させる必要があります。これは、複数のデバイスで参照の静止フレームを共有できないためです。If you are sharing a highly dynamic hologram across devices, you will need to pick some cloud spatial anchor to act as their parent because stationary frames of reference cannot be shared across devices. ただし、この場合、すべてのデバイスでホログラムが安定して表示されるように、動的なホログラムまたはそれを表示しているデバイスがアンカーの3測定半径の範囲内にあることを確認する必要があります。However, in this case, you should ensure that either the dynamic hologram or the devices viewing it remain within the anchor's 3 meter radius to ensure the hologram appears stable on all devices.

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

場合によっては、ユーザーが移動するときに空間アンカーの通常のグリッドをドロップして、アンカーからアンカーに動的オブジェクトを移行することが必要になることがあります。You may be tempted to have your application drop a regular grid of spatial anchors as the user walks around, transitioning dynamic objects from anchor to anchor as they move around. ただし、これには、システム自体によって内部的に管理される詳細センサーデータを利用することなく、アプリケーションの管理が多数必要になります。However, this involves a lot of management for your application, without the benefit of the deep sensor data that the system itself maintains internally. このような場合、通常は、前のセクションで説明したように、ホログラムを参照の静止フレームに配置することで、より良い結果を得ることができます。For these cases, you will usually achieve better results with less effort by placing your holograms in the stationary frame of reference as described in the section above. 静的な空間に対して一連のクラウド空間アンカーを事前に配置する場合は、アンカーの任意のグリッドを作成するのではなく、前述の原則に従って、ユーザーが検出したキーホログラムの位置に空間アンカーを配置することを検討してください。When pre-positioning a set of cloud spatial anchors around a static space, consider placing the spatial anchors at the locations of the key holograms the user encounters per the principle above rather than creating an arbitrary grid of anchors. これにより、重要なホログラムを最大限に安定させることができます。This ensures that you'll get maximum stability for those key holograms.

不要になったローカル空間アンカーをリリースするRelease local spatial anchors you no longer need

ローカル空間アンカーがアクティブになっている間、システムはそのアンカーの近くにあるセンサーデータを保持します。While a local spatial anchor is active, the system prioritizes retaining the sensor data that is near that anchor. 空間のアンカーを使わなくなった場合、その座標系にアクセスしないようにします。If you are no longer using a spatial anchor, stop accessing its coordinate system. これにより、基になるセンサーデータを必要に応じて削除できます。This allows its underlying sensor data to be removed as necessary.

これは、空間アンカー ストアに永続化させたローカル アンカーにとって特に重要です。This is especially important for local anchors you have persisted to the spatial anchor store. これらのアンカーの背後にあるセンサーデータは、アプリケーションが将来のセッションでアンカーを見つけることができるように永続的に保持されます。これにより、他のアンカーを追跡するために使用できる領域が減少します。The sensor data behind these anchors will be kept around permanently to allow your application to find that anchor in future sessions, which reduces the space available to track other anchors. 将来のセッションで再び検索する必要があるローカルアンカーだけを保持し、ユーザーにとって意味がなくなったときにストアから削除します。Persist only those local anchors that you need to find again in future sessions, and remove them from the store when they are no longer meaningful to the user.

クラウド空間のアンカーのストレージは、シナリオで必要とされるだけ拡張することができます。For cloud spatial anchors, your storage can scale as your scenario requires. 必要に応じていくつでもクラウドアンカーを格納できます。その場合、ユーザーがそのアンカーでホログラムを検索する必要がないことがわかっている場合にのみ、それらを解放します。You can store as many cloud anchors as needed, releasing them only when you know that your users will not need to locate holograms at that anchor again.

関連項目See also