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

Inverse3 と VerseGrip のカーソル

Haply Inverse Unity Package には、Inverse3 デバイスおよびVerseGripデバイス向けの専用カーソルコンポーネントが含まれており、Unity環境内での正確な制御とインタラクションを実現できます。 これらのコンポーネント(Inverse3 CursorおよびVerseGrip Cursor)は、対応するデバイスコントローラーから受け取ったデータに基づいて、ゲームオブジェクトの位置と回転を動的に調整するように設計されています。

概要​

カーソルコンポーネントは、物理的なHaply デバイスとUnity内の仮想ゲームオブジェクトをつなぐ役割を果たし、デバイスの位置および回転データをゲームオブジェクトの移動と向きに変換します。 この変換により、ユーザーは直感的に仮想環境と対話することができ、物理的な動きが仮想空間での反応として再現されます。

CursorBase クラス​

カーソルコンポーネントの中核をなすのは CursorBase 授業で、Inverse3Cursor と VerseGripCursor の両方で共有される基本機能を提供します。 これには、デバイスの関連付け、モデルのインスタンス化、表示制御の管理が含まれます。

主なプロパティとメソッド​

  • デバイス:カーソルを制御するデバイスに関連付けます。実行時に自動的に設定されます。
  • モデルプレハブ: カーソルモデル用のプレハブを指定します。このプレハブは ModelParent として自動的にインスタンス化されます。
  • ModelParent: インスタンス化されたモデルプレハブの親トランスフォームを定義します。設定されていない場合は、カーソルのトランスフォームがデフォルトとなります。
  • モデル: シーン内の既存のカーソルモデルを直接参照します。これを設定すると、ModelPrefab インスタンス化は行われません。
  • HideControllerModel:カーソルモデルの表示状態を制御します。ゲームプレイの要件に応じて、表示と非表示を動的に切り替えることができます。
  • 半径:カーソルモデルが球体の場合の半径を表します。モデルのメッシュバウンディングから計算されます。
  • 滑らかさ: PositionSmoothness と RotationSmoothness は、カーソルの位置と回転を滑らかにするためのオプションを提供し、ユーザー体験を向上させます。

注:カーソルコンポーネントでカーソルモデルを正しく参照することは、予期しない動作を防ぐ上で重要です。

カーソル

ハプティックリグで作成されるデフォルトのカーソルモデルには、3つの軸を表す色付きのドットがあります。Forward(青)、Up(緑)、Right(赤)です。 この設計により、仮想環境内でのデバイスの向きを視覚的に把握しやすくなります。キャリブレーション済みのVerseGripでは、Forwardが指し示す方向、Upが上面に合うように設定します。

Inverse3 Cursor コンポーネント​

Inverse3Cursor これは「Inverse3 」デバイス専用であり、デバイスの物理的な位置を反映するように、Unity 内のカーソルのローカル位置を更新します。

PositionSmoothness 設定では、カーソルの動きの滑らかさを調整できます。物理的な動きに対するカーソルの反応を制御することで、ユーザー体験を向上させます。

VerseGrip Cursor コンポーネント​

VerseGripCursor これは VerseGrip デバイスの機能を拡張するもので、デバイスの物理的な回転を反映するように、Unity 内のカーソルの向きを更新します。

useDeviceLocalSpace 設定により、ワールドまたは親オブジェクトの向きに合わせるかどうかを選択できるようになり、設計の柔軟性が高まります。

RotationSmoothness この設定は、カーソルの回転の滑らかさを制御します。これにより、開発者は物理的なVerseGripの向きが変わった際のカーソルの反応を細かく調整することができます。

実装の詳細​

初期化時に、Model が割り当てられていない場合、カーソルコンポーネントは指定された ModelPrefab を ModelParent の子としてインスタンス化し、シーン内での視覚的な表現を確保します。 これらのコンポーネントは、関連する デバイスコントローラ 同期し、物理デバイスの動きに合わせてカーソルの位置と回転をリアルタイムで調整します。

両方のコンポーネントを同じ GameObject にアタッチして位置や回転を制御することも、用途に応じて別々の GameObject にアタッチすることも可能です。これにより、開発者は Unity 上で没入感のあるハプティック体験を作成するための柔軟なツールを活用できます。