• Nie Znaleziono Wyników

Podstawy tworzenia aplikacji wirtualnej rzeczywistości

N/A
N/A
Protected

Academic year: 2021

Share "Podstawy tworzenia aplikacji wirtualnej rzeczywistości"

Copied!
10
0
0

Pełen tekst

(1)

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

(2)

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

(3)

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)

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

(5)

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”.

(6)

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:

(7)

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)

(8)

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

(9)

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:

(10)

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

... ... ... ... ...

Cytaty

Powiązane dokumenty

Kompilacja aplikacji – Clean and Build (wybór z listy po kliknięciu prawym klawiszem na nazwę projektu w zakładce Projects)... Zakładka Output

Technologia wirtualnej rzeczywistości to obraz rzeczywistości sztucznej, utwo- rzonej przy użyciu technologii informatycznych, oparty na multimedialnym kreo- waniu obrazu

Przykład tworzenia aplikacji mobilnej w środowisku Android Studio Tworzenie nowej aplikacji w Android Studio wymaga wybrania w menu po- zycji File → New → New Project…,

The interface will consist of a JFrame (the calculators window), a JTextArea (for entering data) and a custom component called the CalculatorButtonPanel that builds up the number

Producent po włożeniu do pudełka liczby i wyświetleniu jej na ekranie zostaje uśpiony na losowy wybrany czas między 0 a 100 milisekund zanim przejdzie

W obu plikach stwórz również metody main przyjmujące jako argument dwie liczby i następnie wywołujące drugą metodę z danej klasy zwracającą wynik operacji odpowiadającej nazwie

Następnie utwórz klasę zagnieżdżoną w tej klasie, zawierającą metodę, która modyfikuje zmienną klasy zewnętrznej i wywołuje jej metodę.. W drugiej metodzie klasy

In the article the scale of unemployment structure in Wadowice district and analysis of active forms of unemployment reduction efficiency during period 1999–2006