O czym dzisiaj? Pare zdań o VR Czym jest Cardboard? Przyszłość Cardboard a Dlaczego Unity? Warsztaty
Pare zdań o VR Zalety Młoda, szybko rozwijająca się dziedzina Nisza na rynku (mała konkurencja) Całkiem nowe możliwości Wady Brak jednolitego kierunku rozwoju Oprogramowanie dla programistów jest dopiero w fazie rozwoju Zabawki są raczej drogie (lub wymagają mocnego sprzętu)
Czym jest Cardboard? Kartonowe/Plastikowe pudełko na telefon Najtańsza, najuboższa ale najbardziej mobilna wersja VR Najtańsza nawet jeżeli musimy kupić nowy telefon Najuboższa smartfony mają sporo mniejszą moc obliczeniową w porównaniu do komputerów Najbardziej mobilna brak problemów z kablami, możemy swobodnie się poruszać Sterowanie tylko ruchem głową w niektórych wersjach dodatkowo dostępny jest jeden przycisk
Przyszłość Cardboard a Daydream Pojemnik na telefon + zdalny kontroler Kontroler zawiera: akcelerometr i żyroskop 2 przyciski klikalny touchpad Wymaga telefonów z androidem 7.0 ( daydream ready ) W tej chwili: Huawei nexus 6p, Google Pixel
Warsztaty Co jest potrzebne? Unity wersja 5.2.1 lub nowsze zainstalowane Visual Studio 2015 zainstalowane Android SDK 24 zainstalowane Java DK i RE - zainstalowane Google VR SDK ściągnięte Tworzenie aplikacji VR jest łatwe, ogranicza nas tylko znajomość narzędzi (w tym wypadku silnik Unity)
Warsztaty ćwiczenie 0 Opis interfejsu Unity
Warsztaty ćwiczenie 1 Importujemy wtyczkę Google VR do Unity Assets -> Import Package -> Custom Package Zatwierdzamy import (powinno pojawić się okno, że nasza wersja Unity jest bez natywnego wsparcia i trzeba doimportować brakujące elementy) Jeżeli się nie pojawiło zrobimy to ręcznie Assets -> Import Package -> Custom Package
Warsztaty ćwiczenie 2 Otwieramy scenę demo Folder: GoogleVR->DemoScenes->HeadsetDemo Wybieramy odpowiedni AndroidManifest z przykładowych dołączonych razem z wtyczką Ustawiamy prawidłowo ustawienia do budowania aplikacji File->Build Settings -> Player Settings Sprawdzamy czy nasza komórka ma poprawne ustawienia Developer Tools -> Accept Unknown Sources Ustawiamy platformę Android jako docelową Budujemy aplikację
Warsztaty ćwiczenie 3 Omówienie sceny demo Ustawienia: GvrViewer Widok: Camera / StereoController / GvrHead/ PhysicsRaycaster Interakcja: Recticle / EventTrigger / Canvas / GazeInputModule Czemu na scenie jest FPS Displayer?
Warsztaty ćwiczenie 4 Tworzymy własną scenę Na co trzeba uważać: światła, przezroczystość, dużo fizyki, dużo geometrii Dodajmy jakiś teren (np. paczka Low Poly Park https://www.assetstore.unity3d.com/en/#!/content/61922) Zmieniamy, GvrViewerMaustawienia kamery (pozycja (2.82, 3, 4.3), obrót (0,0,0), widok perspektywiczny, FoV = 60) i terenu (pozycja (0,0,0)) Kopiujemy potrzebne rzeczy ze sceny headset demo (Main Camera, EventSystem, Floor Canvas, GvrFPSCanvasin) Usuwamy starą kamerę i ustawiamy nową na jej pozycji (2.82, 3, 4.3), przenosimy też Floor Canvas (2.81, 1.03, 4.12) Zmieniamy scenę główną i budujemy aplikację ponownie
Warsztaty ćwiczenie 5 Rozbudowujemy własną scenę Dodajemy coś do interakcji (np. paczka Breakable Objects Framework https://www.assetstore.unity3d.com/en/#!/content/16465) Usuwamy folder z Standard Assets, bo robi problemy Dodajemy przed sobą łamliwą beczkę (Assets->GDG_Assets- >Breakable Barrel->Prefabs->Barrel_Controller) Naciskamy Play
Warsztaty ćwiczenie 6 Rozbudowujemy własną scenę cd. Czemu beczka przenikła przez podłogę? -> Brak colliderów Dodajmy kolidery do obiektów Naprawiamy błąd dotyczący Tag a (brakujący Tag Explosive ) Naciskamy Play
Warsztaty ćwiczenie 7 Rozbudowujemy własną scenę cd. Czemu beczka się nie rozpadła? Otwórzmy instrukcję Breakable Framework a Dla kontrolera beczki (Barrel_Controller) zaznaczmy flagi DL1 Enabled, DL2 Enabled, DL3 Enabled Dodajmy do naszej beczki (Barrel_Controller->Barrel) komponent EventTrigger Dodajmy zdarzenie PointerClick, które ma wywołać funkcję Barrel_DL0.explodeObject Naciśnijmy Play, wycelujmy w obiekt kamerą (wyłączyć śledzenie rotacji dla GvrHead) i przyciśnijmy myszką na ekranie
Warsztaty ćwiczenie 8 Rozbudowujemy własną scenę cd. Z czym jest problem? -> problem ze skalą elementów składowych beczki Wejdźmy do tajemniczego folderu Assets->GDG_Assets- >Brakable Barrel -> ImportedMeshes_Don ttouch Zmieńmy skalę mesh y x10 Zmniejszmy siłę eksplozji w Barrel_Controllerze 50x Naciskamy Play, celujemy i boom Budujemy i testujemy na urządzeniu
Warsztaty ćwiczenie 9 Optymalizacja i poprawki Jaka była wydajność na urządzeniu? Optymalizujemy Zmiana materiałów, światła, skybox a i ustawień Testujemy każdą zmianę na urządzeniu, żeby zobaczyć efekt Dodajmy jeszcze pare beczek i zmieńmy im DL_Break_Strength
Warsztaty ćwiczenie 10 Jakieś propozycje co możemy dodać? Nie pisaliśmy żadnych skryptów możemy dodać poruszanie się Standard w VR to teleportacja (mamy tylko jeden przycisk: Wybieramy cel -> naciskamy przycisk -> przenosimy się) Inne pomysły?
Podsumowanie Co warto zapamiętać? Aplikacje VR tworzy się bardzo łatwo, jeżeli korzystamy z gotowego silnika Ogranicza nas tylko znajomość silnika, którego używamy Aplikacje VR wymagają wysokiej wydajności (60+ fps, trzeba się pilnować) Mało możliwości interakcji na Cardboard zie (tylko 1 przycisk) Na rynku pojawił się Daydream, następca Cardboard a (wyposażony w kontroler z akcelerometrem, żyroskopem i 2 przyciskami i klikalnym touchpadem) Cena 79$ + highend owy telefon ~500+$ Rynek i narzędzia szybko się zmieniają (Unity 5.5 release w ~listopadzie - będzie posiadało prawdopodobnie natywne wsparcie dla Cardboard a i Daydream a nasz plugin stanie się w dużym stopniu bezużyteczny)