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 インスペクタービュー

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

Inverse3 ギズモ
デバイスの位置と、カーソルの最大到達距離を示す視覚的なインジケーターを提供します。色は、左右どちらの手用かによって区別されます。
- 青は左手用のデバイスを示しています。
- 赤は右手用のデバイスを示しています。
- 左右の設定が割り当てられていないデバイスでは、実行時に決定されるまで両方の色が表示されます。

VerseGrip コントローラー
Inverse3 コントローラーと同様に、VerseGrip コントローラーは、VerseGrip デバイスをリンクされたゲームオブジェクトに割り当てます。 このコンポーネントは、VerseGrip 独自の入力機能を活用する上で不可欠です。
VerseGrip の主な機能と API
-
デバイス状態変更イベント:デバイスの向きやボタンの状態の変化を通知します。タイムリーなフィードバックを提供することで、ユーザーの入力やデバイスの向きに応じたインタラクティブなアプリケーションの実現を支援します。
-
ボタンの相互作用:ボタン操作を検出するためのメソッド(
GetButton、GetButtonDown、GetButtonUp)を備えており、触覚スレッドへの入力メカニズムを実現します。 -
添付ファイルの状態:他のデバイスとの接続状態を監視し、
AttachedおよびDetachedイベントを通じて通知します。これは、デバイスの物理的な構成に依存するアプリケーションに役立ちます。
VerseGrip インスペクタービュー

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