1. 유니티 설치
우선, 유니티 버전을 최소 2018.4.x 이상, 추천 2019.4 LTS or 2020.1로 설치해야한다. 그런데 처음에 설치할 때 유니티 허브가 설치되며 자기 마음대로 최신 버전을 설치해준다. 나는 2019.4.15f1 (LTS)이 설치되었다.
**메인 메뉴에서 '설치'로 들어간다. 버전 아래에 안드로이드 아이콘이 없으면, 오른쪽 상단에 점 세개를 누르고 '모듈 추가'를 클릭한다. Andriod Build Support와 Android SDK&NDK Tools, OpenJDK를 설치해준다.
2. 기기 언박싱
컨트롤러는 오른쪽 왼쪽이 구분되는 touch다.
케이블은 조금 당황스럽게,, 중간에 두 갈래로 갈라지는 히드라 형태로 되어있으며 하나는 USB, 하나는 HDMI선이다.
3. 기기 설정
오큘러스 홈페이지에 가서 리프트 소프트웨어를 다운로드 한다. 오큘러스 계정을 생성하고 로그인 해야한다.
이후, 안내에 따라서 필요한 케이블이 다 연결되도록 한다.
이때에 내가 애먹은 것은 HDMI선 연결인데, 우선 노트북에는 안된다.
나는 원래 데스크탑에 외장 그래픽을 쓰고, 거기에 HDMI로 내 메인 모니터를 연결하여 사용했다.
하지만, 리프트에 HDMI선을 연결해주기 위해서는 원래 모니터가 쓰던 HDMI포트에 리프트 헤드셋 HDMI선을 꽂아야 해서 원래의 모니터는 DVI-D선으로 연결하였다.
대여한 기자재에 같이 들어있던 'Touch'라는 기어를 사용하려면 센서를 두개 모두 연결해야한다. 결과적으로 USB포트 3개, HDMI포트 1개가 필요하다. (메인 모니터는 HDMI말고 다른 선으로 연결해줘야 함.)
모든 포트가 연결되었다고 합격을 받으면 센서의 위치와 플레이 반경을 조절하도록 깐깐하게 군다. 하지만 실제로 게임을 할 것은 아니니 센서에 기어가 잘 인식되도록만 위치시키고 나머지는 건너뛰어도 설정이 완료된다. 이후 귀여운 튜토리얼이 실행되며 조작법을 익히도록 도와준다. 이후에 내 피씨의 환경이 최적이 아니어서 완전한 VR경험을 할 수 없다고 팝업이 뜨는데 연결하고 나서 최초로 실행되는 체험 프로그램에서는 전혀 문제가 느껴지지 않았다.
4. 테스트 코드 빌드
우선 테스트 코드는 팀원 혜진이가 작성한 <간이 편경돌을 막대가 치면 소리가 나는> 코드와 규원이가 작성한 <막대를 오른 컨트롤러에 붙여둔> 코드를 이용하였다.
큰 고난은 혜진이는 유니티를 버전 2019.3.0a8로 작성했다고 하는데 추천 버전이 2019.4여서,, 버전이 다름에도 내가 가지고 있는 유니티 버전으로 열어보았다. (큰 문제는 생기지 않았다.)
<유니티 에셋 스토어에서>
step1. 유니티 에셋 스토어에서 Oculus integration을 에셋에 추가시킨다.
'unity에서 열기' 한다.
<유니티 에디터에서>
step2. Oculus integration을 하단의 다운로드 버튼을 클릭하여 download하고 임포트 버튼을 클릭하여 import해준다. (이때, 프로젝트를 열어서 플레이 해본 상태면 playmode에서는 import가 안된다는 에러가 뜬다. 그 모드를 어떻게 끄는지 몰라서 그냥 에디터를 껏다가 켯다.)
step3. File-Build settings에서 platform을 Andriod로 바꿔준다.
step4. Edit-Project setting-Player에서 XR settings를 클릭하고, Virtual Reality Supported 체크박스에 체크해준다. (공식 다큐멘테이션에는 other settings에 있다고 해서 한참을 찾았었는데 나의 경우에는 XR settings에 있었다.)
step2를 진행해야 이 체크박스가 enabled된다.
step5. XR settings 위에 Other settings에서 Graphics APIs에서 Vulkan을 빼준다.
step5. 빌드한다.
이 세 단계를 하면, apk파일이 생긴다.
5. 리프트 헤드셋에서 유니티 돌리기
데스크톱에서 유니티 에디터를 실행시킨다.
(헤드셋 착용하고 기어 이용) 왼쪽 기어에 O라고 쓰여진 오큘러스 버튼을 누른다. 그러면 정면 하단에 덱이 뜨는데 거기서 +아이콘을 ('데스크탑 페널 추가') 클릭한다. (클릭은 검지 트리거 당기기)
데스크탑에서 실행 중인 프로그램 리스트가 뜨면, 그 중에 유니티 에디터를 클릭한다.
플레이 모드를 클릭한다.
브이알 렌즈에서 보이는 화면이 컴퓨터 모니터 상의 유니티 창에서 GAME탭에 미러링 된다. (다음 사진들은 그 화면을 캡쳐한 것이다.)
-실제로 랜즈로 보면 시야각이 더 넓어서 전체적으로 오브젝트들이 약간 더 거리감 있게 느껴진다.
우선 컨트롤러에 붙여둔 막대를 가까이에서 볼 수 있다.
왼쪽 컨트롤러에는 아무 것도 붙여놓지 않았기 때문에 그냥 컨트롤러 모양으로 모니터된다.
편경 조각 가까이에 가서 편경 조각을 치면 소리가 난다.
**컨트롤러를 사용하기 위해 조절해야 하는 것.**
1. 카메라와 모델의 거리
- 만들어 둔 편경 모델의 크기가 커서 원래 카메라를 편경 전체를 볼 수 있는 위치에 멀찌감치 놓았었는데 이렇게 하면 편경 조각을 절대로 칠 수 없었다.
- VR상에서 보았을 때, 사용자+컨트롤러의 위치는 카메라의 위치인데 실제 팔 길이 이상으로 컨트롤러를 뻣어 접근할 수 없으므로 일정 거리 이상 편경과 멀어질 수 없다.
- 물론 사용자가 센서와 충분한 거리를 확보할 수 있는 넓은 방에서 플레이를 할 경우 센서 쪽으로 걸어가는 등 더 큰 활동 반경을 가질 수는 있지만, 보편적인 사용자의 플레이 공간을 잘 고려하여 조절할 필요가 있다.
2. 카메라의 높이
- 위의 조건과 비슷하다. 처음 플레이 모드를 실행시키면 사용자의 머리(헤드셋의 위치)가 카메라의 위치에 설정된다.
- 만약 카메라의 높이보다 사용자의 키가 작을 경우 사용자가 아래를 쳐다 보았을 때 붕 떠있는 느낌이 든다. (반대의 경우도 땅에 박혀있는 느낌이 들어 현실감이 떨어질 수 있을 것 같다.)
3. 모델의 크기 (VR환경에서 볼 때의 체감상 차이)
- 유니티 플레이 모드로 볼 때는 편경 모델이 그렇게 큰 줄 몰랐는데, 브이알로 보니 거의 센서로부터 세 걸음 정도는 물러 나야 전체를 볼 수 있을만한 사이즈였다.
- 또한 각퇴 크기라고 생각하고 만들어 컨트롤러에 붙여놓은 막대도 너무 커다래서 통나무 만큼이나 커다랬고, 이렇게 컨트롤러에 붙어있는 모델의 경우 머리와 거리를 팔 길이 이상 멀어지게 할 수 없어서 너무 부담스럽게 큰 느낌이고 자꾸 몸에 닿았다.
- 브이알로 볼 때의 실제 사이즈에 맞게 조절한 오브젝트를 하나 기준으로 잡고 그 크기에 맞춰 전체적인 사이즈를 조절하는 작업이 필요할 것 같다.
참고:
'졸프-오만과 편경' 카테고리의 다른 글
[기술블로그] VR 리듬게임 구현 (0) | 2021.05.15 |
---|---|
[기술블로그] 좁은 시야를 보완하기 위한 indicator 구현 (0) | 2021.05.15 |
[기술블로그] 타격에 대한 피드백 애니메이션 구현 (0) | 2021.05.14 |
[기술블로그] 딜레이에도 적절히 작동하는 리듬게임 채점 구현 (0) | 2021.05.14 |
이것은 기술 블로그입니다. (1) | 2020.11.20 |