[Unity]09.HTC Vive 사용 #2 - 물체 잡기

안녕하세요 유랑입니다.



오늘은 HTC Vive의 컨트롤러를 이용해서 물체를 잡고 던지는 방법에 대해서 알아보겠습니다.




1. 물체 잡기



HTC Vive 컨트롤러는 Trigger, Grip, Touchpad 등 다양한 버튼과

속도와 각속도를 측정하여 제공해 줍니다.

트리거 버튼을 이용해서 잡기와 터치패드 버튼을 이용해서 텔레포트를 구현해 보도록 하겠습니다.







1-1) Vive 설정 - ㉠프로젝트 세팅



프로젝트 이름과 위치를 지정한 후 생성해 주겠습니다.






HTCVive를 사용하기 위해서는 XR Settings에서 

Virtual Reality Supported를 체크 후 OpenVR로 설정해 주세요!!!






1-2) Vive 설정 - ㉡SteamVR



HTC Vive를 사용하기 전 에셋 스토어에서 SteamVR Plugin을 다운 받겠습니다.

해당 에셋은 VR개발에 편리한 프리팹과 씬을 제공합니다.






다운받으면 UnitySettingWindow 창이 뜰겁니다.

해당 창은 Vive 개발환경을 자동으로 설정해 주기에

Accept All을 클릭해 주세요^^






1-3) Vive 설정 - ㉢Camera 프리팹



CameraRig는 헤드셋과 컨트롤러를 동기화 시켜주는 프리팹입니다.

게임을 실행하면 헤드 트래킹이 되며 컨트롤러가 동기화 되는걸 확인할 수 있습니다.

SteamVR에는 모든 VR카메라의 렌더링을 처리하는 Steam VR_Render 요소가 포함되어 있습니다.

CameraRig만 있어도 자동으로 해당 오브젝트를 인스턴스화 시켜줍니다.

기존의 Main Camera는 꼭 삭제해 주세요!!!






CameraRig 위치는 다음과 같이 조정해 주세요.

안하셔도 크게 상관은 없습니다.






1-4) Vive 설정 - ㉣컨트롤러 키 매핑



바이브 컨트롤러는 버튼이 다양하게 존재하기에 설정이 필요합니다.

Window => SteamVR Input을 클릭해 실행시켜 주세요.






컨트롤러 키 매핑 예제 파일을 사용할지 여부를 물어보는데 예를 눌러주세요.

이렇게 하면 프로젝트 루트에 여러 개의 JSON 파일이 생성됩니다.

action.json에는 기본 바인딩 세팅이 포함되어 있으며,

다른 JSON파일에는 각 작업에 대한 기본 바인딩이 포함되어 있습니다.





- 1.Action Sets: 사용자 지정 액션 설정이나 새로운 액션 작성이 가능

- 2.Actions: 입력과 출력으로 쓸 변수들 설정이 가능합니다.

- 3.Save and generate: 액션 설정값을 JSON에 저장하고 해당 클래스도 제공합니다.

- 4.Open binging UI: 하드웨어(컨트롤러, 헤드셋)에 바인딩 작업을 할 수 있습니다.





platformer와 buggy는 디폴트로 설정된 액션 설정들입니다.

platformer는 쓰이지 않으므로 삭제해 주겠습니다.







Actions에서 해당 액션을 제외한 나머지는 삭제해 주겠습니다.

그리고 GrabGrip의 이름을 Grip으로 변경해 주세요.





설정이 끝났으면 Save and generate를 통해서 액션 설정값들을 JSON파일로 저장해 줍시다.

그러면 프로젝트 뷰에 자동으로 SteamVR_Input폴더가 생기게 됩니다.








1-5) Vive 설정 - ㉤BindingUI



Open binding UI를 통해서 바인딩 작업이 가능합니다.

해당 컨트롤러에 설정한 키 값을 매핑할 수 있다는건데요.

이 때 중요한 점은 기기가 연결되어 있어야 합니다.






웹 브라우저에 연결되었으면 다음 화면이 보이게 됩니다.

Current Controller는 지금 설정한 기기를 의미하며,

Current Binding에서 키 매핑을 해보겠습니다.





기존의 트랙패드와 버튼 설정들은 삭제해 주세요.





삭제하셨으면 플러스 아이콘을 클릭해 Trigger와 Trackpad에 grab과 텔레포트를 연결해 주세요.

이 작업을 바인딩이라고 합니다.







마지막으로 Save Personal Binding을 클릭해 저장해주겠습니다.






1-6) 컨트롤러 사용하기 - ㉠Pose Action



키 매핑이 끝났으면 매핑된 값을 잘 써야겠죠?

해당 컨트롤러에 스크립트 연결과 설정들을 진행하겠습니다.

Contrller프리팹에서 PoseAction을 각각(왼쪽, 오른쪽) 설정해 주겠습니다.

하드웨어 컨트롤러와 가상의 컨트롤러를 연결하는 작업입니다.

이걸 통해서 컨트롤러의 속도, 각속도, 위치 정보를 가지고 올 수 있습니다.






키 매핑이 잘되었는지 스크립트를 통해서 확인해 보겠습니다.

grab과 Teleport를 확인할텐데 SteamVR에서 제공해주는 코드를 사용하면 쉽게 구현이 가능하답니다^^





컨트롤러에 각각 ActionTest 스크립트를 연결 후 값을 설정해 주세요.

해당 값들은 아까 설정한 바인딩 액션들입니다.







게임을 실행하여 트리거와 터치패드를 클릭하면 콘솔창에서 확인이 가능합니다.






1-7) 컨트롤러 사용하기 - ㉡물건 잡기



잡기 기능을 적용해 볼텐데요.

컨트롤러에 Rigidbody와 Collider를 추가해 주겠습니다.

충돌처리를 이용해 잡아보도록 하겠습니다.

설정값들은 그림을 참고해 주세요.










ContrllerGrabObjerct는 물체를 잡았을 때 FixedJoint를 추가해서 물체와 컨트롤러를 이어주며,

잡고 던질수 있도록 컨트롤러의 속도와 각속도 또한 적용해 줍니다.









스크립트 작성이 끝나셨으면 컨트롤러에 추가한 다음 다음과 같이 설정해 주겠습니다.

SteamVR_Behaviour_Pose에는 컨트롤러 포즈 즉 속도와 각속도 정보들을 가지고 있습니다.

드래그해서 해당 칸에 넣어주겠습니다.







실험을 하기전 물체에도 콜라이더와 리지드바디를 꼭 적용하셔야 됩니다.








2. 마무리



오늘 강의는 여기까지입니다.

HTC Vive의 컨트롤러 매핑과 잡기 기능을 알아보았습니다.

다음 시간에는 레이저 포인트 구현과 텔레포트 기능을 추가해 보도록 하겠습니다.

오늘도 고생하셨습니다.

감사합니다.




수업자료: https://github.com/YouRang12/-Tistory-Unity---Extra-VR-




댓글

Designed by JB FACTORY