3. 시작전 준비
• 안드로이드 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 을 클릭
4. 시작전 준비
• Build Settings > Player Settings > Other Setting:
Virtual Reality 를 체크하고 드롭다운에서
CardBoard 를 선택하여 추가
• 빌드 세팅을 안드로이드 4.4 이상으로 지정
• Identification 을 적절히 설정하고 Build and Run
을 하여 폰에서 테스트
5. • DayDream 의 추가 기능을 사용 하기 위해
Google VR SDK for Unity 다운로드
• https://developers.google.com/vr/unity/
download 로 이동
• DOWNLOAD SDK 버튼 클릭
7. 프로젝트 시작
• 새로운 씬을 생성하고 MainCamera 를 제거
• Plane 을 추가하여 지평선을 만듬
• GvrControllerMain 과 GvrViewerMain 을 씬에 추
가
• 이 둘은 Google VR 과 통신을 하는 주요 오브젝트
8. GvrController
GvrViwerMain
• GvrViewerMain (GoogleVR > Prefabs)
• HMD(헤드 마운트 디스플레이) 와 통신을 담당
• 시야 파라미터와 최신 헤드 트래킹 정보를 다룸
• 씬을 기기에 맞게 왜곡하여 랜더링
• GvrControllerMain (GoogleVR > Prefabs > Controller)
• DayDream Controller API 의 연동 시작점
• 유니티 인스펙터를 통해 컨트롤러 Arm 모델의 깊이와 회전을
지정 가능
9. 유저 연동
• 물리적으로 유저와 연결된 오브젝트들, 메인 카메라,
컨트롤러 등 을 추가하려면…
• 빈 게임 오브젝트를 생성, Player 라고 이름을 지
정
• Y값을 1.0으로 하여 유저 머리가 땅에서 1 미터
위에.
10. • GvrRecticlePointer (GoogleVR > prefabs > UI)
• 화면의 중앙에 조준점을 띄움
• EventTrigger 컴포넌트와 Collider 컴포넌트를 가
진 오브젝트와 인터렉션을 함
• 인터렉션 가능한 오브젝트를 만날시 조준점이
변화함
11. • 씬에 미리 존재했던 MainCamera 는 지웠는지 다시
체크
• Player 오브젝트에게 마우스 오른쪽-카메라 추가
• GvrRecticlePointer 를 Player 자식으로 추가된
Camera의 자식으로 추가
• 추가된 카메라의 태그를 MainCamera 로 지정
• 카메라에 AddComponent >
GvrPointerPhysicsRaycaster 추가
12. • 하이라키에 마우스 오른쪽 > UI > EventSystem 추
가
• EventSystem 오브젝트에 붙어있는 Standard
Input Module 컴포넌트는 삭제
• EventSystem 에 AddComponent >
GvrPointerInputModule
GvrPointerInputModule 이 VR의 정중앙 조준점, 컨트롤러의 레이저 등
으로 일으키는 이벤트(PointerClick 등)을 EventSystem 을 통해 전파한다
이들은 EventTrigger 를 가지고 있는 오브젝트들이 수신한다
13. • 큐브에 EventTrigger 를 추가
• Add New Event Type 으로 이벤트를 듣게 한다
• Pointer Click - 조준점을 물체(의 콜라이더)에
놓고 클릭했을때
• Pointer Enter - 조준점이 물체에 진입할때
• Pointer Exit - 조준점이 물체를 나갈때
14. • EventTrigger 의 원하는 이벤트에 + 를 눌러 슬롯을 열기
• 열린 슬롯에 제어하고 싶은 오브젝트를 넣는다.
해당 오브젝트에서 호출가능한 함수를 지정 하면 인터
렉션 구현 됨
• 예) Cube 자신을 PointerClick 의 슬롯에 할당하고, 함
수를 GameObject.SetActive(false) 로 지정
• => 오브젝트를 VR로 쳐다보고 화면을 터치하면 오
브젝트가 꺼지는 기능이 구현됨
16. 프로젝트 시작
• 새로운 씬을 생성하고 MainCamera 를 제거
• Plane 을 추가하여 지평선을 만듬
• GvrControllerMain 과 GvrViewerMain 을 씬에 추
가
• 이 둘은 Google VR 과 통신을 하는 주요 오브젝트
17. GvrController
GvrViwerMain
• GvrViewerMain (GoogleVR > Prefabs)
• HMD(헤드 마운트 디스플레이) 와 통신을 담당
• 시야 파라미터와 최신 헤드 트래킹 정보를 다룸
• 씬을 기기에 맞게 왜곡하여 랜더링
• GvrControllerMain (GoogleVR > Prefabs > Controller)
• DayDream Controller API 의 연동 시작점
• 유니티 인스펙터를 통해 컨트롤러 Arm 모델의 깊이와 회전을
지정 가능
18. 유저 연동
• 물리적으로 유저와 연결된 오브젝트들, 메인 카메라,
컨트롤러 등 을 추가하려면…
• 빈 게임 오브젝트를 생성, Player 라고 이름을 지
정
• Y값을 1.0으로 하여 유저 머리가 땅에서 1 미터
위에.
19. • GvrControllerPointer (GoogleVR > prefabs > UI
> GvrControllerPointer)
• SDK 에 내장된 프리팹
• 데이드림 리모콘을 사용하도록함
• 컨트롤러 모델 포함
• 레이저 포인터 포함
• Arm 모델 포함
20. • 씬에 미리 존재했던 MainCamera 는 지웠어야함
• GvrControllerPointer 를 Player 오브젝트에 자식으
로 추가
• Player 오브젝트에게 마우스 오른쪽-카메라 추가
• 추가된 카메라의 태그를 MainCamera 로 지정
• 카메라에 AddComponent >
GvrPointerPhysicsRaycaster 추가
21. 리모콘 인터렉션 구현하기
• 큐브 오브젝트를 레이저 포인터로 가리켜 랜덤 재배
치 시기기
• 레이저 포인터로 Plane의 가고 싶은 곳을 지정해 순
간 이동
22. • 하이라키에 마우스 오른쪽 > UI > EventSystem 추가
• EventSystem 오브젝트에 붙어있는 Standard Input Module 컴포넌트
는 삭제
• EventSystem 에 AddComponent > GvrPointerInputMoudle
• 씬에 새로운 큐브를 추가, 카메라와 다른 장소에 적절히 배치
• 큐브에 EventTrigger 를 추가
• Add New Event Type 으로 이벤트를 듣게 함
• Pointer Click
• Pointer Enter
• Pointer Exit
23. • 새로운 마테리얼 두개를 생성
• 하나는 붉은색, 하나는 푸른색으로 지정 (Albedo 설정)
• 붉은 색은 레이저로 포인팅 했을때 색
• 푸른 색은 조준하지 않았을 때 색
• 큐브에 AddComponent - Teleport 를 추가
• EventTrigger 의 각 이벤트에 + 를 눌러 슬롯 추가
• PointerClick: Teleport.TeleportRandomly
• PointerEnter: Teleport.SetGazedAt (true 체크)
• PointerExit: Teleport.SEtGazedAt (true 체크 X)
24. • Teleport 스크립트를 열고 스크립트 초반부와 함수 추
가
• 초반부
using UnityEngine;
using UnityEngine.EventSystems; // ADD
using System.Collections;
[RequireComponent(typeof(Collider))]
public class Teleport : MonoBehaviour,
IGvrGazeResponder {
public GameObject player; //ADD
25. • 함수
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;
}
26. • Plane 오브젝트에 Teleport 와 EventTrigger 를 추
가
• Teleport 의 Player 슬롯에 Player 오브젝트 할당
• EventTrigger 에 PointerClick 이벤트를 추가
• + 버튼으로 슬롯을 추가하고 Teleport.TeleportTo
를 지정
28. • 데이드림 컨트롤러 에뮬레이터를 폰에 설치
• https://developers.google.com/vr/daydream/
controller-emulator
• 폰을 컴퓨터와 같은 WiFi 네트워크에 연결
• 데이드림 컨트롤러를 켜고, 상단의 IP 주소를 메모
(예, 192.168.6.2224 )
29. • Scripts > Controller > Internal > Emulator 이동
• EmulatorConfig 스크립트 열기
• 하단에
public static readonly string WIFI_SERVER_IP =
"192.168.6.224";
의 IP 주소를 이전에 메모한 주소로 변경
• 카메라에 GvrPointerPhysicsRaycaster 를 추가
• GvrControllerMain 의 설정을 WiFi 로 지정