Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

84
Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기 정문철(flashscope) [email protected]

Transcript of Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

Page 1: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

정문철(flashscope) [email protected]

Page 2: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

Warning

프로젝트 마무리 차원에서 정리하는 문서입니다.

!튜토리얼이나 강좌도 아니고

그냥 생각나는 에피소드를 두서 없이 정리합니다. !

도움이 될 수도 있고 아닐 수도 있고…

Page 3: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

-Oculus와 Leap Motion을 이용, 사용자에게 가상의 우주 체험 !-Oculus를 사용하여 제한된 공간에서 가상공간 제공 !-키보드, 마우스 등 기존의 물리적 장치를 사용 하지 않고 사용자에게 Leap Motion을 통한 모션 방식의 컨트롤 경험 제공

Page 4: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

- Oculus Rift ‘DK1’ - LeapMotion

사용할 개발 장비

우주를 둘러 보면서 립모션으로 상호작용이 가능이 목표 !주변에 빌려서 사용은 해보았지만 개발은 해본적 없는 장비…

Page 5: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

- Intel i5-2500 - GTX 560 Ti

사용할 개발 장비

불특정 다수가 아니라 제어 가능한 소수의 컴퓨터에만 사용할 예정이기에 성능 최적화도 그냥 개발 컴퓨터 스팩에 맞춰서 작업… (하지만 이것이…)

Page 6: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

사용자

전시장에 오는 주 사용자가 초등학생이므로

시야각이 좁지만 사용하기 편한 C렌즈를 사용하기로 함

http://www.makeuseof.com/tag/everything-you-want-to-know-about-the-oculus-rift-dev-kit/

Page 7: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

에피소드1 - 작업 환경을 갖추어 보다.

역시 초록색 검색기는 개발자 친화적이 아니구나…

Page 8: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

유니티로 작업할 거면 Runtime과 Intergration만 있으면 됨! 편한 유니티! 샘플도 잘 되어있음!

!(스샷은 당시와 좀 다릅니다… 5되면서 어떻게 또 바뀌었을지…)

Page 9: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

어디서 많이 보던 집의 출처를 알게 되다… 카메라 부분은 OVRCameraRig하나만 보면 되지만

!스카이박스도 기본 제공되는게 아니라 오큘러스용 스카이박스가 있는데

그런 부분들에 대한 참고용으로 좋습니다.

Page 10: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

https://developer.leapmotion.com/vr 립모션 또한 VR페이지를 비롯해서

유니티용 샘플 프로젝트가 잘 준비되어 있습니다. !

오큘러스 오브젝트의 센터에 HandController를 맞춰 주면 기본 세팅 끝!

Page 11: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

립모션VR페이지 보면 각도 넓고 그림도 더 넓고 크게 그려져 있지만…

https://www.leapmotion.com/product/vr

Page 12: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

인식되는 거리가 한 25cm?정도여서 어른이 손을 펴서 사용하면 인식 범위를 오버… 좀 팔을 오므려서 사용해야하는 편하지는 않은 환경

https://www.leapmotion.com/product/vr

25cm정도

Page 13: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

에피소드-FOV, IPD 개별 설정

사전 회의 중… !A : FOV(시야각)를 초등학생을 맞출께요! !B : 어른이 왔을 때를 위해서 옵션으로 어른용 어린이용 선택 가능한가요? !A : (문서를 본다)네 가능 할것 같아요~

하지만 그것이…

Page 14: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

구글링해서 찾은 14년12월자 가이드에 보면 샘플 프로젝트에서 FOV와 IPD를 조작하는 내용이 있어서 코드 분석 후 적용 해 봄

Page 15: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

하지만 아무래 해도 안됨! 심지어 문서대로 따라해도 샘플 프로젝트에서도 안됨!

silver surfer

Page 16: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

하지만 되는 유튜브 동영상도 있음… 계속 방법을 찾아 보는데…

https://www.youtube.com/watch?v=QPhVLFlTmQA

Page 17: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

또 포럼 구글링… 후 얻은 결과 “오큘러스는 임의로 조작하는걸 원치 않아 해요(어차피 제대로 못 맞출거고)

!오큘러스는 사용자마다 Oculus Configuration utility로 프로필 만들고 거기서 보정하는걸 권장해요” -> 즉 이제 컨트롤 못함 !하지만 KGC의 오큘러스 체험부스에서도 매 사람마다 보정 안맞추듯 그냥 일반적인 값으로 개발하기로…

http://ctrlaltstudio.com/images/2013/11/oculus-rift-configuration-utility.png

Page 18: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

!B : Safety Warning을 없애고 싶어요… !A : 그게 오큘러스에서 강제로…

Page 19: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

저 워닝화면은 파일로 되어있지 않고 오큘러스 라이브러리에 바이너리로 박혀있음… -> 그런데 그걸 바꿔치기 해서 투명하게 만들어 버리는 사람이 있다! !하지만 그냥 6초동안은 시작하지 않고 대기화면 사용… !-한번 보면 씬 재시작 시에는 워닝이 표시가 되지 않음 ->static으로 플래그를 만들고 이미 한번 보여줬으면 그냥 넘기도록…

Page 20: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

오큘러스가 화면은 나오는데 동작을 안해요! !->개발하는 컴퓨터에서는 잘 동작하는데 다른 컴퓨터에서는 안되는 문제 발생 !-한동안 마우스로 조작할 수 있도록 디버깅 코드 넣었지만 오큘러스SDK 버젼에 비해 Runtime버젼이 낮으면 동작을 안한다는 문제를 발견 !Runtime업데이트로 해결!

Page 21: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

일단 기본 세팅은 맞추고 프로토 타입 개발에 돌입…

Page 22: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

에피소드-공전을 못 만들다니?!

A

B

C

<-Player(Oculus)D

흔히 3D실습때 만들던 행성 공전을 만들었는데…

Page 23: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

1인칭 시점으로 (오큘러스 화면으로)

보면 !

굉장히 떨림이 발생… 행성이 순간이동…

CC

D

천호식품 산수유

Page 24: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

A

B

C

<-Player(Oculus)D

결국 아예 다른방법으로 해결했는데

!나중에 포럼을 보니

LateUpdate사용하라고함

Page 25: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

A

B

D

그때서야 문제 원인 눈치 챔… 이동을 BCD순서대로 이동하면

좋은데…

B 1.

C

Page 26: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

A

B

C

D

그때서야 문제 원인 눈치 챔… 이동을 BCD순서대로 이동하면

좋은데…

B 1.

C2.

Page 27: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

A

B

CD

그때서야 문제 원인 눈치 챔… 이동을 BCD순서대로 이동하면

좋은데…

B 1.

C2.

D

3.

Page 28: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

A

B

D 1.

중간에 업데이트 순서가 꼬이다 보니…

!이동이 어색해 졌던것…

C

D

Page 29: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

A

B

D 1.

중간에 업데이트 순서가 꼬이다 보니…

!이동이 어색해 졌던것…

!(그것도 계속 Rotate곱해가는게 아니라 부모로부터 어느 각으로 이동하도록 해서

앞뒤로 왔다 갔다…)

DC

2.

C

Page 30: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

A

B

D 3.

DC

2.

C

생각해보니 OpenGL 실습에서는 순서대로 곱해나갔던 기억이…

이제서야… !

개발기간 하루 날림유니티의 편안함은 사람을 바보로 만듭니다!

1.

Page 31: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

에피소드-산속은 최고의 개발 환경?

월화수목금금금으로 풀타임 작업을 하고 앞의 완성화면은 아니지만 거의 가까운 프로토 타입 완성

!시골 산속으로 이사를 갔더니…

치맥 없음, 가장 가까운 편의점 차타고 10분… 수면, 식사 시간 제외하고 정말 개발에만…

(개밥줄때 빼고 집에서 한발자국도 안나가는…) !

마감이 얼마 안남은 소설가가 호텔에 가는지를 알게 됨!

Page 32: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

프로젝트 완성 스샷, 영상

앞으로의 설명에 도움이 되기 위해 먼저 완성된 프로젝트 스샷과 영상을…

Page 33: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

프로젝트 완성 스샷, 영상

가 제대로 없습니다…

Page 34: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

프로젝트 완성 스샷, 영상

이미 장비를 다 반납해서 ㅠ

게다가 VR은 아무리 설명해도 직접 해봐야 됩니다!

Page 35: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

지금 몇개 스샷을 찍어 보기는 했는데 오큘러스를 통해 보는게 아니여서

눈이 아픕니다 ㅠ !

정작 중요한 LeapMotion손도 안보이고ㅠㅠ

Page 36: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기
Page 37: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기
Page 38: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기
Page 39: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

그나마 프로토타입떄 녹화한 기본 립모션 손 모델…

Page 40: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기
Page 41: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기
Page 42: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기
Page 43: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기
Page 44: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기
Page 45: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

손 모델 변경 프로토타입

Page 46: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기
Page 47: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기
Page 48: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

에피소드-립모션용 손 모델을 적용하기

처음 프로토 타입은 립모션에서 기본 제공하는 사람 손 모델을 사용을 하였지만

!우주복으로 변경하기로 함

Page 49: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

하지만 어딜 찾아봐도 립모션 손 모델을 만드는 법에 대한 자료가 없음

Page 50: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

직접 prefab과 model을 조사해 보기로…

Page 51: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

로봇손은 너무 복잡해서 RiggedPepperFullHands를 기반으로 본 구조를 유지하고 우주인 손 만들기를 디자이너분께 의뢰

Page 52: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

크게 HandContainer와 ForearmContainer 그리고 손가락 마디로 구성이 되어 있음…

Page 53: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

각 손가락 마다 손가락 종류, 방향과 손가락 마디의 정보를 다 넣어줘야함…(노가다)

Page 54: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

그리고 종합적으로 손에 각 손가락 정보와 Hand,Forearm을 넣어주면 기본적인 세팅은 끝

Page 55: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

하지만 각 본의 각도가 조금이라도 틀어지면 보기 힘든 상황이… 직접 Max나 Maya로 수정을 할줄 알면 좋겠지만

매번 수정을 디자이너분께 요청하고 유니티에서 편집하고의 반복으로 시간 소요와 정밀한 손 모델을 못 만들었음…

잘 설명도 못하면서 계속 수정을 받아주셔서 감사합니다!

Page 56: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

매번 기본 샘플은 어떻게 되어있는지 비교하면서 작업하느라 처음엔 양손 작업에 30분 이상 소요…

나중엔 한손만 작업하고 나머지 손은 뒤집어서 사용해서 시간 절약

Page 57: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

에피소드-립모션 조작 방식과 인식에 대한 고민

조작 모드는 두가지가 있었음…

행성 탐사 행성 공전

Page 58: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

정지 전진

우 회전좌 회전행성 탐사시에는 립모션으로 이동을 기획 하였으나…

Page 59: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

바닥에 놓고 사용하면 괜찮지만 오큘러스에서 붙인 상태에서는 손이 둥그렇게만 보이다 보니 인식이 굉장히 나쁨…

Page 60: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

오큘러스 + 립모션에서는 손을 펴서 조작하는 방식이 인식측면에서는 최고 인듯

Page 61: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

에피소드-가짜 중력 발생

지구

행성탐사는 행성위에서 회전하면서 이동이 가능해야 함Mario Galaxy

http://images2.fanpop.com/image/photos/12800000/Starship-Mario-super-mario-galaxy-2-12801698-600-600.jpg

Page 62: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

https://www.youtube.com/watch?v=gHeQ8Hr92P4

지구 (parent)

이때까지 가능하면 물리엔진을 사용 안하고 Update로 구현했는데 가짜 중력은 부모 방향으로 단순히 AddForce만 하도록 함

Page 63: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

지구 (parent1)

달 (parent2)

다만 바로 중력이 적용되는 부모를 변경하면 격한 이동이 발생하여 천천히 단계를 밟으면서

중력이 적용되는 기준을 바꿈

이륙 준비!중력으로부터

벗어남!(p1중력 정지)

-이동-

착륙준비 (p2중력 적용)

천천히 회전하면서 착륙

Page 64: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

에피소드-범인은 오큘러스!

사방을 둘러보다 다른 행성을 계속 쳐다보면 그 행성으로 이동을 하는데…

Page 65: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

모니터

오큘러스

지구

지구를 쳐다 보다…

Page 66: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

모니터

오큘러스

지구

옆에 있는 달로 이동 하고…

Page 67: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

모니터

오큘러스

지구

또 지구로 이동을 하게 되면?! 이걸 반복하면?!

Page 68: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

모니터

지구

물론 목을 조르지는 않고 USB가 빠지긴 하지만…

오큘러스

Page 69: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

(image via Flickr – CC) https://www.unofficialcardboard.com/news/5-tips-for-the-best-google-cardboard-vr-experience/

컴퓨터 의자 필수… 하지만 그래도 문제가 되는 상황

!(전에 만든 카드보드 앱도 사이트 뉴스에서 의자를 준비하라고…)

Page 70: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

모니터

오큘러스

지구

옆에 있는 달로 이동을 하게 되면…

해결 방법

Page 71: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

모니터

오큘러스

지구

서서히 달로 이동하는 장면을 만들고

해결 방법

Page 72: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

모니터

지구

서서히 모니터 쪽으로 카메라를 이동… 사용자는 계속 달을 쳐다보려고 따라가면…

해결 방법

오큘러스

지구

지구

Page 73: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

모니터

가능하면 항상 모니터 방향이 앞이 되도록 유도

해결 방법

오큘러스

지구

지구

지구

지구

Page 74: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

에피소드-장해물 배치와 난이도

마침 넥서스대상? 으로 구글에서 그래비티를 무료 배포!

Page 75: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

눈높이에서 플레이어 옆으로 지나가도록 설정 아슬아슬하게 피해가는 느낌?을 줄수 있도록 장해물을 배치

Page 76: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

A : 클리어 난이도는 어떻게 할까요? !B : 첫 플레이시에는 한 70~80%확률로 게임오버되고 두번째 플레이에서는 클리어 할수 있게 하고 싶어요 !A : 한번 생각해 볼께요… !-> 장해물을 규칙적으로 배치하면 처음에는 힘들지만 규칙을 조금이라도 느끼게 되면 쉽게 클리어하지 않을까? !를 생각하며 장해물을 배치 앞의 연출이라던가 난이도를 유지하기 위해 자동 배치는 포기함

난이도

Page 77: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

지구

공전 코스

장해물장해물

장해물

장해물

장해물장해물

장해물 장해물 더미

더미 더

더미

더미

더미

더미

더미

더미

더미

더미

더미

더미

더미

더미

더미

그냥 스쳐 지나가는 더미는 불규칙 적이지만 실제 장해물은 규칙적으로 배치

Page 78: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

지금 생각해보면 첫 플레이시에 대부분 게임오버되고

두번째 익숙해지면 성공이 적절했을지는 의문 !

-> 전시 체험코너에서 두번 안할것 같음…

Page 79: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

뒤 늦은 최적화…

프로젝트 막바지로 실제 전시장에서의 설치 작업이 진행될 때쯤 프로그램이 버벅인다는 연락이 옴… !여러가지 컴퓨터 사양에 대해 들었는데 그래픽 카드가 GT630…!?

Page 80: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

http://oddeyer.com/index.php?mid=graphics_compare&document_srl=2238&compare1_srl=320&compare2_srl=853

처음에 제시한 gtx560ti과 630… 560도 사실 구형…

Page 81: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

마지막주에 고 폴리곤 매시, 텍스쳐 변경 작업을 하였는데 이제 다시 퀄리티 다운은 안하기로 하고

!최대한 오브젝트를 덜 그리는 방향으로 최적화 진행…

그런데 그 스펙으로는 저래도 문제일 텐데 그 이후로 이슈가 안된걸 보면 컴퓨터를 업그레이드 했을듯…

Page 82: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

마무리

Oculus Rift + Leap Motion 조합은 좋다! 나중에 이 둘이 합쳐서 사용하는게 기본 조합이 되지 않을까 생각중

(LeapMotion인수 안할려나…) !

다만 선이 문제가 됨…(Gear VR?) !

간단한 조작만 요구하는 오큘러스 프로젝트에는 립모션을 사용해보길 추천드립니다.

Page 83: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

CardBoard ↔ OculusRift 정말 10분안에 변경 가능 함!

한쪽 만드신게 있으면 양쪽 다 출력해 보시길… !

(물론 그래픽도 달라지는게 좋겠지만…)

Page 84: Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기

기회를 주신 박민근 교수님과 h2Company에

감사드립니다.

Copyright © All Rights Reserved h2Company