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

Inverse3 およびVerseGrip-Controller

Inverse3 およびVerseGripというコントローラーは、それぞれの物理デバイスをUnity内のGameObjectとシームレスに連携させるよう設計されています。これはDevice Mapperを介して行われます。 高頻度のセンサーデータを活用することで、これらのコンポーネントは仮想環境内で正確かつ反応の良い操作を実現します。 その機能はロジックと性能の両面で調和が取れており、一貫性のあるユーザー体験を保証します。

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

Inverse3-コントローラー​

「Inverse3-Controller」コンポーネントは、「Inverse3 」デバイスを対応するGameObjectに関連付ける上で極めて重要です。 このコンポーネントは、高頻度のセンサーデータを使用して、仮想空間におけるデバイスの物理的な動きを正確に再現します。主な機能は以下の通りです:

の主な機能とAPIInverse3​

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

  • 位置と速度の取得: 以下のような機能を備えています CursorPosition, CursorVelocity, CursorLocalPosition und CursorLocalVelocity デバイスの現在の状態を取得するためです。これらは、物理的な動きを仮想空間に正確に反映させる上で不可欠です。

  • クラフト制御および位置制御: 以下のようなメソッドを提供します SetCursorForce und SetCursorPosition デバイスを直接制御するためです。開発者はこれを利用して力を加えたり位置を指定したりすることで、仮想的なインタラクションを向上させることができます。

インスペクター表示:Inverse3​

Inverse3-エディタ内のコントローラー

  • 装置: 特定のデバイスを選択します。をクリックすると <refresh device list> Device Mapper を使用してエディタモードでデバイスを取得し、すべての 装置-ドロップダウンメニュー-
  • 利き手:デバイスの利き手設定に基づいてフィルタリングします。
  • カーソル:オブジェクト「Inverse3Cursor」にリンクされており、デバイスの位置情報の更新に合わせて同期して移動します。
  • 本文:Inverse3Body と関連付けられ、空間におけるデバイスの物理的な向きを表します。
  • 座標変換:カーソルの位置やデバイスの向きをゲーム内にどのように反映するかを決定します。これにより、正確でカスタマイズ可能なマッピングが保証されます。
  • カーソルデータ:ゲーム内のカーソルの位置を表示します。
  • デバイスデータ:デバイスの入出力データをリアルタイムで表示します。
  • イベント: Unityのイベントはメインスレッドで発生し、シーンとのインタラクションやUIの更新をサポートします。
    • 「準備完了」:デバイスが使用可能な状態になったことを示します。
    • ControlModeChanged:デバイスの制御モード(例:力制御や位置制御)の変更を表示します。
    • PowerSupplyStatusChanged:デバイスの電源ステータスの変更を通知します。

Inverse3-実行時のコントローラ

Gizmos 提供Inverse3​

デバイスの位置やカーソルの到達可能最大距離を視覚的に表示します。色分けは利き手に応じて行われます。

  • 青色は左利き用機器を示しています。
  • 「Rot」は右利き用機器を示しています。
  • 左右の区別が設定されていないデバイスでは、実行時に左右が決定されるまで、両方の色が表示されます。

Inverse3 左右

VerseGrip-コントローラー​

Inverse3 コントローラーと同様に、VerseGripコントローラーは、VerseGripデバイスを関連付けられたGameObjectに割り当てます。 このコンポーネントは、VerseGrip独自の入力機能を利用するために不可欠です。

VerseGripの主な機能とAPI​

  • イベント「デバイスの状態が変更されました」:デバイスの向きやボタンの状態の変更を通知します。これにより、ユーザー入力やデバイスの向きに対してタイムリーなフィードバックを提供し、インタラクティブなアプリケーションをサポートします。

  • キー操作: キー操作を検出するためのメソッドを提供します(GetButton, GetButtonDown, GetButtonUp) これにより、ハプティックスレッド内での入力メカニズムが可能になります。

  • 接続状態: 他のデバイスとの接続状態を監視し、イベントを通じてその状態を通知します Attached und Detached. これは、デバイスの物理的な構成に依存するアプリケーションにおいて有用です。

VerseGripのインスペクター表示​

エディタ内のVerseGrip-Controller

  • 装置: 特定のデバイスを選択します。をクリックすると <refresh device list> クライアントをエディタモードに切り替え、すべてを更新します 装置-ドロップダウンメニュー-
  • カーソル:VerseGripCursor オブジェクトにリンクされており、デバイスの向きが更新されるたびに回転します。
  • 座標変換:デバイスの向きがゲームの世界にどのように反映されるかを決定します。これにより、正確でカスタマイズ可能なマッピングが保証されます。
  • カーソルデータ:ゲーム内のカーソルの回転角度を表示します。
  • デバイス情報:デバイスのローカル回転、ボタン状態、および接続状態を表示します。
  • イベント: シーンやUIとのインタラクションをサポートするために、メインスレッドでUnityイベントをトリガーします。
    • 「準備完了」:デバイスが使用可能な状態になったことを示します。
    • キーが押された:キーが押されるとトリガーされます。
    • キーの離し:キーが離されたときにトリガーされます。
    • 「接続中」:デバイスがInverse3 に接続されている状態を示します。
    • 切断:デバイスがInverse3 から切断されるタイミングを表示します

実行時のVerseGrip-Controller