Started describing VR Plugins for Unity
Explained the native Unity VR API Started SteamVR plugin
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
% makeindex style file created by the glossaries package
|
||||
% for document 'thesis' on 2022-3-3
|
||||
% for document 'thesis' on 2022-3-5
|
||||
actual '?'
|
||||
encap '|'
|
||||
level '!'
|
||||
|
||||
69
bib.bib
69
bib.bib
@@ -520,3 +520,72 @@
|
||||
author = {Oculus},
|
||||
note = {letzer Zugriff 5.3.2022},
|
||||
}
|
||||
|
||||
//Mache die Kommentare grade so weil ich den Überlick verloren habe (Was gehört zu was, etc. ...)
|
||||
////////////////VR in Unity////////////////
|
||||
@misc{Unity_VR_Overview_2022,
|
||||
note = {letzter Zugriff am 05.03.2022},
|
||||
author = {Unity},
|
||||
title = {Unity - VR Overview},
|
||||
url = {https://docs.unity3d.com/540/Documentation/Manual/VROverview.html},
|
||||
year = {2016},
|
||||
}
|
||||
|
||||
////////////////SteamVR////////////////
|
||||
@misc{SteamVR_Overview_2022,
|
||||
note = {letzter Zugriff am 05.03.2022},
|
||||
author = {Valve},
|
||||
title = {Valve - SteamVR Overview},
|
||||
url = {https://valvesoftware.github.io/steamvr_unity_plugin/},
|
||||
year = {2020},
|
||||
}
|
||||
|
||||
@misc{SteamVR_Quickstart_2022,
|
||||
note = {letzter Zugriff am 05.03.2022},
|
||||
author = {Valve},
|
||||
title = {Valve - SteamVR Quickstart},
|
||||
url = {https://valvesoftware.github.io/steamvr_unity_plugin/articles/Quickstart.html},
|
||||
year = {2020},
|
||||
}
|
||||
|
||||
@misc{SteamVR_Render_Models_2022,
|
||||
note = {letzter Zugriff am 05.03.2022},
|
||||
author = {Valve},
|
||||
title = {Valve - SteamVR Render Models},
|
||||
url = {https://valvesoftware.github.io/steamvr_unity_plugin/articles/Render-Models.html},
|
||||
year = {2020},
|
||||
}
|
||||
|
||||
@misc{SteamVR_Input_2022,
|
||||
note = {letzter Zugriff am 05.03.2022},
|
||||
author = {Valve},
|
||||
title = {Valve - SteamVR Input},
|
||||
url = {https://valvesoftware.github.io/steamvr_unity_plugin/articles/SteamVR-Input.html},
|
||||
year = {2020},
|
||||
}
|
||||
|
||||
@misc{SteamVR_Skeleton_Input_2022,
|
||||
note = {letzter Zugriff am 05.03.2022},
|
||||
author = {Valve},
|
||||
title = {Valve - SteamVR Skeleton Input},
|
||||
url = {https://valvesoftware.github.io/steamvr_unity_plugin/articles/Skeleton-Input.html},
|
||||
year = {2020},
|
||||
}
|
||||
|
||||
@misc{SteamVR_Interaction_System_2022,
|
||||
note = {letzter Zugriff am 05.03.2022},
|
||||
author = {Valve},
|
||||
title = {Valve - SteamVR Interaction System},
|
||||
url = {https://valvesoftware.github.io/steamvr_unity_plugin/articles/Interaction-System.html},
|
||||
year = {2020},
|
||||
}
|
||||
|
||||
@misc{SteamVR_Skeleton_Poser_2022,
|
||||
note = {letzter Zugriff am 05.03.2022},
|
||||
author = {Valve},
|
||||
title = {Valve - SteamVR Skeleton Poser},
|
||||
url = {https://valvesoftware.github.io/steamvr_unity_plugin/articles/Skeleton-Poser.html},
|
||||
year = {2020},
|
||||
}
|
||||
|
||||
////////////////OpenVR////////////////
|
||||
|
||||
BIN
pics/steamVR-Input-SaveAndGenerate.png
Normal file
BIN
pics/steamVR-Input-SaveAndGenerate.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 20 KiB |
BIN
pics/steamVR_Input_CopyJSON.png
Normal file
BIN
pics/steamVR_Input_CopyJSON.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 7.5 KiB |
BIN
pics/steamVR_Input_MenuItem.png
Normal file
BIN
pics/steamVR_Input_MenuItem.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 33 KiB |
BIN
pics/steamVR_render_models_script.png
Normal file
BIN
pics/steamVR_render_models_script.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
BIN
pics/unity_basis_vr_api_settings.png
Normal file
BIN
pics/unity_basis_vr_api_settings.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 22 KiB |
@@ -205,6 +205,7 @@ RaycastHit hit;
|
||||
\end{lstlisting}
|
||||
|
||||
\section{3d Welt}\label{sec:3d-world}
|
||||
\setauthor{Florian Beckerle}
|
||||
Jedes Spiel besitzt eine Spielwelt.
|
||||
Babei ist es egal ob es sich um eine 3D oder 2D Applikation handelt.
|
||||
Unter den Begriff Spielwelt fällt die Umgebung in welcher sich der Spieler befindet.
|
||||
@@ -252,6 +253,7 @@ In Forsaken starb Cayde jedoch und viele trauerten um ihn, als Gedenken wurde di
|
||||
|
||||
|
||||
\subsection{City Grid System}\label{subsec:city-grid-system}
|
||||
\setauthor{Florian Beckerle}
|
||||
Um die Gestaltung der Welt in BeamVR zu erleichtern, wurde ein Grid System verwendet.
|
||||
Dafür ist die Stadt in ein Raster aufgeteilt, an welchem sich alle Objekte der Welt auf allen 3 Achsen (x,y,z) orientieren.
|
||||
Unity stellt, wie in Abb. ~\ref{fig:grid-system-unity} zu sehen, so ein Grid Snapping System zur Verf\"ugung.
|
||||
@@ -280,6 +282,7 @@ Als n\"achstes findet man unter dem Bereich World Grid ein Attribut namens Size,
|
||||
|
||||
|
||||
\subsection{Stadt}\label{subsec:city}
|
||||
\setauthor{Florian Beckerle}
|
||||
Jede Stadt hat viele verschiedene Strukturen wie zum Beispiel Sehensw\"urdigkeiten, Bauwerke und Einrichtungen wie Kinos, Theater oder Restaurants.
|
||||
F\"ur BeamVR wurden daher insgesamt \"uber 34 Geb\"aude Modelle erstellt um eine Vielfalt in der Umgebung zu erreichen, siehe Abb. ~\ref{fig:beamvr_building-variety}.
|
||||
|
||||
@@ -300,6 +303,7 @@ TODO: PERFORMANCE ERHÖHEN MITHILFE VON MAPS UND TEXTUREN ERKKLÄREN!!!! (hier)
|
||||
|
||||
|
||||
\subsection{Tag Stadt}\label{subsec:day-city}
|
||||
\setauthor{Florian Beckerle}
|
||||
Es wurden 17 der 34 verschieden Geb\"aude f\"ur diese Map modelliert, siehe Abb. ~\ref{fig:beamvr_building-variety}.
|
||||
Der Fokus bei der Gestaltung des Bauwerke lag darauf, dass diese m\"oglichst realistisch aussehen und dennoch nicht zu rechenaufwendig in der Darstellung sind.
|
||||
Daher wurden Texturen verwendet um kleinere Details an den Fassaden darzustellen, statt diese zu modellieren.
|
||||
@@ -316,6 +320,7 @@ Daher wurden alle umliegenden Bauwerke mindestens 3 Meter h\"oher gemacht, als d
|
||||
\end {figure}
|
||||
|
||||
\subsection{Nacht Stadt}\label{subsec:night-city}
|
||||
\setauthor{Florian Beckerle}
|
||||
In der Nacht Version der Stadt wurde die Skybox angepasst.
|
||||
Diese zeigt nun einen Sternenhimmel.
|
||||
Es handelt sich hierbei um eine Sphere oder Box, welche sich um die Spielwelt befindet, sie wird dazu benutzt um einen Himmel oder andere Umgebungen,
|
||||
@@ -332,6 +337,7 @@ haben noch eigene Lichtquellen.
|
||||
\end {figure}
|
||||
|
||||
\subsection{Apocalypse Stadt}\label{subsec:apocalypse-city}
|
||||
\setauthor{Florian Beckerle}
|
||||
F\"ur diese Umgebung wurden alle Geb\"aude nochmal \"uberarbeitet.
|
||||
Statt den intakten Glasfassaden werden nun vor barrikadierte Fenster und Ziegelsteine ohne Verputz f\"ur die Bauwerke verwendet, siehe Abb. ~\ref{fig:beamvr_damaged_texture}.
|
||||
Durch diese \"Anderung sieht die Stadt verlassen und postapokalyptisch aus.
|
||||
@@ -356,6 +362,7 @@ Die Planzen und B\"aume wurden durch ausgetrocknete B\"usche ausgetauscht, damit
|
||||
|
||||
|
||||
\section{Sound Design}\label{sec:sound}
|
||||
\setauthor{Florian Beckerle}
|
||||
Ohne Sound Design würden die Maps von BeamVR unrealisitsch, da in einer Stadt immer etwas los ist.
|
||||
In der virtuellen Umgebung der verwendeten Game Engine existieren anfangs keine Geräusche, diese m\"ussen von den Entwicklern selber erstellt und eingef\"ugt werden.
|
||||
|
||||
@@ -376,6 +383,7 @@ Wenn der Spieler auf einem Pferd durch eine Weide reitet, kann eine dramatische
|
||||
Die Informationen für die Absätze wurden hier gefunden ~\cite{GK_Media_Factory_Sound_Design_2022}.
|
||||
|
||||
\subsection{Apocalypse}\label{subsec:apocalypse-background-sound}
|
||||
\setauthor{Florian Beckerle}
|
||||
Die Musik in der Apocalypse Map ist stark an das Horror Genre angelegt.
|
||||
Die Melodie ist jedoch nicht wirklich existent, stattdessen existiert ein durchgehendes pfeifendes Ger\"ausch, welches unterbewusst das Spannungslevel erh\"oht.
|
||||
Der Spieler f\"uhlt sich etwas unbehaglich und alleine.
|
||||
@@ -384,16 +392,19 @@ Dadurch wirkt die Stadt, neben den br\"ockelnden H\"ausern, zus\"atzlich noch me
|
||||
Da die Sicht in dieser Map stark durch einen gelblichen Nebel, der wie ein Sandsturm wirkt, eingeschr\"ankt ist, kann man im Hintergrund den Wind pfeifen h\"oren.
|
||||
|
||||
\subsection{City}\label{subsec:day-night-background-sound}
|
||||
\setauthor{Florian Beckerle}
|
||||
Die Hintergrundger\"ausche der Tag und Nacht Version der Stadt sind sehr \"ahnlich.
|
||||
Der Spieler kann Motorr\"ader und Autos auf den Straßen vorbeifahren h\"oren.
|
||||
Hin und wieder kann man Menschen, die man nicht sehen kann, bei kurzen Gespr\"achen miteinander zuh\"oren und ein Kind husted im Hintergrund.
|
||||
|
||||
\subsection{Event}\label{subsec:building-collapse-sound}
|
||||
\setauthor{Florian Beckerle}
|
||||
Um spezifische Events, also bestimmte Dinge welche in der Welt passieren, f\"ur den Benutzer besser erkennbar zu machen, wurden zus\"atzlich Ge\"ausche eingef\"ugt.
|
||||
Auf der Apocalypse Map sind zusammenbrechende Geb\"aude zu h\"oren, um die schlechte instandhaltung der verlassenen Stadt erneut zu verdeutlichen.
|
||||
Aber wenn der Benutzer genauer hinsieht, kann man w\"ahrend diese Sounds h\"orbar sind, auch tats\"achlich eine kleine Auswahl an Bauwerken br\"ockeln sehen.
|
||||
|
||||
\section{Effects}\label{sec:effects}
|
||||
\setauthor{Florian Beckerle}
|
||||
Unity bietet verschiedene M\"oglichkeiten um das Aussehen der Applikation zu beeinflussen.
|
||||
Mithilfe von Post Processing kann man Effekte zu dem Buffer der Kamera, also dem Aktuellen Frame der gerade Aufgenommen wurde, hinzuf\"ugen bevor etwas am Bildschirm Angezeigt wird.
|
||||
Eine kleine Auswahl von diesen Effekten sind zum Beispiel Bloom, Grain oder Color Grading.
|
||||
@@ -553,6 +564,7 @@ Bei der Sat vs Sat Kurve werden einfache Veränderungen der Farbe wie beim Color
|
||||
Die letzte Option heißt Lum vs Sat Kurve und ermöglicht es in bestimmten Gebieten die Sättigung zu verringern, wie zum Beispiel in dunklen Stellen.
|
||||
|
||||
\subsection{Nebel}\label{subsec:fog-effect}
|
||||
\setauthor{Florian Beckerle}
|
||||
Unity bietet mehrere M\"oglichkeiten Nebel darzustellen.
|
||||
Zum Beispiel mittels Post Processing, oder mithilfe der Lighting Einstellungen.
|
||||
F\"ur BeamVR wurde die zweite Variante verwendet, da der Nebel in BeamVR kein Hauptaugenmerk ist und mithilfe dieser Methode das Einstellen für BeamVR schneller ging.
|
||||
@@ -609,6 +621,7 @@ Mittels eines Filters kann eine Unschärfe der eingehenden Lichter geschaffen we
|
||||
|
||||
|
||||
\subsection{Lichter}\label{subsec:light-effect}
|
||||
\setauthor{Florian Beckerle}
|
||||
In der Nacht Map wurden die von Unity bereitgestellten Point-Lights als Straßenlichter benutzt.
|
||||
Point Lights k\"onnen mithilfe eines Radius auf einen bestimmten kreisf\"ormigen Bereich eingegrenzt werden.
|
||||
Weiters wird mithilfe der Lichtst\"arke die Wirkkraft des Lichtes in diesem Gebiet genauer bestimmt.
|
||||
|
||||
@@ -383,8 +383,127 @@ Die folgenden Vorteile und Nachteile beziehen sich auf die Source 2 Engine.
|
||||
\end{itemize}
|
||||
|
||||
|
||||
\subsection{VR in Unity}
|
||||
\setauthor{Florian Beckerle}
|
||||
Unity bietet bereits eine eingebaute basis VR API, welche ein paar Features für die Verwendung von VR Geräten zur Verfügung stellt.
|
||||
Diese muss jedoch erst Eingstellt werden, das geht in folgenden Schritten.
|
||||
|
||||
Um Vr für die Spiele zu aktivieren, müssen zuerst den Player Settings, welche im Menu bei Edit > Project Settings > Player zu finden sind, geöffnet werden.
|
||||
Als nächstes muss die Option Virtual Reality Supported aktiviert werden, dass in der Box ein Häcken zu erkennen ist, siehe Abb. ~\ref{fig:unity_vr_api_settings}.
|
||||
In der darunter stehenden Liste, namens Virtual Reality SDKs, können nun mit dem Plus-Knopf eine neue SDK hinzugefügt werden.
|
||||
Ein Beispiel hierfür wäre die Oculus SDK.
|
||||
Der Minus-Knopf bietet die Möglichkeit diese SDKs wieder zu entfernen, siehe Abb. ~\ref{fig:unity_vr_api_settings}.
|
||||
~\cite{Unity_VR_Overview_2022}
|
||||
|
||||
Wenn VR aktiviert wurde, wird das Spiel automatisch auf die VR-Brille gerendert und dort angezeigt.
|
||||
Weiters besitzt jede Kamera, welche im Spiel ist, eine Option, auf welches Auge das Ausgangsignal angezeigt werden soll, zum Beispiel linkes-, rechtes-, beide- oder keine Augen.
|
||||
Unter den Augen versteht man die Bildschirme der VR-Brille welche sich vor den Augen des Benutzers befinden.
|
||||
Ein weiteres automatisches Feature ist, dass die Bewegung der VR-Brille in der realtität auf die Position der Kamera im Spiel übertragen wird.
|
||||
|
||||
Unity empfielt für die verwendung der Api folgende Brillen, Gear VR, Oculus CV1 und die Vive.
|
||||
~\cite{Unity_VR_Overview_2022}
|
||||
|
||||
\begin {figure}
|
||||
\centering
|
||||
\includegraphics[scale=0.8]{pics/unity_basis_vr_api_settings}
|
||||
\caption{Unity VR API - Settings}
|
||||
\label{fig:unity_vr_api_settings}
|
||||
\end {figure}
|
||||
|
||||
\subsection{VR Plugin}
|
||||
\setauthor{Florian Beckerle}
|
||||
Für BeamVR wurde das SteamVR Unity Plugin verwendet.
|
||||
Es wurde von Valve entwickelt und bietet bereits eine Vielzahl an vorgefertigten Demos, welche mit der Installation des Plugins mitgeliefert werden, diese werden später genauer beschrieben..
|
||||
~\cite{SteamVR_Overview_2022}
|
||||
|
||||
\subsubsection{Quickstart}
|
||||
\setauthor{Florian Beckerle}
|
||||
Für das Setup des SteamVR Unity Plugins sind 5 Schritte notwendig.
|
||||
Damit alles Funktioniert muss SteamVR von Steam und das Plugin vom Unity Asset Store gedownloaded werden.
|
||||
Nachdem die Installation beider Softwares abgeschlossen wurde, muss das Plugin, über den Package Manager, in das Unity Projekt importiert werden.
|
||||
Im Menu Window wird nun eine neue Option namens SteamVR Input angezeigt, siehe Abb. ~\ref{fig:steamvr_input_menu_item}.
|
||||
\begin {figure}
|
||||
\centering
|
||||
\includegraphics[scale=0.9]{pics/steamVR_Input_MenuItem}
|
||||
\caption{Steam VR - Input Menu Item}
|
||||
\label{fig:steamvr_input_menu_item}
|
||||
\end {figure}
|
||||
Wenn man auf diese klickt erscheint ein Popup welches fragt ob JSON Files kopiert werden sollen, dort drückt man auf Ja, siehe Abb. ~\ref{fig:steamvr_copy_json}.
|
||||
\begin {figure}
|
||||
\centering
|
||||
\includegraphics[scale=1]{pics/steamVR_Input_CopyJSON}
|
||||
\caption{Steam VR - Copy JSON}
|
||||
\label{fig:steamvr_copy_json}
|
||||
\end {figure}
|
||||
Nachdem der Vorgang abschlossen ist, öffnet sich das SteamVR Input Fenster, dort muss nun Save and Generate gedrückt werden, siehe Abb. ~\ref{fig:steamvr_save_and_generate}.
|
||||
\begin {figure}
|
||||
\centering
|
||||
\includegraphics[scale=0.6]{pics/steamVR-Input-SaveAndGenerate}
|
||||
\caption{Steam VR - Save and Generate}
|
||||
\label{fig:steamvr_save_and_generate}
|
||||
\end {figure}
|
||||
Nun ist die Installation abgeschlossen und das SteamVR Unity Plugin ist einsatzbereit.
|
||||
~\cite{SteamVR_Quickstart_2022}
|
||||
|
||||
\subsubsection{Render Models}
|
||||
\setauthor{Florian Beckerle}
|
||||
Das SteamVR Unity Plugin bietet eine virtuelle Darstellung der Kontroller, welche der Benutzer in den Händen hält.
|
||||
Die gezeigten Modelle benötigen hierfür mehrere Attribute, siehe Abb. ~\ref{fig:steamvr_render_models Script}.
|
||||
\begin {figure}
|
||||
\centering
|
||||
\includegraphics[scale=1]{pics/steamVR_render_models_script}
|
||||
\caption{Steam VR - Render Models Script}
|
||||
\label{fig:steamvr_render_models Script}
|
||||
\end {figure}
|
||||
Der Index ist der Index des getrackten Gerätes, und wird vom System wie eine ID zur Erkennung verwendet.
|
||||
Mittels dem Model Override kann man für Testzwecke ein bestimmtes Modell festlegen welches angezeigt werden soll.
|
||||
Die Shader können die Darstellung des Objektes verändern.
|
||||
Verbose gibt die Vorgänge im Script in der Konsole aus, diese Option wird jedoch nur für das Testen benötigt.
|
||||
Create Components erstellt individuelle Objekte für jeden Komponenten welcher verfügbar ist.
|
||||
Update Dynamically bewegt die einzelnen Komponenten gleich wie die physischen Gegenstücke.
|
||||
~\cite{SteamVR_Render_Models_2022}
|
||||
|
||||
\subsubsection{Input}
|
||||
\setauthor{Florian Beckerle}
|
||||
Die die Hardware für VR Geräte schnell weiterentwickelt wird, hat Valve auf ein KeyBinding System zurückgegriffen.
|
||||
Die Entwickler und die Benutzer selbst können für neue oder breits vorhandene Hardware einstellen, welche Funktion die einzelnen Knöpfe und Trigger haben.
|
||||
Diese Aktionen wurden in 6 verschiedene Input Typen und einen Output Typen aufgeteilt.
|
||||
|
||||
Die Aktion Boolean besitzt zwei Zustände, true und false.
|
||||
Sie wird oft benutzt um Objekte zu greifen, da man zum Beispiel einen Würfel entweder aufheben können soll oder nicht.
|
||||
|
||||
Single Aktionen können analoge Werte zwischen 0 und 1 annehmen und wird für Situationen benutzt wo der Boolean nicht ausreicht.
|
||||
Ein Anwendungsfall ist ein Auto, welches bei 0 stehen bleibt und bei 1 Vollgas fährt.
|
||||
Als Eingabe kann zum Beispiel der Trigger des Kontrollers benutzt werden.
|
||||
|
||||
Vector2 besitzt zwei Werte, X und Y.
|
||||
Die Bewegungen des Kontrollers werden hierbei nur auf zwei Achsen gemessen.
|
||||
|
||||
Vector3 besitzt im Gegensatz zu Vector2 drei verschiedenen Werte X, Y und Z.
|
||||
Diese Aktion wird selten benutzt, findet aber zum Beispiel im SteamVR Home einen Anwendungsfall beim Scrollen.
|
||||
|
||||
Pose gibt die Position und Rotation in einem dreidimensionalen Raum wieder.
|
||||
Es wird dazu benutzt um die Bewegungen der Controller zu messen und digital nachzubilden.
|
||||
|
||||
Skeleton benutzt das SteamVR Skeleton Input um die ungefähre Position und Rotation der Finger zu erkennen, während der Kontroller in den Händen gehalten wird.
|
||||
|
||||
Vibration werden für haptisches Feedback bei VR Geräten verwendet.
|
||||
Hierbei vibrieren der Kontroller, eine spezielle Haptik Weste oder ein preparierter Sessel.
|
||||
~\cite{SteamVR_Input_2022}
|
||||
|
||||
\subsubsection{Skeleton Input}
|
||||
\setauthor{Florian Beckerle}
|
||||
~\cite{SteamVR_Skeleton_Input_2022}
|
||||
|
||||
\subsubsection{Interaction System}
|
||||
\setauthor{Florian Beckerle}
|
||||
~\cite{SteamVR_Interaction_System_2022}
|
||||
|
||||
|
||||
~\cite{SteamVR_Skeleton_Poser_2022}
|
||||
|
||||
OpenVR Plugin
|
||||
|
||||
|
||||
\subsection{Steam}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user