★ 이 책에서 다루는 내용 ★
■ 구글 카드보드 VR 빌드
■ 카드보드 SDK 자바 클래스 및 인터페이스를 탐구하고 실용적인 VR 프로젝트에 적용
■ 쉽고 간단하게 안드로이드 스튜디오, 안드로이드 SDK 및 자바 언어 사용
■ 메모리 관리와 배터리 수명을 포함해, 모바일과 카드보드 어플리케이션을 위한 소프트웨어 개발 및 안드로이드 모범 사례 활용
■ VR 내의 메뉴와 시선을 기반으로 한 선택을 위한 사용자 인터페이스 테크닉 구현
■ 가상 현실, 특히 모바일 카드보드 VR 경험과 관련된 과학, 심리학, 수학과 기술 활용
■ 구글 디자인 랩에 의해 추진된 사례를 포함한 카드보드 VR 모범 사례 이해
★ 이 책의 대상 독자 ★
이 책은 구글 카드보드 네이티브 SDK를 사용해 구글 카드보드 앱을 공부하고, 개발하고 싶어 하는 안드로이드 개발자를 대상으로 한다. 이 책을 읽는 독자라면 안드로이드 개발 및 자바 언어에 관한 지식이 어느 정도 있겠지만, 3D 그래픽을 비롯해 가상현실이나 구글 카드보드는 생소할 수도 있다. 초보 개발자와 안드로이드 SDK에 익숙하지 않은 개발자라면 이 책이 다소 어렵다고 느낄지 모른다. 안드로이드에 관한 배경지식이 없는 개발자라면 유니티(Unity) 같은 게임 엔진으로 카드보드 앱을 만드는 게 좀 더 쉬울 수도 있다.
★ 이 책의 구성 ★
1장, ‘모두를 위한 가상현실’에서는 구글 카드보드의 정의를 살펴보고, 사용 방법과 VR 기기 범주 내에서 카드보드가 차지하는 위치를 살펴본다.
2장, ‘스켈레톤 카드보드 프로젝트’에서는 안드로이드에서 카드보드 앱의 구조와 안드로이드 스튜디오를 살펴보고, 카드보드 자바 SDK를 도입해 스타터 카드보드 프로젝트를 구축한다.
3장, ‘카드보드 박스’에서는 트랜스포메이션, 스테레오스코픽 카메라 뷰, 헤드 로테이션 등 3D 큐브 모델을 이용해 처음부터 카드보드 안드로이드 앱을 만드는 방법을 설명한다(구글의 트래저 헌트(Treasure Hunt) 샘플을 기반으로 한다). 또한 이 장에서는 3D 기하학, OpenGL ES, 셰이더, 매트릭스 수학, 렌더링 파이프라인에 대해서도 알아본다.
4장, ‘런처 로비’에서는 휴대전화에서 다른 카드보드 앱을 시작할 수 있는 앱을 만들어 본다. 이 프로젝트에서는 3D그래픽을 사용하지 않고, 스크린 공간에 스테레오스코픽 뷰를 시뮬레이트하고 시선 기반(gaze-based)으로 구현한다.
5장, ‘렌더박스 엔진’에서는 저수준 OpenGL ES API 콜을 머티리얼, 렌더 오브젝트, 컴포넌트, 트랜스폼 클래스로 추출해 새로운 카드보드 VR 앱을 만들기 위한 간단한 그래픽 엔진을 만드는 방법을 보여준다. 라이브러리는 이어지는 프로젝트에서 계속 사용되며 점점 기능이 추가된다.
6장, ‘태양계’에서는 태양열 에너지원, 텍스처 매핑 자료와 셰이더를 지닌 구형 행성 및 행성의 태양 궤도 애니메이션, 은하수의 별무리와 함께 태양계 시뮬레이션 과학 프로젝트를 구축한다.
7장, ‘360도 갤러리’에서는 일반 사진과 360도 사진을 볼 수 있는 미디어 뷰어를 만들고, 휴대전화의 카메라 폴더에 있는 사진을 격자형 작은 이미지로 로딩해서 시선을 기반으로 보고 싶은 사진을 선택해본다. 또한 더 나은 사용자 경험을 위해 프로세스 스레딩을 추가하는 방법과 다른 애플리케이션에서 이미지를 볼 수 있게 안드로이드 인텐트를 지원하는 방법을 설명한다.
8장, ‘3D 모델 뷰어’에서는 렌더박스 라이브러리를 사용해 렌더링된 OBJ 파일 형식의 3D 모델을 위한 뷰어를 설치해본다. 또한 머리의 움직임에 맞춰 모델의 뷰를 제어하는 방법도 살펴본다.
9장, ‘뮤직 비주얼라이저’에서는 전화기에 설치된 오디오 플레이어의 파형(Waveform)과 FFT 데이터를 기반으로 애니메이팅하는 VR 뮤직 비주얼라이저를 구축한다. 기하학적 애니메이션과 역동적 텍스처 셰이더 및 새로운 비주얼라이제이션을 추가하기 위해 사용되는 일반적인 아키텍처를 구현한다. 그 후 무작위로 안팎으로 전환하는 동시 다발 시각화(multiple concurrent visualizations) 및 트리피 트레일 모드(trippy trails mode)를 살펴본다.
★ 지은이의 말 ★
구글 카드보드는 저렴한 비용으로 가상의 3D 환경을 체험해 볼 수 있는 입문용 도구다. 구글 카드보드의 애플리케이션은 스마트폰 애플리케이션만큼이나 폭넓고 다양하다. 이 책은 네이티브 자바 SDK를 이용해 구글 카드보드에서 실행할 수 있는 다양하고 흥미로운 프로젝트를 만들어 보는 기회를 제공한다. 구글 카드보드와 호환 가능한 모바일 VR 앱을 만들 수 있는 모범 사례 및 방법을 제공하며, 개발자가 모바일 기기와 모바일 사용자를 위한 품질 좋은 콘텐츠를 만들 수 있게 하는 것이 목적이다.
★ 옮긴이의 말 ★
가상현실(Virtual Reality)은 실제와 유사하지만 실제로 존재하지 않는 인공적으로 만든 환경을 의미한다. 가상현실의 개념은 19세기에 등장했고, 가상현실 기술은 1960년대에 최초로 등장했다. 1990년대 공각기동대 애니메이션이나 매트릭스 같은 영화로 인해 가상현실은 급속히 관심을 받게 되었다. 그 이후 실제로 우리가 보편적으로 사용할 수 있는 가상현실 도구인 구글 카드보드(2014), 오큘러스 리프트(2016), 기어 VR(2105), 플레이스테이션 VR(2016) 등이 등장하면서 각광을 받고 있다. 가상현실은 게임, 방송 등 전방위 분야에 적용할 수 있기 때문에 많은 투자가 이뤄지고 있다. 가상현실을 만드는 기술에는 몇 가지가 있는데, 첫 번째는 가상현실 데이터를 만드는 기술과 가상현실에 입력을 이루는 기술이다. 가상현실 데이터를 만들려면 3D 공간 구현, 3D 렌더링 같은 컴퓨터 그래픽 기술이 필요하다. 구글에서는 구글 VR 개발자 사이트(https://developers.google.com/vr/)에서 VR과 관련된 두 가지 SDK를 제공하는데, 바로 카드보드 SDK와 데이드림 SDK다. 카드보드 SDK를 이용하면 안드로이드 및 iOS에서 실행되는 VR 앱을 간단하고 빠르고 재미있게 만들 수 있다. 반면 데이드림 SDK를 이용하면 좀 더 고급스러운 VR 앱을 만들 수 있다. 하지만 별도의 데이드림용 하드웨어가 필요하다. 이 책은 구글의 카드보드 SDK를 이용해서 쉽고 빠르게 앱을 만들 수 있는 방법을 알려준다. 안드로이드 스튜디오를 이용해서 앱을 만들기 때문에 안드로이드 스튜디오를 다루는 방법을 알아야 하며, VR 앱 자체를 간단한 3D 모델을 이용해서 설명하기 때문에 3D 모델링, 렌더링 등 컴퓨터 그래픽에 대한 기본적인 이해도 필요하다. 이 책에는 최신 카드보드 VR의 내용이 모두 담겨 있다.