Unity 입력 포팅 가이드
다음 두 가지 방법 중 하나를 사용하여 입력 논리를 Windows Mixed Reality 포지션할 수 있습니다.
- Unity의 일반적인 Input.GetButton 또는 Input.GetAxis API 는 여러 플랫폼에 걸쳐 있습니다.
- UnityEngine.XRModule API는 모션 컨트롤러 및 HoloLens 손용으로 더 풍부한 데이터를 제공합니다.
일반 Input.GetButton 및 Input.GetAxis API
Unity는 현재 일반 Input.GetButton
및 Input.GetAxis
API를 사용하여 Oculus SDK 및 OpenVR SDK에 대한 입력을 노출합니다. 앱이 이미 이러한 API를 입력에 사용하는 경우 이러한 API는 Windows Mixed Reality 모션 컨트롤러를 지원하는 가장 쉬운 경로입니다. 입력 관리자에서 단추와 축을 다시 매핑하기만 하면 됩니다.
자세한 내용은 Unity 단추/축 매핑 테이블 및 Common Unity API 개요를 참조하세요.
중요
HP Reverb G2 컨트롤러를 사용하는 경우 추가 입력 매핑 지침은 Unity의 HP Reverb G2 컨트롤러 를 참조하세요.
XR 입력 API
Unity 릴리스는 XR을 단계적으로 폐지했습니다 . XR SDK에 찬성하는 WSA API. 새 프로젝트의 경우 처음부터 XR 입력 API를 사용하는 것이 가장 좋습니다. 자세한 내용은 Unity XR 입력을 참조하세요.
앱이 각 플랫폼에 대한 사용자 지정 입력 논리를 이미 빌드하는 경우 UnityEngine.InputSystem.XR 네임스페이스에서 Windows 관련 공간 입력 API를 사용할 수 있습니다. 이러한 API를 사용하면 위치 정확도 또는 원본 종류와 같은 추가 정보에 액세스하여 HoloLens에서 손과 컨트롤러를 구분할 수 있습니다.
참고
HP Reverb G2 컨트롤러를 사용하는 경우 터치 패드 데이터 없이 false를 반환하는 를 제외한 InteractionSource.supportsTouchpad
모든 입력 API가 계속 작동합니다.
그립 포즈 및 포인터 포즈
Windows Mixed Reality 다양한 폼 팩터에서 모션 컨트롤러를 지원합니다. 각 컨트롤러의 디자인은 사용자의 손 위치와 앱이 컨트롤러를 렌더링할 때 가리키는 데 사용하는 자연스러운 정방향 간의 관계에서 다릅니다.
이러한 컨트롤러를 더 잘 표현하기 위해 각 상호 작용 소스, 그립 포즈 및 포인터 포즈에 대해 두 가지 종류의 포즈를 조사할 수 있습니다. Unity 월드 좌표로 모든 포즈 좌표를 표현합니다.
그립 포즈
그립 포즈는 HoloLens에서 감지한 손바닥 또는 모션 컨트롤러를 들고 있는 손바닥의 위치를 나타냅니다. 몰입형 헤드셋에서 이 포즈를 사용하여 사용자의 손이나 칼이나 총과 같은 사용자의 손에 들고 있는 물체를 렌더링합니다.
- 그립 위치는 컨트롤러를 자연스럽게 잡을 때 손바닥 중심이며, 그립 내의 위치를 가운데에 맞도록 왼쪽 또는 오른쪽으로 조정됩니다.
- 그립 방향의 오른쪽 축은 손바닥, 왼쪽 손바닥에서 앞으로, 오른쪽 손바닥에서 뒤로, 손을 완전히 열어 평평한 다섯 손가락 포즈를 형성하는 광선입니다.
- 그립 방향의 전방 축은 컨트롤러를 들고 있는 것처럼 손을 부분적으로 닫을 때 엄지 손가락이 아닌 손가락으로 형성된 튜브를 통과하는 광선입니다.
- 그립 방향의 위쪽 축은 오른쪽 및 정방향 정의에 내포된 위쪽 축입니다.
Unity의 XR을 통해 그립 포즈에 액세스합니다 . InputTracking.GetNodeStates API(예: XRNodeState.TryGetPosition 또는 XRNodeState.TryGetRotation).
포인터 포즈
포인터 포즈는 앞으로 가리키는 컨트롤러의 끝을 나타냅니다. 이 포즈는 컨트롤러 모델 자체를 렌더링할 때 UI를 가리키는 광선 캐스팅에 가장 적합합니다.
포인터 포즈는 Windows MR 관련 API를 통해서만 Unity에서 InteractionSourceNode.Pointer
사용할 수 있으며 인수sourceState.sourcePose.TryGetPosition/Rotation
로 전달됩니다.