ワールドロックされた物理サンプル

Physics Beam Sample によって、World Locking Tools のワールド ロックされた座標系によって可能になるいくつかの仮想物理エクスペリエンスが提供されます。

背景

HoloLens では、受信センサー データ、または既存のデータが再処理されることで、空間アンカーとヘッドまたは他の空間アンカー間の関係が常に変化する可能性があります。

Unity の空間アンカーは、アタッチされた GameObject を一緒にドラッグすることで、基になる空間アンカーのポーズの変化に反応します。 この動きにより、物理シミュレーションが困難になります。

  • 空間で固定された GameObject のポーズは、各フレームの空間アンカーによって明示的に設定されるため、シミュレーション (運動量など) によって設定することはできません。
  • 空間アンカーは GameObject のポーズを頻繁に更新するため、他の RigidBodies と比較すると、静止しているように見えません。
  • Unity の座標系が暗黙的にシフトするため、空間アンカーによって静的ホログラムの座標が調整されて、実世界に対して固定された状態が保たれると、ルートや軌道などの物理計算はオフになります。 たとえば、ホログラムを完全に目的とした投影は、軌道計算とターゲットに到達するまでの間にホログラムが空間アンカーによって再配置された場合でも、失敗します。

測定された空間アンカーと、それらにロックされた表示可能な仮想オブジェクトとの関係に一貫性がなくなると、World Locking Tools では、Unity の空間アンカーのように仮想オブジェクトを調整するのではなく、ヘッド変換を調整して、このような不一致が原因で認識されるアーティファクトを最小限に抑えます。 これにより、上記の問題が解消された状態で、安定した座標空間で一貫して仮想オブジェクトが表示されます。

サンプルのビルド

このサンプルには、SpatialPerception 機能が必要です。 音声コマンドを使用する場合は、マイク機能も必要です。

このサンプルでは、プロジェクトの Tags & Layers に次のレイヤーを追加する必要があります。

  • Pillared
  • SpatialMapping

デモの実行

コントロール HUD

この基本的な HUD は、この Physics Beam Sample に固有のものではありませんが、World Locking Tools の動作を実行時に制御してその機能を調べることができます。 これは、World Locking Tools の初期セットアップで説明されているように、World Locking Tools を使用するすべてのアプリケーションの開発におけるドロップインとして利用できます。

サンプル HUD のスクリーンショット

診断統計は既定で表示されますが、コントロール HUD から無効にできます。

モードのラジオ ボタン

サンプルは、いつでも次のいずれかのモードを指定できます。

  • Idle (アイドル) - 物理サンプルでは、現在入力は処理されていません。 当然のことながら、HID とラジオ ボタン メニューでは、もちろん入力の処理を続行します。

  • Throw Dart (ダーツを投げる) - 基本的な物理学の法則に基づいて軌道が計算され、表示されます。 表示される円弧は、発射体 (選択ジェスチャを介して) がたどる経路を示します。 投げられたダーツは弾道軌道をたどり、衝突する空間再構成 (SR) メッシュを含む衝突面で跳ね返ります。

    以下で説明するように、このようなダーツは「削除可能」です。

  • Add Pillars (ピラーの追加) - 選択ジェスチャでは、環境内で指定された方向に光線が投影されます。 接触可能なサーフェスが見つかった場合は、そこで垂直のピラーがシーンに追加されます。

    追加されたピラーは、以下で説明するように、すべて接触可能であり、ビーム サポートとして機能できます。 ただし、追加されたピラーには次の 2 つのフレーバーがあります。

    • ピラーが「削除可能」な表面に設定されている場合、ピラーは物理的にシミュレートされます (たとえば、倒すことができます)。
    • それ以外の場合は、ピラーは接触可能ですが、静的です。

    事実上、このルールは、ピラーが SR メッシュに追加された場合は静的になり、それ以外の場合は動的になることを意味します。

    ピラーは「削除可能」です。

  • Add Beam (光線の追加) - 最初の選択時に、光線がシーンにキャストされ、ビームの最初のエンドポイントが検出されます。 その後、選択光線がシーン内を移動すると、最初のエンドポイントから現在のエンドポイントまで線が描画されます。 2 番目の選択ジェスチャでは、最初のエンドポイントと現在のエンドポイントの間で伸縮する光線が作成されます。

    ビームとピラーのエンドポイントのバランスをとるには、エンドポイントのピラーが相互に固定されたままになるスペースが必ず必要です。

    ビームは「削除可能」です。

  • Remove Objects (オブジェクトの削除) - 選択時、レイ キャスト オブジェクトが「削除可能」なの場合は、シーンから削除されます。 削除されたオブジェクトでサポートされているオブジェクトは、その後、消失します。