본문 바로가기
유니티

유니티) oculus VR 개발_(컨트롤러로 ui 인터랙션 하기)

by zephyrus 2022. 11. 12.

유니티에서 window > packageManager 에서 oculus integration 에셋을 다운받습니다.

해당 에셋은 에셋스토어에서 무료로 다운로드할 수 있습니다.

위 에셋에서 샘플을 참고하여 사용 가능한 기능들을 확인할 수 있습니다.

assets > oculus > vr > prefabs 에 들어가면 바로 사용가능한 프리팹을 볼 수 있습니다.

위 프리팹을 이용하여 기본적인 vr 카메라와 컨트롤러를 사용할 것입니다.

빈 씬을 생성하여 OVRCameraRig를 넣어주고 HandAnchor의 하위에 OVRControllerPrefab 을 넣어줍니다.

OVRCameraRig를 통해서 일반적인 vr 카메라 기능을 쓸수있고

OVRControllerPrefab을 통해 양손 위치에서 컨트롤러를 사용할 수 있습니다.

각 손의 anchor에 컨트롤러를 넣어 주었으니 왼손, 오른손을 구분해야합니다.

인스펙터에서 controller를 L, R Touch로 설정하여 컨트롤러를 구분해줍니다.

그 다음으로 컨트롤러와 인터랙션되는 ui 설정을 할 것 입니다.

스크립트를 따로 추가해서 만들수도 있지만 샘플을 통해 사용해볼겁니다.

assets > oculus > sampleFramework 에서 UIHelpers 프리팹을 가져다 씬에 넣습니다.

 

위 프리팹은 오큘러스 vr용 input module이 들어있고 raycast 기능이 들어있습니다.

해당 프리팹 하위에서 eventSystem을 보면 OVRInputModule이 있습니다.

인스펙터를 보면 컨트롤러의 raycast의 시작점 위치를 RayTransform에 넣어서 설정할 수 있고,

JoyPadClickButton 의 드롭다운을 통해 컨트롤러에서 어떤 버튼을 인풋클릭으로 인식할지 고를 수 있습니다.

indexTrigger로 설정해주면 오큘러스 컨트롤러에서 검지 트리거를 눌렀을때 클릭으로 인식가능합니다.

컨트롤러 버튼에 관한 정보는 아래 문서를 통해 확인 가능합니다.

https://developer.oculus.com/documentation/unity/unity-ovrinput/?locale=ko_KR 

 

Map Controllers | Oculus Developers

 

developer.oculus.com

이벤트 시스템을 설정하였고 다음은 canvas에서 raycast 인식을 vr기준으로 바꿔야합니다.

캔버스를 생성하여 인스펙터를 확인하면 기본적으로 graphicRaycast로 되어있는걸 볼 수 있습니다.

해당 컴포넌트를 지우고 OVRRaycast로 add component 해줍니다.

Blocking Object나 Mask를 통하여 레이가 적용되는것들을 설정해줄수있습니다.

 

이렇게 기본 세팅을 해주고나서 일반적으로 ui를 생성했던것처럼

button이나 slider bar처럼 인터랙션 가능한 ui를 생성하고 인터랙션을 이벤트를주면

vr에서도 똑같이 컨트롤러로 인터랙션이 가능합니다.

 

pc와 vr기기 둘 다에서 원활한 테스트를 위해 초기화시 현재 기기를 체크하여 위 셋팅을 자동으로 설정하게 할 수 있습니다.