Wiele osób nieinteresujących się nowymi technologiami, wirtualną rzeczywistość kojarzy głównie z filmem Science Fiction z 1999 roku.
Matrix VR

Mimo, że zagłębienie się w cyfrowy świat nie jest aż tak bolesne jak pokazane to zostało w Matrixie, to wciąż wydaje się odrobinę przerażające.

VR Zombies
W tym wpisie opowiem nieco o tej zdobywającej coraz większą popularność technologii.

W jaki sposób działają hełmy wirtualnej rzeczywistości?
Akcesorium do telefonu, którym bawię się już od jakiegoś czasu to Gear VR. Są to gogle nafaszerowane czujnikami mającymi za zadanie śledzenie ruchów naszej głowy oraz przesyłanie danych do telefonu komórkowego, który wpinamy bezpośrednio przed dość mocno przybliżające soczewki. Telefon pełni tutaj rolę komputera, który przerabia informacje oraz dwóch ekranów (po jednym na oko), na których wyświetlane są treści.

Reszta urządzeń dostępnych lub wkrótce dostępnych na rynku działa bardzo podobnie –  główne różnice to zastąpienie telefonu wbudowanym wyświetlaczem oraz kabel łączący gogle z komputerem lub konsolą.

Materiały tworzone na tego typu gadżety działają niemal identycznie jak gry komputerowe, w których mamy widok z pierwszej osoby – z tą różnicą, że mysz, którą sterujemy została zastąpiona akcelerometrem. Ruch głową w lewo odpowiada przesunięciu myszy w lewo, ruch głową w górę to przesunięcie myszy do przodu i tak dalej. Monitor zaś został zastąpiony ekranem przystawionym bardzo blisko oczu. Całości dopełnia odcięcie nam dopływu światła z zewnątrz, co pozwala uwierzyć w realizm wyeksponowanego świata.

Tworzenie własnych treści
Jednym ze sposobów na stworzenie własnych materiałów na gogle obsługujące komórkę jest wykonanie sceny w programie do grafiki 3d oraz na jej podstawie stworzenie pliku wykonywalnego dla telefonu.

Unity plus Blender

Blender jest najpopularniejszym open source’owym programem do tworzenia trójwymiarowych obiektów. W rękach doświadczonej osoby staje się naprawdę potężnym narzędziem.

Unity3D jest natomiast niedarmowym oprogramowaniem do tworzenia gier. Istnieje również jego darmowa wersja, która względem płatnej nie jest jakoś specjalnie okrojona.

Kombinacja powyższych aplikacji to właściwie wszystko czego potrzebujemy do stworzenia prostej gry na Gear VR czy inne tego typu gogle.

Prosta aplikacja na Gear VR w 5 krokach
Zanim rozpoczniemy musimy się upewnić, że mamy odpowiednie narzędzia. W nawiasach umieściłem wersje programów jakimi dysponowałem w momencie pisania artykułu: Blender (2.76), Unity3D (5.3.2), aplikacja Device ID(1.3.2) od wydawcy Evozi pobrana z Google Play oraz oczywiście Gear VR z kompatybilnym telefonem.

1. Generowanie pliku OSIG
Uruchamiamy Device ID na telefonie, na którym będziemy testować naszą aplikację i kopiujemy wyświetlony Hardware Serial.

Device ID

Następnie wchodzimy na stronę https://developer.oculus.com/osig/, po czym wpisujemy skopiowany ciąg znaków i pobieramy nasz Oculus Signature File.

2. Tworzenie projektu w Unity3D
Otwieramy Unity3D i tworzymy nowy projekt 3D. Powiedzmy, że będzie nazywał się Monkey3D. Następnie musimy zrobić w jego lokalizacji następującą ścieżkę: Monkey3D/Assets/Plugins/Android/assets, w której umieszczamy nasz wygenerowany Oculus Signature File. Da się to zrobić bezpośrednio z poziomu Unity w zakładce project:

OSIG place

3. Tworzenie sceny w Blenderze i eksportowanie jej do projektu Unity3D
By wygenerować prostą scenę musimy wykonać kilka krótkich czynności. Po pierwsze otwieramy Blender i zamykamy okno powitalne. Na środku sceny powinien znajdować się szary sześcian. My natomiast mamy o wiele większe aspiracje niż jakiś tam sześcian, więc zaznaczamy go prawym przyciskiem myszy i usuwamy za pomocą klawisza x. Gdy na scenie nie ma już żadnego obiektu, możemy dodać coś bardziej skomplikowanego, na przykład głowę małpy. Za pomocą skrótu shift+a otwieramy menu kontekstowe Add i z podmenu Mesh wybieramy Monkey.

Blender

Przy użyciu ctrl+s zapisujemy scenę w miejscu, gdzie przed chwilą utworzyliśmy projekt Unity: Monkey3D/Models/Monkey.blend.

4. Prezentacja małpiej głowy wewnątrz aplikacji
Wracamy do Unity – tam czeka już na nas stworzony w blenderze obiekt, który pozostaje nam jedynie przeciągnąć na scenę.

Drag and drop to scene

Teraz byłoby miło, gdyby głowa nie tylko wisiała w przestrzeni, ale również coś robiła, na przykład obracała się wokół osi Z. By to zrobić klikamy na obiekt małpki, który jest na scenie i po prawej stronie w zakładce Inspector dodajemy do niej nowy skrypt:

Adding script to Unity

Wewnątrz skryptu aktualizujemy metodę Update do następującej formy

void Update () {
     transform.Rotate (0f, 0f, 50f * Time.deltaTime);
}

Linia wewnątrz metody Update sprawia, że w ciągu każdej sekundy obiekt obracany jest o 50 stopni wokół osi Z.

5. Konfiguracja i budowanie pliku instalacyjnego
Małpia aplikacja jest skończona, nadszedł czas by wybudować plik wykonywalny przez telefon i go uruchomić. By to zrobić należy kolejno otworzyć File -> Build Settings. Tam zmienić platformę na Android i ustawić Texture Compression na ETC2. Następnie w podmenu Player Settings, zaznaczamy Multithreaded Rendering oraz Virtual Reality Supported. Możliwe, że Unity będzie od nas wymagało również zmiany Bundle Identifier, więc je również zmieniamy na takie jakie nam pasuje. Gdy opcje konfiguracyjne mamy za sobą, możemy wybudować naszą aplikację za pomocą przycisku Build.

Unity build options

Gra jest gotowa! Teraz wystarczy przenieść plik .apk na telefon i zainstalować aplikację.

A oto film jak Małpka 3d prezentuje się bezpośrednio na wyświetlaczu telefonu, po wpięciu go w Gear VR:

Tryton w wirtualnej rzeczywistości!
Małpka okazała się niezbyt porywającym wyzwaniem, więc pozwoliłem sobie spędzić odrobinę więcej czasu nad czymś bardziej skomplikowanym. Nie musiałem daleko szukać inspiracji, za cel wziąłem sobie to, o czym w Gdańskim Kainosie ostatnio jest najgłośniej – nowe biuro, a przynajmniej jego część:

Przycięcia w obu prezentacjach nie występują na samych goglach, jest to efekt streamowania obrazu z telefonu na komputer, na którym filmy były rejestrowane.