ジェスチャ
ジェスチャは人の手に基づいた入力イベントです。MRTK にはジェスチャ入力イベントを発生させる2種類のデバイスがあります。
HoloLens のような Windows Mixed Reality デバイス。これは、ピンチ動作 (「エア タップ」) とタップ & ホールド ジェスチャを扱います。
HoloLens のジェスチャに関するより多くの情報は、Windows Mixed Reality Gestures ドキュメント をご覧ください。
WindowsMixedRealityDeviceManager
は、HoloLens デバイスからの Unity のジェスチャ イベントを利用するために、Unity XR.WSA.Input.GestureRecognizer をラップしています。タッチ スクリーン デバイス。
UnityTouchController
は、物理的なタッチ スクリーンをサポートする Unity Touch class をラップしています。
これらの入力ソースの両方で、Unity の Touch と Gesture イベントを MRTK の Input Actions (入力アクション) にそれぞれ変換するため、 Gesture Settings プロファイルを使用します。このプロファイルは、Input System Settings プロファイルの下にあります。
Gesture Events (ジェスチャ イベント)
ジェスチャ イベントは、以下のジェスチャ ハンドラー インターフェイスの1つを実装したものによって、受け取られます。IMixedRealityGestureHandler
または IMixedRealityGestureHandler<TYPE>
(イベント ハンドラー の表をご覧ください).
ジェスチャ イベント ハンドラーの実装例については、サンプル シーン をご覧ください。
汎用のバージョンを実装する場合、OnGestureCompleted と OnGestureUpdated イベントは、以下の型のデータを受け取ることができます。
Vector2
- 2D 位置のジェスチャ。タッチ スクリーンによって、deltaPosition
を通知するために生成される。Vector3
- 3D 位置のジェスチャ。HoloLens によって、以下を通知するために生成される。- マニピュレーション イベントの
cumulativeDelta
- ナビゲーション イベントの
normalizedOffset
- マニピュレーション イベントの
Quaternion
- 3D 回転のジェスチャ。カスタムの入力ソースで利用可能だが、現在は存在するどの入力ソースからも生成されていない。MixedRealityPose
- 3D 位置と回転が組み合わさったジェスチャ。カスタムの入力ソースで利用可能だが、現在は存在するどの入力ソースからも生成されていない。
イベントの順序
ユーザーの入力に応じて、2つの主なイベントのチェーンがあります。
"Hold (ホールド)":
- タップをホールド:
- Manipulation 開始
- HoldStartDuration を超えてタップをホールド:
- Hold 開始
- タップをリリース:
- Hold 完了
- Manipulation 完了
- タップをホールド:
"Move (動かす)":
- タップをホールド:
- Manipulation 開始
- HoldStartDuration を超えてタップをホールド:
- Hold 開始
- NavigationStartThreshold を超えて手を動かす:
- Hold キャンセル
- Navigation 開始
- タップをリリース:
- Manipulation 完了
- Navigation 完了
- タップをホールド:
サンプル シーン
HandInteractionGestureEventsExample (Assets/MRTK/Examples/Demos/HandTracking/Scenes) シーンでは、ポインターの結果を使って、オブジェクトをヒットした位置に生成する方法を示しています。
GestureTester
(Assets/MRTK/Examples/Demos/HandTracking/Script) スクリプトは、ジェスチャ イベントを GameObject を介して可視化する実装例です。このハンドラー関数はインジケーター オブジェクトの色を変え、最後に記録されたイベントをシーンのテキスト オブジェクトに表示します。