Version: 2017.2
__Input for Windows Mixed Reality__
Input for Oculus

Entrada para controladores OpenVR

Para que el Editor de Unity admita controladores con seguimiento OpenVR, el subsistema Unity VR presenta las entradas del controlador VR como joysticks independientes. Utilice la clase UnityEngine.Input para acceder a los valores de los ejes y botones.

La integración de Unity de OpenVR no se refiere a ningún hardware específico cuando se presentan los estados de los ejes y botones. Esta página proporciona las asignaciones de ejes y botones para los tres tipos de controladores compatibles con OpenVR: HTC Vive, Oculus Touch y Valve Knuckles Controllers.

Denominación de convención y detección

Cuando se configuran y conectan correctamente, todos los controladores compatibles con OpenVR se denominan internamente como OpenVR Controller - Left o OpenVR Controller - Right. Acceda a este nombre a través de la lista devuelta por UnityEngine.Input.GetJoystickNames(). Cuando están disponibles, estos controladores aparecen resaltados en verde en el menú de estado de SteamVR cuando se prueban con Steam. Para acceder a este menú, debe tener Steam y SteamVR instalados y ejecutándose en su máquina.

Menú de estado de Steam VR
Menú de estado de Steam VR

Puede probar la disponibilidad de estos controladores comprobando periódicamente su presencia en la lista de nombres de joystick mediante script. Cuando los controladores se apagan o cuando se quitan las baterías, un string vacío reemplaza su nombre en la lista devuelta porUnityEngine.Input.GetJoystickNames(). Cuando los controladores se vuelven a encender, su nombre vuelve a aparecer en la lista de joysticks devueltos.

Mapeos del sistema de entrada de Unity

Esta sección proporciona diagramas para cada tipo de controlador admitido por dispositivos OpenVR, junto con información sobre la asignación de entrada de Unity interna para cada botón del controlador.

Controladores HTC Vive

El siguiente diagrama muestra las diferentes entradas disponibles en los controladores HTC Vive para su uso en aplicaciones de realidad virtual.

HTC Vive controller inputs mapping (Image courtesy of developer.viveport.com)
HTC Vive controller inputs mapping (Image courtesy of developer.viveport.com)
1 Botón de menú
2 Trackpad
3 Botón del sistema
4 Luz de estado
5 Puerto micro-USB
6 Sensor de seguimiento
7 Gatillo
8 Botón de agarre

Controladores táctiles Oculus

El siguiente diagrama muestra las diferentes entradas disponibles en los controladores Oculus Touch para su uso en aplicaciones de realidad virtual.

Correlación de entrada del controlador Oculus Touch (Imagen cortesía de developer.oculus.com)
Correlación de entrada del controlador Oculus Touch (Imagen cortesía de developer.oculus.com)

Controladores de knuckles (nudillos)

El siguiente diagrama muestra las diferentes entradas disponibles cuando se usan controladores Knuckles en aplicaciones de realidad virtual.

Mapeo de entrada del controlador Valve Knuckles (Imagen cortesía de steamcommunity.com)
Mapeo de entrada del controlador Valve Knuckles (Imagen cortesía de steamcommunity.com)

La siguiente tabla enumera las entradas del controlador para cada controlador compatible con OpenVR, sus tipos de interacción, el eje de Unity y los ID de los botones, junto con el rango de valores para cada eje.

HTC Vive Controller Oculus Touch Controller Controlador Knuckles (nudillos) de Valve Tipo de Interacción ID del Botón de Unity ID del Eje de Unity Rango de Valor del Eje de Unity
Left Controller Menu Button (1) Button.Three Left Controller Inner Face Button Presionado 2
Right Controller Menu Button (1) Button.One Right Controller Inner Face Button Presionado 0
Left Controller Outer Face Button Presionado 3
Left Controller Outer Face Button Presionado 1
Left Controller Trackpad (2) Button.PrimaryThumbstick Left Controller Trackpad Presionado 8
Right Controller Trackpad (2) Button.SecondaryThumbstick Right Controller Trackpad Presionado 9
Left Controller Trackpad (2) Button.PrimaryThumbstick Left Controller Trackpad Touch 16
Right Controller Trackpad (2) Button.SecondaryThumbstick Right Controller Trackpad Touch 17
Left Controller Trackpad (2) Axis2D.PrimaryThumbstick Left Controller Trackpad Movimiento Horizontal 1 –1.0 to 1.0
Left Controller Trackpad (2) Axis2D.PrimaryThumbstick Left Controller Trackpad Movimiento Vertical 2 –1.0 to 1.0
Right Controller Trackpad (2) Axis2D.SecondaryThumbstick Right Controller Trackpad Movimiento Horizontal 4 –1.0 to 1.0
Right Controller Trackpad (2) Axis2D.SecondaryThumbstick Right Controller Trackpad Movimiento Vertical 5 –1.0 to 1.0
Left Controller Trigger (7) Axis1D.PrimaryIndexTrigger Left Controller Trigger Touch 14
Right Controller Trigger (7) Axis1D.SecondaryIndexTrigger Right Controller Trigger Touch 15
Left Controller Trigger (7) Axis1D.PrimaryIndexTrigger Left Controller Trigger Apretar 9 0.0 to 1.0
Right Controller Trigger (7) Axis1D.SecondaryIndexTrigger Right Controller Trigger Apretar 10 0.0 to 1.0
Left Controller Grip Button (8) Axis1D.PrimaryHandTrigger Left Controller Grip Average Apretar 11 0.0 to 1.0
Right Controller Grip Button (8) Axis1D.SecondaryHandTrigger Right Controller Grip Average Apretar 12 0.0 to 1.0
Left Controller Index Finger Cap Sensor 20 0.0 to 1.0
Right Controller Index Finger Cap Sensor 21 0.0 to 1.0
Left Controller Middle Finger Cap Sensor 22 0.0 to 1.0
Right Controller Middle Finger Cap Sensor 23 0.0 to 1.0
Left Controller Ring Finger Cap Sensor 24 0.0 to 1.0
Right Controller Ring Finger Cap Sensor 25 0.0 to 1.0
Left Controller Pinky Finger Cap Sensor 26 0.0 to 1.0
Right Controller Pinky Finger Cap Sensor 27 0.0 to 1.0

Nota: Las funciones de hardware que no se enumeran en la tabla anterior no se exponen a través de la API de OpenVR y, por lo tanto, no se exponen a través del sistema de entrada de Unity.

Diferencias del controlador importantes

Al desarrollar aplicaciones para admitir dispositivos OpenVR, es importante tener en cuenta ciertas diferencias en los desencadenantes de eventos de entrada y las tasas de respuesta para los botones en los tres controladores.

Los eventos de entrada Unity Touch difieren para cada controlador de plataforma:

  • El Event System genera eventos Input Touch para los gatillos en los controladores HTC Vive cuando el usuario comienza a apretar el gatillo.
  • The Event System generates Input Touch events for the triggers on Oculus Touch and Valve Knuckles controllers when Unity Input detects a touch - no trigger squeeze is necessary.

El gatillo de agarre difiere entre las plataformas:

  • Los controladores HTC Vive tienen dos botones de agarre, pero ambos se asignan al mismo eje. El valor de estos botones es 0.0 cuando no se presiona y 1.0 cuando se presiona (los valores intermedios entre 0.0 y 1.0 no son posibles).

  • El agarre en el Controlador Touch de Oculus es un disparador analógico con un rango de 0.0 a 1.0 (valores intermedios son posibles).

  • El agarre en el controlador Valve Knuckles es un promedio ponderado de los valores de entrada para cada uno de los sensores táctiles individuales.

__Input for Windows Mixed Reality__
Input for Oculus