Unity URP / XR toolKit을 이용한 VR환경 세팅 2
지난번에 이어 XR Toolkit의 기본 기능을 하나씩 살펴보려 한다.
지난번 프로젝트에 추가로 작업을 하면 되니 프로젝트 깃헙을 받지 않은 분은
https://labotary.tistory.com/15
Unity URP / XR toolKit을 이용한 VR환경 세팅
환경 정의 Unity Version : Unity 2019.3.6f1 VR : Vive VR멀티 프로젝트를 하면서 캐릭터 이동을 해결하려다 보니 유니티에서 XR ToolKit을 내놓았다는걸 떠올리고 지금까지 SteamVR input과 VIveInputManager랑..
labotary.tistory.com
여기에서 다운받으면 된다.
프로젝트에 인터렉트를 할 큐브를 하나 생성해주자.
그리고 큐브에 XR Grab Interactable 스크립트를 넣어주도록 하자.
이름에서도 유추할수 있듯 그랩 액션에 대한 XR Toolkit의 기본지원 스크립트다.
해당 스크립트의 Interactable Events를 열어보면 여러가지 상황에 대한 이벤트들이 정의되어있다.
이전 게시글에서는 양손에 달려있는 레이 관련 옵션스크립트들을 그대로 사용하였지만, 이번에는 XR Controller 를 제외하고는 다 지워주도록 하자.
그리고 XR Direct Interactor 스크립트를 넣어주도록 하자.
해당 스크립트를 보면 Interaction Manager 필드는 XR Rig를 생성하면 자동으로 생성되는 interaction Manager를 자동으로 받아와 준다.
그 아래의 Interaction Layer Mask는 상호작용할 오브젝트의 레이어를 정해줄 수 있다.
Attach Transfrom 필드는 특정한 트랜스폼에 상호작용할 오브젝트를 attach하고 싶을때 해당 트랜스폼을 넣어주면 된다.
사운드 이벤트와 햅틱이벤트는 차후에 알아보도록 하겠다.
오른손 왼손이 모델이 없으니 일단 스페어를 하나 만들어주도록 하고 오른손 왼손에 콜라이더를 적절하게 붙여주도록 하자. 이때 콜라이더는 트리거 옵션이 선택 되어있어야 한다.
이제 실행을 시켜보면 오른손 / 왼손의 그립버튼을 큐브에 가져다대고 누르면 잘 달려있는것을 볼 수 있다.
이제 큐브를 들었으니 무언가 다른 버튼으로도 이벤트를 주고 싶다면 조금만 더 과정을 거치면 된다.
그랩버튼을 누른 상태에서 큐브가 손에 달려있을때, 트리거버튼을 누르면 큐브의 색이 변하도록 하는 스크립트를 작성해주도록 한다.
코드는 정말 단순하다.
큐브의 XR Grab Interactable 스크립트를 보면 Interactable Events가 있는데, 이를 열어보면 여러가지 이벤트들이 들어가있다. 이 중 OnActivate와 OnDeactivate이벤트를 세팅해주는데,
이벤트를 제어해주는 버튼은 오른손 / 왼손의 Active Usage 필드에서 세팅해줄 수 있다.
이제 머테리얼을 만들어주고, 스크립트를 큐브에 넣어준다음 세팅을 해주면 준비는 완료되었다.
정상적으로 잘 작동하는 것을 확인할 수 있다.
추가로, 처음 영상과 두번째 영상에서 카메라 클리핑을 더 타이트하게 주었다.
첫번째 영상에서 보면 카메라 가까이 오브젝트가 다가가면 클리핑이 멀어 오브젝트를 투과하는걸 볼 수 있는데
이를 낮춰서 카메라 가까이 물체가 오더라도 투과하지 않고 물제가 정상적으로 보이도록 하였다.
무언가 많은것을 하진 않았지만, XR Toolkit에서 컨트롤러를 어떻게 다루는지에 대해 알아보는 시간이었다.