Version: 2019.2
Windows Mixed Reality の入力
Oculus の入力

OpenVR コントローラーの入力

Unity represents VR controller inputs as separate joysticks. Use the UnityEngine.Input class to access button and axis values. The OpenVR Unity integration doesn’t refer to any specific hardware when presenting axis and button states.

This page provides the axis and button mappings for the three types of controllers supported by OpenVR:

  • HTC Vive
  • Oculus Touch
  • Valve Index

Note: Unity doesn’t support individual finger tracking information for Valve Index controllers.

名前の法則と検出

正しく設定され接続されると、OpenVR 互換コントローラーはすべて内部的に、OpenVR Controller - Left または OpenVR Controller - Right のいずれかに命名されます。この名前には、UnityEngine.Input.GetJoystickNames() によって返されたリストを通してアクセスします。利用可能な場合、これらのコントローラーは Steam でテストされたときに SteamVR ステータスメニューの緑色でハイライト表示されます。このメニューにアクセスするには、Steam と SteamVR の両方をマシンにインストールして実行する必要があります。

Steam VR ステータスメニュー
Steam VR ステータスメニュー

スクリプトを使ってジョイスティック名のリストでこれらのコントローラーの存在を定期的にチェックして、それらが使用可能であるかをテストできます。コントローラーの電源がオフであったり、バッテリーがなくなると、UnityEngine.Input.GetJoystickNames() によって返されるリストの名前が空の文字列に変わります。コントローラーの電源を再びオンにすると、その名前がリストに再表示されます。

Unity 入力システムマッピング

This section provides mapping information for each type of controller that OpenVR devices supports.

HTC Vive コントローラー

下の図は、VR アプリケーションで使用する HTC Vive コントローラーで使用可能な様々な入力を表示しています。

HTC Vive コントローラー入力マップ (出典 developer.viveport.com)
HTC Vive コントローラー入力マップ (出典 developer.viveport.com)
1 メニューボタン
2 トラックパッド
3 システムボタン
4 ステータスライト
5 マイクロ USB ポート
6 トラックセンサー
7 トリガー
8 グリップボタン

Oculus Touch コントローラー

下の図は、VR アプリケーションで使用する Oculus Touch コントローラーで使用可能な様々な入力を表示しています。

Oculus Touch コントローラー入力マップ (出典 developer.viveport.com)
Oculus Touch コントローラー入力マップ (出典 developer.viveport.com)

Valve Index controllers

下の表は各 OpenVR がサポートするコントローラー、インタラクションタイプ、Unity の軸とボタンの ID、各軸の値の範囲を表しています。

HTC Vive コントローラー Oculus Touch コントローラー Valve Index Controller インタラクションタイプ Unity Button ID Unity Axis ID Unity Axis 値の範囲
Left Controller Menu Button (1) Button.Three Left Controller Inner Face Button 押す 2
Right Controller Menu Button (1) Button.One Right Controller Inner Face Button 押す 0
Left Controller Outer Face Button 押す 3
Right Controller Outer Face Button 押す 1
Left Controller Trackpad (2) Button.PrimaryThumbstick Left Controller Trackpad 押す 8
Right Controller Trackpad (2) Button.SecondaryThumbstick Right Controller Trackpad 押す 9
Left Controller Trackpad (2) Button.PrimaryThumbstick Left Controller Trackpad 接触 16
Right Controller Trackpad (2) Button.SecondaryThumbstick Right Controller Trackpad 接触 17
Left Controller Trackpad (2) Axis2D.PrimaryThumbstick Left Controller Trackpad 水平移動 1 –1.0 から 1.0
Left Controller Trackpad (2) Axis2D.PrimaryThumbstick Left Controller Trackpad 垂直移動 2 –1.0 から 1.0
Right Controller Trackpad (2) Axis2D.SecondaryThumbstick Right Controller Trackpad 水平移動 4 –1.0 から 1.0
Right Controller Trackpad (2) Axis2D.SecondaryThumbstick Right Controller Trackpad 垂直移動 5 –1.0 から 1.0
Left Controller Trigger (7) Axis1D.PrimaryIndexTrigger Left Controller Trigger 接触 14
Right Controller Trigger (7) Axis1D.SecondaryIndexTrigger Right Controller Trigger 接触 15
Left Controller Trigger (7) Axis1D.PrimaryIndexTrigger Left Controller Trigger 握る 9 0.0 から 1.0
Right Controller Trigger (7) Axis1D.SecondaryIndexTrigger Right Controller Trigger 握る 10 0.0 から 1.0
Left Controller Grip Button (8) Axis1D.PrimaryHandTrigger Left Controller Grip Average 握る 11 0.0 から 1.0
Right Controller Grip Button (8) Axis1D.SecondaryHandTrigger Right Controller Grip Average 握る 12 0.0 から 1.0

コントローラーの重要な違い

OpenVR デバイスをサポートするアプリケーションを開発する場合は、3 つのコントローラーすべてのボタンの入力イベントトリガーとレスポンスレートの違いに注意することが重要です。

Unity Touch の Input イベントは、各プラットフォームのコントローラーによって異なります。

  • Event System は、ユーザーがトリガーを握り始めると、HTC Vive コントローラーのトリガーの Input Touch イベントを発します。
  • The Event System generates Input Touch events for the triggers on Oculus Touch and Valve Index controllers when Unity Input detects a touch - no trigger squeeze is necessary.

The grip trigger differs between HTC Vive and Oculus Touch controllers as follows:

  • HTC Vive コントローラーには両サイドに Grip ボタンがありますが、両方とも同じ軸にマッピングされます。押されていないときの値は 0.0 で、押されたときの値は 1.0 です (0.0 と 1.0 の間の値はありません)。

  • Oculus Touch コントローラーのグリップは、範囲が 0.0 から 1.0 のアナログトリガーです (0.0 と 1.0 の間の値は可能です)。

Windows Mixed Reality の入力
Oculus の入力