Version: 2019.2
Windows 혼합 현실 입력
오큘러스 입력

OpenVR 컨트롤러 입력

Unity는 VR 컨트롤러 입력을 별도 조이스틱으로 표시합니다. UnityEngine.Input 클래스를 사용하여 버튼 및 축 값에 액세스하십시오. 축 및 버튼 상태를 표시할 때 OpenVR Unity 통합은 특정 하드웨어를 참조하지 않습니다.

이 페이지에는 OpenVR이 지원하는 세 가지 타입의 컨트롤러에 대한 축 및 버튼 매핑이 나와 있습니다.

  • HTC Vive
  • Oculus Touch
  • Valve Index

참고: Unity는 Valve Index 컨트롤러를 위한 개별 손가락 추적 정보를 지원하지 않습니다.

명명 규칙 및 감지

올바르게 설정되고 연결된 OpenVR 호환 컨트롤러의 이름은 내부적으로 OpenVR Controller - Left 또는 OpenVR Controller - Right 로 지정됩니다. UnityEngine.Input.GetJoystickNames()가 반환하는 목록을 통해 이러한 이름을 확인할 수 있습니다. 컨트롤러가 사용 가능하다면, Steam으로 테스트할 때 SteamVR 상태 메뉴에 해당 컨트롤러가 녹색으로 강조 표시됩니다. 이 메뉴는 Steam 및 SteamVR가 모두 컴퓨터에 설치되어 있고 실행 중이어야 사용할 수 있습니다.

SteamVR 상태 메뉴
SteamVR 상태 메뉴

스크립트를 통해 조이스틱 이름 목록에 컨트롤러가 있는지 주기적으로 확인하여 해당 컨트롤러의 사용 가능 여부를 테스트할 수 있습니다. 컨트롤러를 끄거나 컨트롤러에서 배터리를 분리하면 UnityEngine.Input.GetJoystickNames()가 반환하는 목록에서 해당 컨트롤러의 이름이 사라지고 빈 문자열로 대체됩니다. 컨트롤러를 다시 켜면 해당 컨트롤러의 이름이 반환된 조이스틱 목록에 다시 표시됩니다.

Unity 입력 시스템 매핑

이 섹션은 OpenVR 기기가 지원하는 각 컨트롤러 타입에 대한 매핑 정보를 제공합니다.

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.oculus.com)
Oculus Touch 컨트롤러 입력 매핑(이미지 제공: developer.oculus.com)

Valve Index 컨트롤러

아래 표에서는 각 OpenVR 지원 컨트롤러의 컨트롤러 입력, 컨트롤러의 상호작용 타입, Unity 버튼 ID와 축 ID, 각 축의 값 범위를 확인할 수 있습니다.

HTC Vive 컨트롤러 Oculus Touch 컨트롤러 Valve Index 컨트롤러 인터랙션 타입 Unity 버튼 ID Unity 축 ID Unity 축의 값 범위
왼쪽 컨트롤러 메뉴 버튼(1) Button.Three 왼쪽 컨트롤러 안쪽 버튼 누름 2
오른쪽 컨트롤러 메뉴 버튼(1) Button.One 오른쪽 컨트롤러 안쪽 버튼 누름 0
왼쪽 컨트롤러 바깥쪽 버튼 누름 3
오른쪽 컨트롤러 바깥쪽 버튼 누름 1
왼쪽 컨트롤러 트랙패드(2) Button.PrimaryThumbstick 왼쪽 컨트롤러 트랙패드 누름 8
오른쪽 컨트롤러 트랙패드(2) Button.SecondaryThumbstick 오른쪽 컨트롤러 트랙패드 누름 9
왼쪽 컨트롤러 트랙패드(2) Button.PrimaryThumbstick 왼쪽 컨트롤러 트랙패드 터치 16
오른쪽 컨트롤러 트랙패드(2) Button.SecondaryThumbstick 오른쪽 컨트롤러 트랙패드 터치 17
왼쪽 컨트롤러 트랙패드(2) Axis2D.PrimaryThumbstick 왼쪽 컨트롤러 트랙패드 가로 이동 1 –1.01.0
왼쪽 컨트롤러 트랙패드(2) Axis2D.PrimaryThumbstick 왼쪽 컨트롤러 트랙패드 세로 이동 2 –1.01.0
오른쪽 컨트롤러 트랙패드(2) Axis2D.SecondaryThumbstick 오른쪽 컨트롤러 트랙패드 가로 이동 4 –1.01.0
오른쪽 컨트롤러 트랙패드(2) Axis2D.SecondaryThumbstick 오른쪽 컨트롤러 트랙패드 세로 이동 5 –1.01.0
왼쪽 컨트롤러 트리거(7) Axis1D.PrimaryIndexTrigger 왼쪽 컨트롤러 트리거 터치 14
오른쪽 컨트롤러 트리거(7) Axis1D.SecondaryIndexTrigger 오른쪽 컨트롤러 트리거 터치 15
왼쪽 컨트롤러 트리거(7) Axis1D.PrimaryIndexTrigger 왼쪽 컨트롤러 트리거 압착 9 0.01.0
오른쪽 컨트롤러 트리거(7) Axis1D.SecondaryIndexTrigger 오른쪽 컨트롤러 트리거 압착 10 0.01.0
왼쪽 컨트롤러 그립 버튼(8) Axis1D.PrimaryHandTrigger 왼쪽 컨트롤러 그립 평균 압착 11 0.01.0
오른쪽 컨트롤러 그립 버튼(8) Axis1D.SecondaryHandTrigger 오른쪽 컨트롤러 그립 평균 압착 12 0.01.0

컨트롤러의 주요 차이점

OpenVR 기기를 지원하는 애플리케이션을 개발할 때에는 세 가지 컨트롤러의 버튼 입력 이벤트 트리거 및 응답 속도와 관련된 일부 차이점을 알아두는 것이 좋습니다.

Unity 터치 입력 이벤트는 플랫폼 컨트롤러에 따라 조금 차이가 있습니다.

  • HTC Vive 컨트롤러에서는 사용자가 트리거를 꾹 눌러야 이벤트 시스템이 입력 터치 이벤트를 생성합니다.
  • Unity 입력이 터치(트리거 압착 불필요)를 감지하면 이벤트 시스템이 Oculus Touch 및 Valve Index 컨트롤러의 트리거에 대한 입력 터치 이벤트를 생성합니다.

HTC Vive와 Oculus Touch 컨트롤러의 그립 트리거는 서로 다릅니다.

  • HTC Vive 컨트롤러에는 각각 그립 버튼이 두 개씩 있지만, 모두 동일한 축에 매핑됩니다. 버튼을 누르지 않으면 값이 0.0이고, 누르면 값이 1.0이 됩니다. 0.0과 1.0 사이의 중간 값을 지정하는 것은 불가능합니다.

  • Oculus Touch 컨트롤러의 그립은 범위가 0.01.0인 아날로그 트리거입니다. 중간 값을 지정할 수 있습니다.

Windows 혼합 현실 입력
오큘러스 입력