空間アンカーSpatial anchors

空間アンカーは、システムが長期的に追跡する必要がある、ワールド内の重要な点を表します。A spatial anchor represents an important point in the world that the system should keep 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 app sessions and across devices:

  • ローカル空間アンカーをディスクに保存して後ほど読み込み直すと、アプリは 1 台の HoloLens デバイスの複数のアプリ セッション間で現実世界の同じ場所を判断できます。By saving local spatial anchors to disk and loading them back later, your app can reason about the same location in the real world across multiple app sessions on a single HoloLens device.
  • Azure 空間アンカーを使用してクラウド アンカーを作成すると、アプリは複数の HoloLens、iOS および Android デバイス間で空間アンカーを共有できます。By using Azure Spatial Anchors to create a cloud anchor, your app can share a spatial anchor across multiple HoloLens, iOS and Android devices. 各デバイスで同じ空間アンカーを使用してホログラムをレンダリングすると、現実世界の同じ場所ですべてのユーザーがホログラムを見ることができます。By having each device render a hologram using the same spatial anchor, all 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 m 以内にあるケーブルが接続されたデスクトップ ヘッドセットを使用して体験する場合、通常は空間アンカーの代わりにステージ座標系を使用することができます。これにより、すべてのコンテンツをレンダリングする単一の座標系が提供されます。For standing-scale or room-scale experiences for tethered desktop headsets that will stay within a 5-meter diameter, you can usually just use the stage frame of reference instead of spatial anchors, providing you a single coordinate system in which to render all content. ただし、建物のフロア全体を利用するなど、HoloLens を使用して 5 m 以上動き回るアプリでは、コンテンツを継続的に安定させるために空間アンカーが必要になる場合があります。However, if your app intends to let users wander beyond 5 meters on 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 should 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

ほとんどの場合、ユーザーが明示的に空間アンカーを配置すべきです。Most of the time, users should be the ones explicitly placing spatial anchors.

たとえば、HoloLens のアプリで、ユーザーが視線空間マッピングメッシュに向けることで、ホログラムを配置する場所を決めることができます。For example, on HoloLens, an app 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, and 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 m 以上離れた場所にレンダリングすると、レバーアーム効果により、原点からの距離に比例した顕著な位置エラーが発生する可能性があります。If you render holograms more than about 3 meters from that origin, those holograms may experience noticeable positional errors in proportion to their distance from that origin, due to lever-arm effects. ユーザーがアンカーの近くにいる場合は、ホログラムはユーザーからも離れているため、うまく動作します。つまり、遠くにあるホログラムの角度誤差は小さくなります。That works if the user stands near the anchor, since the hologram is far away from the user too, meaning the angular error of the distant hologram will be small. しかし、ユーザーが遠くにあるホログラムに近づくと、ユーザーの視界にあるホログラムは大きくなり、アンカーの原点が離れていることによるレバーアーム効果が顕著になります。However, if the user walks up to that distant hologram, it will then 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 app expects those holograms to maintain fixed relationships to one another.

たとえば、部屋でホログラムの太陽系をアニメーションさせる場合は、すべての太陽系のオブジェクトが相対的にスムーズに動けるように、中心にある 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 m 規則に従うことです。The key caveat here 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 など、非常に動的ホログラムがある場合は、ローカルの空間アンカーをスキップし、静止基準系 (Unity では、WorldAnchor を使わずにワールド座標に直接ホログラムを配置することで実現できます) が提供する座標系に直接ホログラムをレンダリングすることをお勧めします。If you have a highly dynamic hologram, such as a character walking around the 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 (i.e. in Unity, you achieve this by placing holograms directly in world coordinates without a WorldAnchor). 静止基準系のホログラムは、ユーザーがホログラムから離れている場合、ドリフトする可能性がありますが。動的ホログラムでは、ホログラムは常に移動しているか常にユーザーのそばにいるため、ドリフトを最低限にとどめて目立たなくすることができます。Holograms in a stationary frame of reference may 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 m 離れている 2 つの城で、それぞれに空間アンカーがあり、片方の城からもう片方の城に大砲の弾を発射するとします。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. 弾が発射された時点では、静止基準系の適切な場所にレンダリングして、最初の城が固定されている座標系上の大砲の位置に重なるようにすることができます。At the moment the cannonball is fired, you can render it at the appropriate location in the stationary frame of reference, so as 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. 弾がもう片方の城に到達したときに、2 番目の城が固定されている座標系に移動させ、その城の剛体とともに物理演算を行うことができます。As the cannonball reaches the other castle, you may 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, as stationary frames of reference cannot be shared across devices. ただし、この場合、ホログラムがすべてのデバイスで安定して表示されるように、動的ホログラムまたはそれを表示するデバイスのどちらかがアンカーから半径 3 m 以内に残る必要があります。However, in this case, you should ensure that either 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 app 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 app, 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 will encounter 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 will prioritize keeping around the sensor data that is near that anchor. 空間のアンカーを使わなくなった場合、その座標系にアクセスしないようにします。If you are no longer using a spatial anchor, stop accessing its coordinate system. これにより、必要に応じて基となるセンサー データが削除されます。This will allow 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 app to find that anchor in future app sessions, which will reduce 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 may 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