メインコンテンツへスキップ

Inverse3 と VerseGrip コントローラー

Inverse3 また、VerseGrip コントローラーは、Device Mapperを利用して、それぞれの物理デバイスを Unity のゲームオブジェクトにシームレスに統合するように設計されています。 高頻度のセンサーデータを活用することで、これらのコンポーネントは、仮想環境内での正確かつ応答性の高い制御を可能にします。 両者の機能は、ロジックと機能の両面で調和しており、統一されたユーザー体験を実現します。

これらのコントローラーは、Haply の「Inverse Unity Package」の基盤となるものであり、Haply のハードウェアが持つ高度な機能を活用することで、開発者が没入感とインタラクティブ性に優れたVRアプリケーションを構築できるようにします。 デバイスのローカル座標とゲームワールドの空間パラメータとの間の変換を巧みに管理し、自然で魅力的なインタラクションを確実に実現します。

Inverse3 コントローラー​

Inverse3 コントローラーコンポーネントは、Inverse3 デバイスを対応するゲームオブジェクトに関連付ける上で重要な役割を果たします。 高頻度のセンサーデータを用いて、デバイスの物理的な動きを仮想空間内に正確に反映します。主な機能は以下の通りです:

Inverse3 主な機能と API​

  • デバイス状態変更イベント:Inverse3 コントローラーの中核となるイベントであり、触覚フレームごとにトリガーされ、カーソルの位置と速度のリアルタイムな更新を提供します。 デバイスの状態を継続的に追跡する必要があるアプリケーションや、リアルタイムの制御コマンドを実装する場合に不可欠です。

  • 位置と速度の取得:CursorPosition、CursorVelocity、CursorLocalPosition、CursorLocalVelocity などのプロパティを提供し、デバイスの現在の状態にアクセスできます。物理的な動きを仮想空間に正確にマッピングする上で重要です。

  • 力と位置の制御:SetCursorForce や SetCursorPosition などのメソッドを提供しており、デバイスを直接操作することができます。開発者は力を加えたり位置を設定したりすることができ、仮想空間でのインタラクションを強化できます。

Inverse3 インスペクタービュー​

inverse3 コントローラーのインスペクター

  • 装置:特定のデバイスを選択します。<refresh device list> をクリックすると、Device Mapper を使用して、エディタモードでデバイスを取得し、すべての 装置 ドロップダウンを更新します。
  • 利き手:左右どちらの手用かという設定に基づいて、デバイスを絞り込みます。
  • カーソル:Inverse3Cursorオブジェクトにリンクされ、デバイスの位置の更新に合わせて移動します。
  • Body:デバイスの物理的な本体の向きを表すInverse3Bodyに接続します。
  • 座標変換:デバイスのカーソル位置と本体の向きを、ゲームワールドにどのように変換するかを定義します。正確でカスタマイズ可能なマッピングを実現します。
  • カーソルデータ:ゲームワールド内でのカーソルの位置を表示します。
  • デバイスデータ:デバイスのリアルタイムの入力データと出力データを表示します。
  • イベント:メインスレッドでトリガーされる Unity イベントにより、シーンとのインタラクションや UI の更新が容易になります。
    • Ready:デバイスが利用可能になったときに通知します。
    • ControlModeChanged:デバイスの制御モード(例:力制御または位置制御)の変更を示します。
    • PowerSupplyStatusChanged:デバイスの電源供給状態の変化を通知します。

inverse3 コントローラーの実行時

Inverse3 ギズモ​

デバイスの位置と、カーソルの最大到達距離を示す視覚的なインジケーターを提供します。色は、左右どちらの手用かによって区別されます。

  • 青は左手用のデバイスを示しています。
  • 赤は右手用のデバイスを示しています。
  • 左右の設定が割り当てられていないデバイスでは、実行時に決定されるまで両方の色が表示されます。

inverse3 「左手用」「右手用」の表示

VerseGrip コントローラー​

Inverse3 コントローラーと同様に、VerseGrip コントローラーは、VerseGrip デバイスをリンクされたゲームオブジェクトに割り当てます。 このコンポーネントは、VerseGrip 独自の入力機能を活用する上で不可欠です。

VerseGrip の主な機能と API​

  • デバイス状態変更イベント:デバイスの向きやボタンの状態の変化を通知します。タイムリーなフィードバックを提供することで、ユーザーの入力やデバイスの向きに応じたインタラクティブなアプリケーションの実現を支援します。

  • ボタンの相互作用:ボタン操作を検出するためのメソッド(GetButton、GetButtonDown、GetButtonUp)を備えており、触覚スレッドへの入力メカニズムを実現します。

  • 添付ファイルの状態:他のデバイスとの接続状態を監視し、Attached および Detached イベントを通じて通知します。これは、デバイスの物理的な構成に依存するアプリケーションに役立ちます。

VerseGrip インスペクタービュー​

VerseGrip コントローラーのインスペクター

  • 装置:特定のデバイスを選択します。<refresh device list> をクリックすると、エディタモードでクライアントがアクティブになり、すべての 装置 ドロップダウンが更新されます。
  • カーソル:VerseGripCursorオブジェクトにリンクされており、デバイスの向きが更新されるたびに回転します。
  • 座標変換:デバイスの向きをゲームワールドにどのように変換するかを定義します。正確でカスタマイズ可能なマッピングを実現します。
  • カーソルデータ:ゲームワールド内でのカーソルの回転を表示します。
  • デバイスデータ:デバイスのローカル回転、ボタンの状態、およびアタッチ状態を表示します。
  • イベント:メインスレッドで Unity イベントを発生させ、シーンや UI とのインタラクションをサポートします。
    • Ready:デバイスが利用可能になったときに通知します。
    • Button Down:ボタンが押されたときにトリガーされます。
    • Button Up:ボタンが外されたときにトリガーされます。
    • 添付:デバイスがInverse3 に接続されたときに表示されます。
    • Detached:デバイスが「Inverse3 」から切り離されたときに表示されます

VerseGrip コントローラーの実行時