[Unity]06.삼성 Gear VR 사용 #1 - 시선처리를 이용한 아이템 습득

안녕하세요 유랑입니다.



오늘은 삼성 Gear VR을 이용해 시선처리 방법에 대해 배워보겠습니다.




1. 삼성 Gear VR



VR 첫 번째 글에도 소개해 드렸듯이 삼성 Gear VR은 오큘러스와 협약해 만든 HMD 디바이스입니다.

그렇기 때문에 시중에 나와있는 오큘러스 문서들을 토대로 공부해 보셔도 좋습니다.







1-1) 프로젝트 생성 및 준비



SamsungGearVR이라고 프로젝트 이름을 변경한 뒤 생성합니다.






VR환경은 우선 이것부터 시작하죠.

플랫폼을 안드로이드로 변경하고, 원하시는 환경으로 구축해 주세요.





Compnay Name과 Package Name을 변경한 뒤,

Minimum API Level을 4.4로 바꾸고 Oculus를 추가해 주세요.

VR영상은 4.4이상부터 작동되니 꼭 바꿔주세요^^

Stereo Rendering Method - Single Pass기능은 

물리적으로 두 개의 Camera를 사용한 방식을 보완하기 위해서 만들어졌다.

두 번 렌더링하기 때문에 성능이 저하되기 때문이다.

하지만 모바일 플랫폼에서는 Single Pass 기능을 제공하지 않으니 알아두길 바란다.







유니티는 편리한 VR 개발 환경을 위해 다음과 같은 에셋들을 제공합니다.

이번 에셋을 이용해 시선처리 방법에 대해 진행해 보겠습니다.





다음과 같이 뜰 경우 신경쓰지 말고 임포트 해주세요.






1-2) 레티클 구현



시선처리를 통해서 이벤트를 구현하기 위해서는 시각적으로 레티클이 필요합니다.

한 번 구현해 보겠습니다.

우선 다음 오브젝트들을 만들어 컴포넌트 값들을 변경해 보세요.

Player는 빈 오브젝트, Floor는 Plane 오브젝트, Item은 Cube 오브젝트 입니다.

오큘러스는 포지셔닝 센서로 HMD의 위치가 반영되므로 실행 중 MainCamera의 위치를 

스크립트에서 직접 변경시킬 수 없습니다.

따라서 MainCamera가 빈 게임오브젝트 하위에 위치해야 이동과 헤드 트래킹 둘 다 가능합니다.












메인카메라에 VREyeRaycater 스크립트와 VRInput 스크립트를 추가해 주세요.

VREyeRaycaster 스크립트는 레이를 발사해 특정 객체를 선택하는 기능을 제공합니다.

VRInput 스크립트는 VR 입력장치로부터 넘어오는 입력값을 정의하고 이벤트를 발생시켜 줍니다.

메인카메라를 드래그 앤드 드롭해서 해당 컴포넌트란에 넣어주세요.





Show Debug Ray를 체크하면 씬뷰에서 표시됩니다.

다만 내부적으로 발사하는 레이의 길이는 Ray Length 속성에 설정된 길이로 적용됩니다.

Exclusion Layers를 통해서 레이캐스트에서 제외할 레이어를 설정 가능합니다.





레티클을 만들어 보겠습니다.

Canvas를 생성 후 World Space로 변경시켜 주세요.

VR로 구현하기 때문에 다음과 같이 설정해야 합니다.

위치는 카메라 앞에 놓아줍니다.





Canvas 자식으로 이미지 오브젝트를 생성 후 이름을 Reticle로 바꿔주세요.

Source Image에는 VR샘플에 들어있는 GUITargetReticle을 사용하겠습니다.





레티클이 레이캐스트에 따른 변화가 있었으면 좋겠다.

Reticle 스크립트를 추가해 속성들을 다음과 같이 추가해 보자.





게임을 실행시켜보면 레티클이 메쉬에 묻히는 현상이 발생한다.

이 현상은 쉐이더를 사용해 보정할 수 있다.





Reticle 오브젝트에 Image => Material을 GUIOverlay로 변경해 주자.





그러면 레티클이 메쉬에 묻히지 않고 제대로 보이게 된다.






1-3) VR Interactive Item



시선을 돌려 큐브를 응시했을 때 큐브의 색깔이 바뀌는 로직을 구현해 보자.

Item 오브젝트에 VRInteractiveItem 스크립트를 추가하자.

사용자가 시선으로 응시했을 때 발생하는 여러 이벤트들을 담고있다.






이제 이벤트들이 발생했을 때 큐브의 색깔을 바꿔주는 스크립트를 만들어보자.

만든 스크립트는 Item 오브젝트에 추가하자.


- OnOver => 레티클에 응시했을 때 호출

- OnOut => 레티클을 응시했다가 다른 곳을 응시했을 때 호출

- OnClick => 레티클을 응시하고, 클릭이 발생했을 때 호출

- OnDoubleClick =>레티클을 응시하고, 더블클릭이 발생했을 때 호출

- OnUp => Fire1 입력값이 릴리스 됐을 때 호출

- OnDown => Fire1 입력값이 발생했을 때 호출










1-4) GearVR 빌드하기



오큘러스 기기는 휴대폰의 Devie Id를 이용해 서명파일을 에셋에 포함시켜야 한다.

핸드폰을 연결하여 Development Build 옆에 있는 번호를 적어두자. 

앞으로 계속 쓰일 것이다.






오큘러스 홈페이지에 접속하여 기기 ID를 입력하고 서명파일을 다운받자.

https://dashboard.oculus.com/tools/osig-generator/





서명파일은 Plugins => Android => Assets 폴더 안에 넣어야 한다.

폴더가 없을 경우 만들어 주자.






텍스처 압축은 최적화에 있어서 중요한 요소이다.

VR은 많은 기능들을 사용하기 때문에 꼭 ETC2 압축방식을 사용하자.






1-5) 개발자모드로 실행하기



일반적으로 삼성GearVR을 사용하려면 해당 기기에 핸드폰을 꼽아야 한다.

하지만 개발자 입장에서는 번거러울 수 있다.

불편함을 막기 위해서 개발자 모드를 제공하는데 방법은 다음과 같다.

핸드폰 옵션에 있는 애플리케이션 목록으로 들어가자.

GearVRService를 클릭하자.

만약 없다면 지원하지 않은 기기일 것이다ㅠㅠ






저장공간을 클릭.





저장공간 관리를 클릭하자.

얼마 안남았다.





VR Service Version을 6번 클릭하면 개발자 모드가 나올 것이다.

활성화하면 개발자모드 시작인데, 만약 오큘러스 관련 어플이 없다면 활성화가 되지 않는다.





리모콘과 시선을 이용해 큐브의 색깔이 바뀌는걸 확인 가능하다.






2. 마무리



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

삼성GearVR을 이용해 시선처리 하는 방법에 대해 배워보았습니다.

다음 시간에는 리모콘 다루는 방법에 대해 배워보겠습니다^^

오늘도 고생하셨습니다.

감사합니다.



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


댓글

Designed by JB FACTORY