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
|
% makeindex style file created by the glossaries package
|
||||||
% for document 'thesis' on 2022-3-3
|
% for document 'thesis' on 2022-3-5
|
||||||
actual '?'
|
actual '?'
|
||||||
encap '|'
|
encap '|'
|
||||||
level '!'
|
level '!'
|
||||||
|
|||||||
69
bib.bib
69
bib.bib
@@ -520,3 +520,72 @@
|
|||||||
author = {Oculus},
|
author = {Oculus},
|
||||||
note = {letzer Zugriff 5.3.2022},
|
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}
|
\end{lstlisting}
|
||||||
|
|
||||||
\section{3d Welt}\label{sec:3d-world}
|
\section{3d Welt}\label{sec:3d-world}
|
||||||
|
\setauthor{Florian Beckerle}
|
||||||
Jedes Spiel besitzt eine Spielwelt.
|
Jedes Spiel besitzt eine Spielwelt.
|
||||||
Babei ist es egal ob es sich um eine 3D oder 2D Applikation handelt.
|
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.
|
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}
|
\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.
|
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.
|
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.
|
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}
|
\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.
|
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}.
|
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}
|
\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}.
|
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.
|
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.
|
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}
|
\end {figure}
|
||||||
|
|
||||||
\subsection{Nacht Stadt}\label{subsec:night-city}
|
\subsection{Nacht Stadt}\label{subsec:night-city}
|
||||||
|
\setauthor{Florian Beckerle}
|
||||||
In der Nacht Version der Stadt wurde die Skybox angepasst.
|
In der Nacht Version der Stadt wurde die Skybox angepasst.
|
||||||
Diese zeigt nun einen Sternenhimmel.
|
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,
|
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}
|
\end {figure}
|
||||||
|
|
||||||
\subsection{Apocalypse Stadt}\label{subsec:apocalypse-city}
|
\subsection{Apocalypse Stadt}\label{subsec:apocalypse-city}
|
||||||
|
\setauthor{Florian Beckerle}
|
||||||
F\"ur diese Umgebung wurden alle Geb\"aude nochmal \"uberarbeitet.
|
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}.
|
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.
|
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}
|
\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.
|
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.
|
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}.
|
Die Informationen für die Absätze wurden hier gefunden ~\cite{GK_Media_Factory_Sound_Design_2022}.
|
||||||
|
|
||||||
\subsection{Apocalypse}\label{subsec:apocalypse-background-sound}
|
\subsection{Apocalypse}\label{subsec:apocalypse-background-sound}
|
||||||
|
\setauthor{Florian Beckerle}
|
||||||
Die Musik in der Apocalypse Map ist stark an das Horror Genre angelegt.
|
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.
|
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.
|
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.
|
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}
|
\subsection{City}\label{subsec:day-night-background-sound}
|
||||||
|
\setauthor{Florian Beckerle}
|
||||||
Die Hintergrundger\"ausche der Tag und Nacht Version der Stadt sind sehr \"ahnlich.
|
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.
|
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.
|
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}
|
\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.
|
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.
|
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.
|
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}
|
\section{Effects}\label{sec:effects}
|
||||||
|
\setauthor{Florian Beckerle}
|
||||||
Unity bietet verschiedene M\"oglichkeiten um das Aussehen der Applikation zu beeinflussen.
|
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.
|
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.
|
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.
|
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}
|
\subsection{Nebel}\label{subsec:fog-effect}
|
||||||
|
\setauthor{Florian Beckerle}
|
||||||
Unity bietet mehrere M\"oglichkeiten Nebel darzustellen.
|
Unity bietet mehrere M\"oglichkeiten Nebel darzustellen.
|
||||||
Zum Beispiel mittels Post Processing, oder mithilfe der Lighting Einstellungen.
|
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.
|
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}
|
\subsection{Lichter}\label{subsec:light-effect}
|
||||||
|
\setauthor{Florian Beckerle}
|
||||||
In der Nacht Map wurden die von Unity bereitgestellten Point-Lights als Straßenlichter benutzt.
|
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.
|
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.
|
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}
|
\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}
|
\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}
|
\subsection{Steam}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user