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

World Locking Tools のヒーロー イメージ

ホログラムを配置したり、一緒に移動したり、場合によっては他のホログラムに対して自分自身を相対的に配置したりすることには、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 を使用します。

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

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

自動セットアップ

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

Mixed Reality Toolkit メニューが選択されている Unity エディター。

重要

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

ビジュアライザー

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

永続的なワールド ロック

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

重要

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

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

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

アプリケーションでさらに細かい制御が必要な場合は、インスペクターで Auto-Save および Auto-Load を無効にし、スクリプトから永続化を管理できます。 詳細については、「 Persist 空間座標系」を参照してください。

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 開発チェックポイントに戻ります。

関連項目