ツールとビジュアライザー

Microsoft.MixedReality.WorldLocking.Tools 名前空間のツールとビジュアライザーは、開発中に役立つことを目的としています。 また、World Locking Tools (WLT) システムとの高度な直接対話の開始点になる場合もあります。

これらはアプリケーション内で直接使用することを目的としていませんが、アプリケーション開発者は自由に使用できます。

WorldLocking.Core は、適切なアプリケーション シナリオでそのまま機能するように意図されています。 ただし、アプリケーションに関する前提条件がツールに存在する場合があります。 このような前提条件は、状況によっては不適切となる場合があります。

出荷アプリケーションにツールを直接組み込む前に、独自の要件とリソースに合わせてカスタマイズしたツールのバージョンを作成することを検討してください。

ツール

アジャスター

アジャスターは、再調整イベントを処理するコンポーネントです。 特に、接続ポイントを作成します。 再調整操作が発生した場合、AttachmentPoint は通知コールバックとして機能します。 アジャスターはそのイベントを適切に処理します。

AttachmentPoints の概念に関する詳細な説明を参照してください。

再調整イベントに対する正しい対応は、オブジェクトの種類によって異なり、アプリケーション固有です。 たとえば、オブジェクトのフラグメントが現在非アクティブである場合、オブジェクトを表示する必要があるかどうかについて考えます。 一部のアプリケーションでは、オブジェクトの適切な配置を決定できないため、オブジェクトを非表示にする必要があります。 他のアプリケーションでは、オブジェクトが消失することで混乱するよりも、一時的には不正確なポーズであっても、オブジェクトを表示する方が適切な場合があります。 また、オブジェクトを非表示にする必要があるアプリケーションの場合でも、非表示にするためのさまざまな方法があります (無効にしたり、離れた場所に移動したりするなど)。

AdjusterFixed および AdjusterMoving コンポーネントは、2 つの一般的なシナリオを最低限必要な範囲で処理します。

AdjusterFixed コンポーネントは、そのターゲットが通常は動かないことを前提としています。 World Locking Tools が再調整イベントのために調整ポーズを送信する場合、AdjusterFixed のオブジェクトを実世界で静止させておくことが目的です。

対照的に、AdjusterMoving コンポーネントは、その対象が Unity 座標空間を介して移動可能であることを前提としています。 World Locking Tools システムがターゲットの位置を評価し続けるため、再調整作業イベントでは、システムが最も正確な修正を行って、その時点での物理的な世界に対するターゲットの位置を一定に保つことができます。

アダプター

アダプター コンポーネントは、説明のみを目的としています。 アダプターの 1 つを使用していることに気付いた場合は、World Locking Tools の使用方法を再考する必要があります。

特に、MRTK には既にアダプターが組み込まれているため、アプリケーションの側でそれ以上の座標系変換は必要ありません。

特に MRTK を使用していない場合は、Spongy Space 座標でレポートするネイティブ リソースから Frozen Space への変換が行われる場合があります。 このような場合、アプリケーション開発者は、ここに含まれているアダプターの 1 つが適切なリファレンスであると感じる可能性があります。

  • WorldAnchorAdapter - WorldAnchor は、Spongy 空間でのオブジェクトのポーズを調整して、物理的空間で固定されたままにします。 これは、World Locking Tools によって提供されるワールドロック スペースと冗長であるため、オブジェクトは Frozen Space でドリフトします。 このアダプターを使用すると、WorldAnchor は Frozen Space 内のオブジェクトのポーズを維持できます。 これは、診断目的の場合を除き、不要です。 Unityのグローバル座標空間内のすべてのオブジェクトは、World Locking Tools によってロックされます。

  • ToggleWorldAnchor - WorldAnchorAdapter に似ていますが、切り替えることができます。 また、WorldLockingManager が無効になっている場合は、通常の WorldAnchor の動作に自動的に変換されます。 診断目的でのみ役立ちます。

  • FrozenSpatialMapping - アダプターは、SurfaceObserver からの結果を管理して正しくレンダリングします。 MRTK Spatial Awareness システムは、このすべての機能だけでなく、それ以外の機能も提供し、World Locking Tools と連携するためのアダプターを必要としません。

  • FrozenTapToAdd - Unity の入力システムと直接やり取りするには、ここに示すように、入力座標データを変換する必要があります。 これは MRTK の入力システムでは不要です。

ビジュアライザー

アンカー グラフの視覚化

AnchorGraphVisual とこれに関連するプレハブは、提供される視覚化の中核となる要素です。 構成要素は次のとおりです。

  1. 軸 - Spongy Space (緑) と Frozen Space (青) の原点の現在のポーズは、標準の 3 軸方向識別子で表示されます。

  2. Spongy アンカー - これらは、Frozen World Engine 最適化を提供するために作成されたネイティブの基礎アンカーです。 各アンカーは、それを識別するテキスト タグと共にリングで表されます。 また、色とサイズによってより多くの情報が伝えられます。

    • アクティブなトラッキング アンカーは緑色になります。

    • 関連性がゼロのトラッキング アンカーは赤色になります。

    • サポートされていないアンカーは黄色になります。

    • リングが大きいほど、そのアンカーの関連性が高くなります。

  3. Frozen アンカー - Frozen Space 内の対応する参照ポイントです。 トラッカー エラーがない場合、これらは Spongy アンカーと正確に位置合わせされます。

  4. Spongy-Frozen エッジ - これらは、Spongy アンカーを対応する Frozen アンカーに接続します。 トラッカー エラーがない場合、これらは一致していることになります。したがって、これらのエッジが表示されない場合、すべてが適切に機能していることを意味します。 いずれにせよ、これらのエッジは数センチメートル以下である必要があります。 これらは、Frozen エンドに赤い色で表示されます。 Spongy エンドで、青色がフェードアウトします。

  5. アンカー エッジ - これらの薄い青-灰色のラインは、アンカー グラフの Spongy アンカー間の接続を示します。

部屋を横断する一般的なアンカー グラフ

ユーザーが物理環境内を移動するときに WorldLocking Tools によって生成されるアンカー グラフの表示を有効にするには、[WorldLockingTools] > [Prefabs] > [AnchorGraphVisual] プレハブをシーンにドロップするだけです。 通常、WorldLockingContext に兄弟として追加されますが、階層内での正確な配置は重要ではありません。 ただし、カメラ階層には配置しないでください。

WLT が内部で作成および使用する空間アンカーは、カメラの位置に作成されます。 目の高さでアンカーの視覚化のフィールドを移動するのは当惑するため、システムでは既定で実際の位置から 1 m 下にアンカーの視覚化を表示します。 実際のアンカー位置でアンカーの視覚化を表示するには、Anchor Graph Visual コンポーネントの Vertical Displacement パラメーターをゼロに設定します。

追加出力

World Locking Examples にはテキスト診断が含まれています。 これらのほとんどは、その能力を持つクライアントではなく、World Locking Tools の開発者にのみ関連しています。 ただし、これらは読み取りに使用でき、StatusToText スクリプトに示されているように、リアルタイム表示に使用できます。

一般的な診断表示

事後分析の場合、WorldLockingContext[Diagnostics] セクションは、Frozen World Engine の障害を報告するのに非常に役立ちます。 詳細については、「バグの報告」を参照してください。