次の方法で共有


アタッチメント ポイント

まず、World Locking Tools は安定したワールド座標系、つまりワールド ロックの空間を提供します。 この空間は、物理的な世界に対して可能な限り一定のままです。 また、ワールド ロックの空間のオブジェクトには、他の仮想オブジェクトとの相対的な位置関係を維持し、自然物理法則のシミュレーション、キネマティクス、その他のアニメーション技術など、安定した基準フレームを必要とする機能があります。

実際、アプリケーションのニーズによっては、シーン コンテンツの一部またはすべてにワールド ロックの空間で十分な場合があります。

しかし、ワールド ロックの空間は物理的な空間と最適な位置関係を保てますが、後述するように、ワールド ロックの空間の複数の点が共通の座標空間に固定され、かつ物理的な世界の基準点に対して固定された状態を保てない場合があります。

簡単ではあるが分かりやすい例として、センサーがあるアンカーを位置 (3, 0, 0) にマッピングし、別のアンカーを位置 (-3, 0, 0) にマッピングするとします。 その後、センサーの微調整処理が実行されると、2 つの座標が (3, 0, 0) および (-2, 0, 0) であることが確認されます。 2 つのアンカー間を 6 メートルの距離から 5 メートルのオフセットに変換するカメラに適用できる回転とオフセットは、明らかに存在しません。

Unity のスペース アンカー システムを使うと、2 つのアンカーは、新たにスキャンされた位置に静かに移動します。

しかし、World Locking Tools は、ワールド ロックの空間では、動かないオブジェクトが「ほとんど」動かないことを保証します。 実際、どのような動きも所有するアプリケーション次第です。

もう 1 つの一般的な「異常」状態は、トラッキングを失うことです。 ある環境 (例えばルーム) でトラッキングが失われ、別の環境で再取得されると、最初は 2 つのスペースをリンクする情報はありません。 一方のスペースの座標は、他方のスペースの座標に関連しては意味がありません。 アタッチメント ポイント パラダイムにより、アプリケーションは、古いスペースに関する空間情報が不明な場合 (例えば古い空間にある物を隠すことで) の初期フェーズを適切に処理できるだけでなく、2 つのスペース間の空間関係が明らかになった場合に復元することができます。

これらの特殊な条件と、それらを処理するために WLT が実行する修理操作について、さらに説明します。 ここでは、このような状態をスムーズに解決するために、WLT とアプリケーションの間の契約に焦点を当てて議論します。

アタッチメント ポイントとは、World Locking Tools とアプリケーションの間の契約を体系化したものです。 アプリケーションは、World Locking Tools API を使用してアタッチメント ポイントを作成および配置します。 アタッチメント ポイントの位置の修正が修理操作によって決定されると、アプリケーションは、物理空間内の元の位置にアタッチメント ポイントを保持する保持するワールド ロックの空間内の新しい位置がコールバックでアプリケーションに通知されます。

World Locking Toolsのアタッチメント ポイントが解決策になる場合があります。

  • 他の仮想オブジェクトとの相対関係よりも、物理的な世界の機能との相対関係を維持することが重要です。
  • オブジェクトは、設計時に Unity ではなく実行時に world に配置され、トラッキングの中断によって分離された相対位置を調整することが重要な場合があります (フラグメントの説明を参照してください)。
  • オブジェクトの可視性は、物理的なスペースの位置の妥当性に基づいて管理することが重要です。

アタッチメント ポイントを使用する

アタッチメント ポイントの使い方は非常に簡単です。

クライアントの責任

必要なアタッチメント ポイントごとに、クライアントは次の操作を行う必要があります。

  1. システムにアタッチメント ポイントを要求します。 CreateAttachmentPoint を参照してください。
  2. 不要になったアタッチメント ポイントを廃棄します。 ReleaseAttachmentPoint を参照してください
  3. アタッチメント ポイントの初期位置と移動のシステムを確認します。 「CreateAttachmentPoint、MoveAttachmentPointおよび、TeleportAttachmentPoint」を参照してください。
  4. 修理操作イベントを処理します。 後の説明をご覧ください。

World Locking Tools の責任

World Locking Tools は、影響を受ける各アタッチメント ポイントについて、次のいずれかが発生したときにアプリケーションに通知します。

  1. アタッチメント ポイントの物理世界のトラッキングの有効性が変更されます。
  2. 修理操作 (フラグメント統合または再固定のいずれか) により、ワールド ロックの空間の座標を変更します。

これらの通知は、アプリケーションがアタッチメント ポイントを作成するときに WorldLockingManager に送信するデリゲートを介してブロードキャストされます。

これらの通知の最適な処理方法は、アプリケーションごとに考慮事項があるため、アプリケーションに任されます。 サンプル ハンドラーは内部で使用され、そのまま使用することも、カスタム実装の開始点として使用することもできます。

サンプル実装

物理的な世界で固定されたままで、トラッキングが有効でない場合にコンテンツを非表示にするアタッチメント ポイントの場合、AdjusterFixedは、HandleAdjustStateメンバーを持つAdjustStateDelegateと、HandleAdjustLocationメンバーを持つAdjustLocationDelegateを実装します。 オブジェクトを移動するための同様のコンポーネントは、AdjusterMoving にあります。

これらのデリゲートのいずれかまたは両方を指定することはオプションであり、実際には、状態や場所の変更に対する反応は、イベントではなくポーリングに基づいて実装されます。 しかし、アプリケーションの仕様によってそれらの使用が不可能でない限り、デリゲートを使用するイベントベースのシステムは、はるかに効率的な実装を形成します。

AdjusterFixed コンポーネント (またはそれによく似たAdjusterMoving) から始めて、ハンドラー HandleAdjustLocationHandleAdjustState をアプリケーションのニーズに合わせて変更することをお勧めします。

関連項目