Unity での World Locking と空間アンカー

ワールド ロック ツールのヒーロー イメージ

ホログラムを配置したり、一緒に移動したり、場合によっては他のホログラムに対して自分自身を相対的に配置したりすることは、Mixed Reality アプリケーションを作成する際の大部分を占めます。 この記事では、World Locking Tools を使用した推奨されるソリューションについて紹介しますが、Unity プロジェクトで空間アンカーを手動で設定する方法も取り上げています。 コードに移動する前に、Unity が独自のエンジンで座標空間とアンカーを処理する方法を理解することが重要です。

世界規模の座標系

現在、ゲーム、データ視覚化アプリ、または仮想現実アプリを作成する場合、一般的なアプローチは、他のすべての座標が確実にマップできる 1 つの絶対的なワールド座標系を確立することです。 その環境では、常に、その世界における任意の 2 つのオブジェクト間のリレーションシップを定義する安定した変換を見つけることができます。 これらのオブジェクトを移動しなかった場合、それらの相対変換は常に同じままです。 この種のグローバル座標系は、すべてのジオメトリを事前に知っている純粋な仮想世界をレンダリングするときに簡単に取得できます。 今日のルームスケールの VR アプリでは、通常、この種の絶対的ルームスケール座標系の原点がフロアに確立されます。

これに対し、HoloLens などのテザリングされていない Mixed Reality デバイスは、世界をセンサーにより動的に認識し、ユーザーが建物のフロア全体を何メートルも歩き回るに従って、その周囲に関する知識を経時的に調整し続けます。 世界規模のエクスペリエンスでは、すべてのホログラムを単純な固定座標系に配置した場合、それらのホログラムは、世界に基づいて、または互いに相対的に、経時的に流動します。

たとえば、ヘッドセットは現在、世界の 2 つの場所が 4 メートル離れていると考え、その後、その認識を改善し、その場所が実際には 3.9 メートル離れていることを学習する可能性があります。 仮に最初の時点で、これらのホログラムが 1 つの固定座標系で 4 メートル離れた位置に配置されていたとしたら、そのうちの 1 つは現実世界とは 0.1 メートル分ずれて表示され続けることになるでしょう。

Unity に空間 アンカーを 手動で配置して、ユーザーがモバイルのときに物理世界でのホログラムの位置を維持できます。 ただし、これにより、仮想世界内の自己整合性が犠牲にされます。 別々のアンカーが常に互いに関連して移動し、グローバル座標空間を移動しています。 このシナリオでは、レイアウトのような単純なタスクが困難になります。 物理シミュレーションも問題になる可能性があります。

World Locking Tools (WLT) を使用すると、両方の世界を最適に利用できます。ユーザーが移動すると、仮想シーン全体に広がる空間アンカーの内部供給を使用して、1 つの固定座標系が安定化されます。 WLTにより、フレームごとに、カメラの座標とそれらの空間アンカーが分析されます。 WLTは、ユーザーの頭の座標の修正を補正するために世界のすべての座標を変更するのではなく、頭の座標を修正するだけです。

ワールド ロックアプローチを選択する

可能であれば、ホログラムの配置 にワールド ロック ツールを 使用します。

World Locking Tools は、仮想マーカーと現実世界のマーカー間の目に見える不整合を最小限に抑える安定した座標系を提供します。 ワールド ロック ツールでは、グループの個々のアンカーを使用してオブジェクトの各グループをロックするのではなく、アンカーの共有プールを使用してシーン全体をワールド ロックします。

ワールド ロック ツールは、空間アンカーの内部作成と管理を自動的に処理します。 ホログラムのワールド ロックを維持するために ARAnchorManager や WorldAnchor と対話する必要はありません。

  • OpenXR または Windows XR プラグインを使用する Unity 2019/2020 の場合は、 ARAnchorManager を使用します。
  • 古い Unity バージョンまたは WSA プロジェクトの場合は、 WorldAnchor を使用します。

ワールド ロックを設定する

World Locking Tools の使用を開始するには、Mixed Reality機能ツールをダウンロードします。 基本の詳細については、概要、クイック スタート、その他の便利なトピックへのリンクについては、メイン World Locking Tools のドキュメント ページを参照してください。

自動セットアップ

プロジェクトの準備ができたら、Mixed Reality > World Locking Tools から、シーンの構成ユーティリティを実行します。

Mixed Reality Toolkit メニューが選択された Unity エディター

重要

シーンの構成ユーティリティは、いつでも再実行できます。 たとえば、AR ターゲットがレガシから XR SDK に変更されている場合は、再実行する必要があります。 シーンが既に適切に構成されている場合、ユーティリティを実行しても効果はありません。

ビジュアライザー

初期の開発中に、ビジュアライザーを追加すると、WLT が適切にセットアップされて動作するようにするうえで役立ちます。 これらは、実稼働パフォーマンスのために、または何らかの理由で不要になった場合は、ビジュアライザーの削除ユーティリティを使用して削除できます。 ビジュアライザーの詳細については、ツールのドキュメントを参照してください。

永続的なワールド ロック

空間アンカーにより、アプリケーション セッション間で現実世界の空間のホログラムが保存されます。 HoloLens アンカー ストアに保存すると、空間アンカーが見つかり、さまざまなセッションに読み込まれ、インターネット接続がない場合に最適なフォールバックになります。

重要

ローカル アンカーはデバイスに格納されますが、Azure 空間アンカーはクラウドに格納されます。 競合することなく、同じプロジェクトにローカルアンカーと Azure アンカーを含めることができます。 アンカーを格納するための Azure クラウド サービスの統合の詳細については、「 Azure Spatial Anchors」を参照してください。

既定では、World Locking Tools は、ローカル空間アンカーの永続化をサポートするデバイス上のセッション間で、物理世界に対して Unity の座標系を復元します。 アプリケーションを終了して再実行した後に、物理世界の同じ場所にホログラムを表示するには、アプリケーションで同じポーズをホログラムに復元するだけで済みます。

Unity インスペクターのワールド ロック コンテキスト コンポーネント

アプリケーションで細かい制御が必要な場合は、インスペクターで 自動保存自動読み込みを 無効にし、スクリプトから永続化を管理できます。 詳細については、「 空間座標系を永続化する」を参照してください。

World Locking Tools では、HoloLens デバイスでのみローカル アンカー永続化がサポートされます。 Android、iOS、HoloLens デバイスの場合は、Azure Spatial Anchors と統合して、セッションとデバイス間での座標空間の永続化と共有をサポートします。 Azure Spatial Anchors で World Locking Tools を使用する詳細とサンプルについては、「 World Locking Tools (WLT) と Azure Spatial Anchors (ASA) の組み合わせ」を参照してください。

次の手順

ワールド ロックされた座標空間を共有する:

空間マッピングについて説明します。

Unity 開発チェックポイントに戻るします。

関連項目