KATEDRA SYSTEMÓW MULTIMEDIALNYCH
Technologie multimedialne
Ćwiczenie nr 1
0:
Podstawy tworzenia aplikacji wirtualnej rzeczywistości
Opracowanie:
mgr inż. Piotr Bratoszewski
1. Wprowadzenie
Niniejsze laboratorium dotyczy tworzenia aplikacji wirtualnej rzeczywistości na system VR
Oculus Rift Development Kit 2 (DK2). Istenieje wiele możliwości tworzenia aplikacji, od
programów natywnych wykorzystujących opengl, directx oraz sdk danych gogli VR.
Najprostszym i najszybszym sposobem na stowrzenie aplikacji jest skorzystanie z silników
gier wspierających VR (np. Unity 3D lub Unreal Engine). Podczas laboratorium wykorzystany
zostanie podejście z silnikiem Unity 3D.
2. Wykorzystywane narzędzia
Blender – darmowe i otwarte środowisko do modelowania i renderowania animacji
trójwymiarowych. Pozwala na tworzenie fotorealistycznych renderów z wykorzystaniem
silnika Cycles, kóry umożliwia renderowanie CPU&GPU, podgląd w czasie rzeczywistym,
wsparcie dla oświetlenia HDR. Charakterystyczne dla środowiska jest oparcie procesu
tworzenia (modelowania) na skrótach klawiszowych. Wszystkie niezbędne narzędzia przy
modelowaniu posiadają swoje skróty klawiszowe co dla osoby z odpowiednim
doświadczeniem jest bardzo przydatne i skracające ilość poświęcanego na tworzenie.
Blender:
https://www.blender.org
Unity 3D – środowisko do tworzenia gier 2D oraz 3D. Dostępne w wersji darmowej (dla
twórców nieprzekraczających 100 tysięcy dolarów dochodów rocznie) i profesjonalnej
($75/mo). Umożliwia tworzenie gier na wiele platform: PC/Mac/Android/iPhone/Web.
Wiodące na świecie Dostępne wiele dodatkowych komponentów takich jak tekstury,
modele, skrypty (najczęściej płatnych) w dedykowanym sklepie (Asset store)
umożliwiających przyspieszenie procesu tworzenia gier. Tworzenie gier polega na
korzystaniu z obiektów predefiniowanych typów i umieszczaniu ich na scenie, natomiast ich
zachowanie kontrolowane jest przez skrypty pisane przez twórce. Możliwe jest pisanie
skryptów w językach C#, JavaScript lub Boo. Dostępny jest również silnik fizyki, silnik
dźwiękowy oraz możliwość tworzenia obiektów 3D i ich animacji. Unity jest dystrybuowane
razem z kompilatorem do skryptów – MonoDevelop.
Znane gry stworzone z wykorzystaniem Unity: SUPERHOT (PC/Mac/Linux Xbox One), Ori and
the black forest (PC/Xbox360/Xbox One), Dead Trigger 2, HearthStone: Heroes of Warcraft.
Unity 3D:
https://unity3d.com
Oculus Development Kit 2 oraz Oculus SDK – gogle wirtualnej rzeczywistości (ang. HMD –
Head Mount Display) stworzone przez firmę Oculus VR. Zostały ufundowane poprzez serwis
crowdfundingowy Kickstarter w 2012 roku, na którym uzbierano $2 437 429. W marcu 2014
roku Facebook wykupił Oculusa za 2 milardy dolarów. Wersja konsumencka urządzenia,
Oculus Rift CV1, miała premierę 28 marca 2016 roku. W trakcie tworzenia ostatecznej wersji
wypuszczono do testów dwie wersje deweloperskie DK1 oraz DK2 w celu zebrania opinii od
deweloperów i testerów oraz rozpoczęcia tworzenia oprogramowania i szukania możliwych
zastosowań dla wirtualnej rzeczywistości.
Oculus Rift:
https://www.oculus.com/en-us
Android + Google Cardboard – najprostszy I najtańszy system virtualnej rzeczywistości może
być oparty o standardowy smartfon, odpowiednią aplikację oraz specjalnie przygotowaną
obudowę. Obudowa tam może składać się z odpowiednio złożonego i wyciętego kartonu z
dwoma soczewkami na oczy.
3. Zadania do wykonania
Podczas laboratorium należy stworzyć aplikację umożliwiającą odtworzenie filmu nagranego
kamerą 360 stopni na komputerze PC wyposażonym w okulary Oculus DK2 oraz aplikacji
mobilnej na platformę Android. Następnie należy porównać proces tworzenia
oprogramowania na obie platformy oraz ocenić jakość ostatecznego efektu pod względem
poziomu imersji w świat wirtualny.
Zadania:
1. W pierwszym etapie należy z wykorzystaniem środowiska blender stworzyć
odpowiednio przygotowany obiekt sferyczny (ang. UV Sphere)
2. Zaimportować stworzoną sferę do oprogramowania Unity
3. Nanieść na sferę teksturę, będącą w rzeczywistością kolejnymi klatkami filmu 360
stopni
4. Odwrócić płaszczyznę obiektu sfery tak, aby patrzyła do wewnątrz
5. Umieścić kamerę wewnątrz sfery
6. Skonfigurować tak projekt w Unity, aby uruchamiał się z wykorzystaniem Oculusa
lub by stworzył aplikację mobilną do uruchomienia na smartfonie
4. Zadania do wykonania
Stworzenie obiektu sferycznego w środowisku blender:
1. Uruchom pusty projekt w programie Blender 3D 2. Wyczyść scenę z obiektów
3. Pamiętaj, że jeśli coś Ci się nie udaje w blenderze (a dzieje się tak często, naciśnij Escape gdy jeszcze nie zaakceptowałeś akcji lewym przyciskiem myszy. Model powróci wtedy do stanu sprzed akcji)
4. Dodaj element (Shift+A) UV Sphere
5. Przejdź w tryb edit mode (Tab) i zaznacz górny I dolny wierzchołek sfery (najpierw górny prawym przyciskiem myszy a potem dolny przytrzymując przy tym Shift). Po zaznaczeniu - usuń je (X -- Vertices).
Uwaga: Podczas tworzenia obiektu możliwe posiłkowanie się poniższym tutorialem: https://youtu.be/yc0b5GcYl3U
6. Następnie zaznacz powstałe pętle (górne i dolne krawędzie sfery) (alt+prawy przycisk myszy). Po zaznaczeniu kliknij po kolei klawisze: E, S, Shift+Z aby zmniejszyć prześwit (dziurę) powstałą w sferze. Nie domykaj jej do końca.
Naciśnij na klawiaturze numerycznej 1 potem 5 żeby mieć widok na sferę „z boku”, naciśnij po sobie klawisze: S, Z i delikatnymi ruchami myszą (można z Shiftem dla dodatkowej precyzji) spróbuj przywrócić kształt kuli (po usunięciu wierzchołków była ścięta).
7. Następnie należy „rozwinąć” (ang. unwrap) sferę w postać prostokąta na który w przyszłości będzie można nałożyć prostokątną teksturę. W tym celu należy zaznaczyć jedną z pionowych krawędzi sfery (Alt+prawa mysz) następnie nacisną razem klawisze Ctrl+E i wybrać „Mark Seam”.
8. Następnie zaznacz wszystkie krawędzie (dwukrotne naciśnięcie klawisza A) następnie naciśniecie klawisza U aby otworzyć menu „rozwijania” (Unwrap menu) i wybrać Sphere Projection. Następnie od razu wybrać w panelu narzędzi (T, Tool panel) w ustawieniach Unwrap settings: „Align to Object” oraz „Scale to Bounds”)
9. Zmień tryb widoku na UV Imaging:
10. Teraz możliwe jest domknięcie sfery w tym celu należy zaznaczyć górną (Alt+prawa mysz) i dolną pętlę (przytrzymując przy tym jeszcze shift: Shift+Alt+prawa mysz). Po zaznaczeniu należy nacisnąć (tak jak w kroku 6.) E, S, Shift+Z i ostatecznie nacisnąć cyfrę 0. Sfera powinna się domknąć.
11. Należy powstały model sfery wyeksportować jako Wafefront „.obj”
Odtworzenie filmu 360 w programie Unity:
1. Otwórz w zależności na jakim stanowisku siedzisz projekty w Unity (VR_Android lub VR_Oculus)
2. Przeciągnij plik z obiektem sfery do Assets projektu 3. Umieść sferę na scenie
4. Upewnij się że kamera oraz sfera jest w środku sceny (Position: x=0,y=0,z=0)
5. Dodaj do assets shader (prawy przycisk myszy w Assets) Create > Shader> Standard Surface Shader
6. W shaderze dodaj następującą linijkę kodu: …
LOD
200
cull
off
CGPROGRAM
…
Dzięki temu tekstura naniesiona na sferę będzie widoczna zarówno wewnątrz jak i na zewnątrz obiektu (pamiętaj, że kamerę umieszczasz w środku)
7. ANDROID: przenieś skrypt PlayJpegs.cs na obiekt sfery, powinien się on pojawić jako nowy komponent obiektu.
OCULUS/PC: przenieś skrypt PlayMovie.cs na obiekt sfery, powinien się on pojawić jako
nowy komponent obiektu.
W
p r z
Uwaga: Android nie wspiera wykorzystywanego w skrypcie PlayMovie.cs
obiektu MovieTexture, dlatego należało pobrać osobne klatki z filmu, zapisać jako pliki .jpeg i dynamicznie zmieniać teksturę podczas działania aplikacji. Te czynności wykonuje skrypt PlayJpegs.cs.
Eksport ramek z filmu można wykonać za pomocą narzędzia ffmpeg:
ffmpeg -i "your_original_file.mp4" -s 2048x2048 -q:v 5 "your_project_folder/Assets/Resources/frame%4d.jpg
W wypadku Oculusa możliwe jest skorzystanie zarówno ze skryptu PlayMovie jak i PlayJpegs. Uruchom oba dla porównania (są to różne filmy).
8. ANDROID: Aby umożliwić obrót kamery należy skorzystać z wbudowanych w telefon
żyroskopów i danych z nich pochodzących. Przeciągnij skrypt GyroCam na obiekt kamery.
Oculus: Możliwe jest uruchomienie aplikacji – w tym celu wystarczy nacisnąć przycisk
play. Dodatkowo możliwe jest przeciągnięcie skryptu LogVRData na kamerę. Skrypt ten w czasie runtimu pokazuje ustawienie kamery zgodnie z czujnikami z Oculusa
9. ANDROID: Zbuduj aplikację używając: File > Build & Run i wybierając Android. Pamiętaj o ustawieniach odtwarzacza – Player Settings: Ustaw odpowiednio Company Name, Product Name, opcjonalnie ikonę aplikacji oraz Bundle Identifier. Ustaw Minimum Api Level na 4.4. Zbudowany plik z apką przeciągnij do folderu Download na komórce, następnie zainstaluj apkę klikając na nią w menadżerze plików na komórce.
Wykorzystane w ćwiczeniu filmy pochodzą ze strony:
Sprawozdanie
Technologie multimedialne
Ćw. 10: Podstawy tworzenia aplikacji wirtualnej rzeczywistości
Data:
Wykonawcy:
……….
………..
………..
………..
………..
1. Opisz łatwość lub trudność procesu przygotowywania aplikacji na urządzenia wirtualnej rzeczywistości (modelowanie, skrypty, czas, itd.):
... ... ... ... ...
2. Porównaj jakość stworzonego oprogramowania pomiędzy aplikacją na Oculusa względem Cardboxa (poziom imersji, jakość tekstur, śledzenie ruchów głowy)
... ... ... ... ...
3. Jakie widzisz zastosowanie wirtualnej rzeczywistości w życiu codziennym lub w przemyśle
... ... ... ... ...