유니티 데이드림 (daydream) 튜토리얼

30
유니티 DayDream 튜토리얼 @I_Jemin [email protected]

Upload: jemin-lee

Post on 07-Feb-2017

457 views

Category:

Software


2 download

TRANSCRIPT

Page 1: 유니티 데이드림 (DayDream) 튜토리얼

유니티�DayDream�튜토리얼@I_Jemin�

[email protected]

Page 2: 유니티 데이드림 (DayDream) 튜토리얼

시작전�준비

Page 3: 유니티 데이드림 (DayDream) 튜토리얼

시작전�준비•안드로이드�4.4�이상의�폰이�필요�

• DayDream�의�경우�구글�Pixel�등�DayDream�지원폰이�필요(안드로이드�7.0�최신�Nougat�이�필요)�

• 유니티�DayDream�테그너컬�프리뷰�사이트에서�최신�인스톨러를�다운로드�및�설치�(5.4.2f2-GVR13)�

• https://unity3d.com/partners/google/daydream#section-download�

• 최신�Android�SDK�와�Java�JDK�가�설치되어�있고,�유니티�Preferences�에서�링크가�반드시�되야�합니다�

•안드로이드�API�최소�4.4�(킷캣)�설치가�되있어야�함�

•유니티를�켜고�테스트용�빈�프로젝트를�만들어�큐브를�하나�생성�

• File�>�Build�Settings�에서�Android�를�선택하고�SwitchPlatform�을�클릭

Page 4: 유니티 데이드림 (DayDream) 튜토리얼

시작전�준비

•Build�Settings�>�Player�Settings�>�Other�Setting:�Virtual�Reality�를�체크하고�드롭다운에서�CardBoard�를�선택하여�추가�

•빌드�세팅을�안드로이드�4.4�이상으로�지정�

• Identification�을�적절히�설정하고�Build�and�Run�을�하여�폰에서�테스트

Page 5: 유니티 데이드림 (DayDream) 튜토리얼

• DayDream�의�추가�기능을�사용�하기�위해Google�VR�SDK�for�Unity�다운로드�

• https://developers.google.com/vr/unity/download�로�이동�

• DOWNLOAD�SDK�버튼�클릭

Page 6: 유니티 데이드림 (DayDream) 튜토리얼

심플�인터렉션�프로젝트

Page 7: 유니티 데이드림 (DayDream) 튜토리얼

프로젝트�시작

•새로운�씬을�생성하고�MainCamera�를�제거�

• Plane�을�추가하여�지평선을�만듬�

•GvrControllerMain�과�GvrViewerMain�을�씬에�추가�

•이�둘은��Google�VR�과�통신을�하는�주요�오브젝트

Page 8: 유니티 데이드림 (DayDream) 튜토리얼

GvrController�GvrViwerMain

•GvrViewerMain�(GoogleVR�>�Prefabs)�

• HMD(헤드�마운트�디스플레이)�와�통신을�담당�

•시야�파라미터와�최신�헤드�트래킹�정보를�다룸�

•씬을�기기에�맞게�왜곡하여�랜더링�

•GvrControllerMain�(GoogleVR�>�Prefabs�>�Controller)�

• DayDream�Controller�API�의�연동�시작점�

•유니티�인스펙터를�통해�컨트롤러�Arm�모델의�깊이와�회전을�지정�가능

Page 9: 유니티 데이드림 (DayDream) 튜토리얼

유저�연동

•물리적으로�유저와�연결된�오브젝트들,�메인�카메라,�컨트롤러�등�을�추가하려면…�

•빈�게임�오브젝트를�생성,�Player�라고�이름을�지정�

• Y값을�1.0으로�하여�유저�머리가�땅에서�1�미터�위에.

Page 10: 유니티 데이드림 (DayDream) 튜토리얼

•GvrRecticlePointer�(GoogleVR�>�prefabs�>�UI)�

•화면의�중앙에�조준점을�띄움�

• EventTrigger�컴포넌트와�Collider�컴포넌트를�가진�오브젝트와�인터렉션을�함�

•인터렉션�가능한�오브젝트를�만날시�조준점이�변화함

Page 11: 유니티 데이드림 (DayDream) 튜토리얼

•씬에�미리�존재했던�MainCamera�는�지웠는지�다시�체크�

• Player�오브젝트에게�마우스�오른쪽-카메라�추가�

• GvrRecticlePointer�를�Player�자식으로�추가된�Camera의�자식으로�추가�

•추가된�카메라의�태그를�MainCamera�로�지정�

•카메라에�AddComponent�>�GvrPointerPhysicsRaycaster�추가

Page 12: 유니티 데이드림 (DayDream) 튜토리얼

•하이라키에�마우스�오른쪽�>�UI�>�EventSystem�추가�

• EventSystem�오브젝트에�붙어있는�Standard�Input�Module�컴포넌트는�삭제�

• EventSystem�에�AddComponent�>�GvrPointerInputModule

GvrPointerInputModule�이�VR의�정중앙�조준점,�컨트롤러의�레이저�등으로�일으키는�이벤트(PointerClick�등)을�EventSystem�을�통해�전파한다�

이들은�EventTrigger�를�가지고�있는�오브젝트들이�수신한다

Page 13: 유니티 데이드림 (DayDream) 튜토리얼

•큐브에�EventTrigger�를�추가�

• Add�New�Event�Type�으로�이벤트를�듣게�한다�

• Pointer�Click�-�조준점을�물체(의�콜라이더)에�놓고�클릭했을때�

• Pointer�Enter�-�조준점이�물체에�진입할때�

• Pointer�Exit�-�조준점이�물체를�나갈때

Page 14: 유니티 데이드림 (DayDream) 튜토리얼

• EventTrigger�의�원하는�이벤트에�+�를�눌러�슬롯을�열기�

•열린�슬롯에�제어하고�싶은�오브젝트를�넣는다.해당�오브젝트에서�호출가능한�함수를�지정�하면�인터렉션�구현�됨�

•예)�Cube�자신을�PointerClick�의�슬롯에�할당하고,�함수를�GameObject.SetActive(false)�로�지정�

• =>�오브젝트를�VR로�쳐다보고�화면을�터치하면�오브젝트가�꺼지는�기능이�구현됨

Page 15: 유니티 데이드림 (DayDream) 튜토리얼

데이드림�프로젝트�(리모콘�사용)�

프로젝트�시작하기

초반부는�심플�인터렉션�구현�프로젝트와�같음

Page 16: 유니티 데이드림 (DayDream) 튜토리얼

프로젝트�시작

•새로운�씬을�생성하고�MainCamera�를�제거�

• Plane�을�추가하여�지평선을�만듬�

•GvrControllerMain�과�GvrViewerMain�을�씬에�추가�

•이�둘은��Google�VR�과�통신을�하는�주요�오브젝트

Page 17: 유니티 데이드림 (DayDream) 튜토리얼

GvrController�GvrViwerMain

•GvrViewerMain�(GoogleVR�>�Prefabs)�

• HMD(헤드�마운트�디스플레이)�와�통신을�담당�

•시야�파라미터와�최신�헤드�트래킹�정보를�다룸�

•씬을�기기에�맞게�왜곡하여�랜더링�

•GvrControllerMain�(GoogleVR�>�Prefabs�>�Controller)�

• DayDream�Controller�API�의�연동�시작점�

•유니티�인스펙터를�통해�컨트롤러�Arm�모델의�깊이와�회전을�지정�가능

Page 18: 유니티 데이드림 (DayDream) 튜토리얼

유저�연동

•물리적으로�유저와�연결된�오브젝트들,�메인�카메라,�컨트롤러�등�을�추가하려면…�

•빈�게임�오브젝트를�생성,�Player�라고�이름을�지정�

• Y값을�1.0으로�하여�유저�머리가�땅에서�1�미터�위에.

Page 19: 유니티 데이드림 (DayDream) 튜토리얼

•GvrControllerPointer�(GoogleVR�>�prefabs�>�UI�>�GvrControllerPointer)�

• SDK�에�내장된�프리팹�

•데이드림�리모콘을�사용하도록함�

•컨트롤러�모델�포함�

•레이저�포인터�포함�

• Arm�모델�포함

Page 20: 유니티 데이드림 (DayDream) 튜토리얼

•씬에�미리�존재했던�MainCamera�는�지웠어야함�

•GvrControllerPointer�를�Player�오브젝트에�자식으로�추가�

• Player�오브젝트에게�마우스�오른쪽-카메라�추가�

•추가된�카메라의�태그를�MainCamera�로�지정�

•카메라에�AddComponent�>�GvrPointerPhysicsRaycaster�추가

Page 21: 유니티 데이드림 (DayDream) 튜토리얼

리모콘�인터렉션�구현하기

•큐브�오브젝트를�레이저�포인터로�가리켜�랜덤�재배치�시기기�

•레이저�포인터로�Plane의�가고�싶은�곳을�지정해�순간�이동

Page 22: 유니티 데이드림 (DayDream) 튜토리얼

•하이라키에�마우스�오른쪽�>�UI�>�EventSystem�추가�

• EventSystem�오브젝트에�붙어있는�Standard�Input�Module�컴포넌트는�삭제�

• EventSystem�에�AddComponent�>�GvrPointerInputMoudle�

•씬에�새로운�큐브를�추가,�카메라와�다른�장소에�적절히�배치�

•큐브에�EventTrigger�를�추가�

• Add�New�Event�Type�으로�이벤트를�듣게�함�

• Pointer�Click�

• Pointer�Enter�

• Pointer�Exit

Page 23: 유니티 데이드림 (DayDream) 튜토리얼

•새로운�마테리얼�두개를�생성�

•하나는�붉은색,�하나는�푸른색으로�지정�(Albedo�설정)�

•붉은�색은�레이저로�포인팅�했을때�색�

•푸른�색은�조준하지�않았을�때�색�

•큐브에�AddComponent�-�Teleport�를�추가�

• EventTrigger�의�각�이벤트에�+�를�눌러�슬롯�추가�

• PointerClick:�Teleport.TeleportRandomly�

• PointerEnter:�Teleport.SetGazedAt�(true�체크)�

• PointerExit:�Teleport.SEtGazedAt�(true�체크�X)

Page 24: 유니티 데이드림 (DayDream) 튜토리얼

• Teleport�스크립트를�열고�스크립트�초반부와�함수�추가�

•초반부using�UnityEngine;using�UnityEngine.EventSystems;�//�ADDusing�System.Collections;[RequireComponent(typeof(Collider))]public�class�Teleport�:�MonoBehaviour,�IGvrGazeResponder�{���public�GameObject�player;�//ADD

Page 25: 유니티 데이드림 (DayDream) 튜토리얼

•함수public�void�TeleportTo(BaseEventData�data)� { � � PointerEventData�pointerData � � =�data�as�PointerEventData;� � Vector3�worldPos�=� � � pointerData.pointerCurrentRaycast� � � � .worldPosition;� � � � Vector3�playerPos�=� � � new�Vector3�(worldPos.x,� � � � player.transform.position.y,� � � � worldPos.z);� � player.transform.position�=�playerPos;� }

Page 26: 유니티 데이드림 (DayDream) 튜토리얼

• Plane�오브젝트에�Teleport�와�EventTrigger�를�추가�

• Teleport�의�Player�슬롯에�Player�오브젝트�할당�

• EventTrigger�에�PointerClick�이벤트를�추가�

• +�버튼으로�슬롯을�추가하고�Teleport.TeleportTo�를�지정

Page 27: 유니티 데이드림 (DayDream) 튜토리얼

DayDream�컨트롤러에뮬레이팅

Page 28: 유니티 데이드림 (DayDream) 튜토리얼

•데이드림�컨트롤러�에뮬레이터를�폰에�설치�

• https://developers.google.com/vr/daydream/controller-emulator�

•폰을�컴퓨터와�같은�WiFi�네트워크에�연결�

•데이드림�컨트롤러를�켜고,�상단의�IP�주소를�메모 (예,�192.168.6.2224�)

Page 29: 유니티 데이드림 (DayDream) 튜토리얼

• Scripts�>�Controller�>�Internal�>�Emulator�이동�

• EmulatorConfig�스크립트�열기�

•하단에public�static�readonly�string�WIFI_SERVER_IP�=�"192.168.6.224";의�IP�주소를�이전에�메모한�주소로�변경�

•카메라에�GvrPointerPhysicsRaycaster�를�추가�

• GvrControllerMain�의�설정을�WiFi�로�지정

Page 30: 유니티 데이드림 (DayDream) 튜토리얼

http://www.sdkboy.com/2016/12/building-daydream-controller-based-app-scratch/�

참고�자료�Reference