diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 0000000..797acea --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/auxil/thesis.ist b/auxil/thesis.ist index bd85032..e494013 100644 --- a/auxil/thesis.ist +++ b/auxil/thesis.ist @@ -1,5 +1,5 @@ % makeindex style file created by the glossaries package -% for document 'thesis' on 2022-2-12 +% for document 'thesis' on 2022-2-23 actual '?' encap '|' level '!' diff --git a/bib.bib b/bib.bib index 9079e66..44b90f1 100644 --- a/bib.bib +++ b/bib.bib @@ -219,6 +219,14 @@ year = {2021}, } +@misc{Jabil_FutureOfARVR_2021, + note = {letzter Zugriff am 24.02.2022}, + author = {Jabil}, + title = {Jabil - Future of AR and VR}, + url = {https://www.jabil.com/blog/future-of-augmented-and-virtual-reality-technology.html}, + year = {2022}, +} + @misc{Unity_WindZones_2022, note = {letzter Zugriff am 13.02.2022}, author = {Unity}, diff --git a/pics/trafficsystem_carsignal_crossroads.png b/pics/trafficsystem_carsignal_crossroads.png new file mode 100644 index 0000000..58af557 Binary files /dev/null and b/pics/trafficsystem_carsignal_crossroads.png differ diff --git a/pics/trafficsystem_carsignal_signal_reference.png b/pics/trafficsystem_carsignal_signal_reference.png new file mode 100644 index 0000000..d69b96f Binary files /dev/null and b/pics/trafficsystem_carsignal_signal_reference.png differ diff --git a/pics/trafficsystem_respawn_point.png b/pics/trafficsystem_respawn_point.png new file mode 100644 index 0000000..aef1bea Binary files /dev/null and b/pics/trafficsystem_respawn_point.png differ diff --git a/sections/implementation.tex b/sections/implementation.tex index 39b736c..4705f6d 100644 --- a/sections/implementation.tex +++ b/sections/implementation.tex @@ -74,16 +74,134 @@ Hierbei geht es nur um das Steam VR Setup welches bereits in dem Kapitel Steam b \subsection{Beam Calibration}\label{subsec:beam-calibration} \subsection{Schwerkraft}\label{subsec:gravity} \subsection{Verkehrssystem}\label{subsec:traffic-system} +In der Stadt von BeamVR ist auf den Straßen einiges los, dass wurde mithilfe eines neuem Verkehrssystems umgesetzt. +Die Straßen sind mit, f\"ur den Spieler unsichtbaren, Objekten versehen die den Verkehr regeln. +\textbf{Car Signals} +Damit die Fahrzeuge in BeamVR wissen wo und vor allem wie sie auf den Straßen navigieren k\"onnen, wurde das Car Signal System entwickelt. +Die Car Signals gibt es in zwei verschiedenen Versionen, f\"ur die linke Straßenseite wurden gr\"une und f\"ur die Rechte Seite wurden rote Signale erstellt. +Die Signale funktionieren wie Checkpoints, jedes Auto wird nachdem es initialisiert wurde, von einem zum n\"achsten fahren. +Jeder dieser Checkpoints verweist auf den nächsten, wie in einer Liste, daher weis jedes Fahrzeug wo die momentane Zielposition ist. +\ref{fig:trafficsystem_next_signal_reference} +Endpunkte sind spezielle Signale, welche auf keinen nachfolgenden Punkt mehr verweisen, erreicht ein Auto ein solchen Punkt hat es das Ziel erreicht. + +An Kreuzungen befinden sich mehrere dieser Car Signals, damit die Fahrzeuge auf der richtigen Spur bleiben und die Verkehrsregeln befolgen. +Die gr\"unen Linien zeigen die m\"oglichen Routen die das Auto fahren kann, die Pfeile visualisieren in welche Richtung gefahren werden kann. +\ref{fig:trafficsystem_crossroads} + + + +\begin{figure} + \centering + \includegraphics[scale=0.5]{pics/trafficsystem_carsignal_crossroads} + \caption{Traffic System - Crossroads} + \label{fig:trafficsystem_crossroads} +\end{figure} + +\begin{figure} + \centering + \includegraphics[scale=0.7]{pics/trafficsystem_carsignal_signal_reference} + \caption{Traffic System - Next Signal Reference} + \label{fig:trafficsystem_next_signal_reference} +\end{figure} + + +\textbf{Car Spawn Points} +Car Spawn Points sind blau dargestellte Punkte an denen Fahrzeuge, nach dem laden der Szene, initialisiert werden. +\ref{fig:trafficsystem_car_spawn_points} +Falls ein Auto einen Car Signal, welcher ein Endpunkt ist, erreicht wird es, nach einem kurzen Delay, an einem Respawn Point wieder erscheinen. +Diese Punkte verweisen, \"ahnlich wie Car Signals, auf einen nachfolgenden Punkt, wo die Fahrzeuge hinfahren. + +%% IN QUELLCODEVERZEICHNIS PACKEN! +\begin{lstlisting}{CarSpawnPoint.cs} +public class CarSpawnPoint : MonoBehaviour +{ + + //Location where the car should go after respawning + public CarSignal nextSignal; + + //Position of the Respawnpoint; + public Vector3 position; + + public void Start(){ + position = transform.position; + } + + public Vector3 GetPosition(){ + return position; + } + + public CarSignal GetNextSignal(){ + return nextSignal; + } + +} +\end{lstlisting} + +\begin{figure} + \centering + \includegraphics[scale=0.4]{pics/trafficsystem_respawn_point} + \caption{Traffic System - Car Spawn Points} + \label{fig:trafficsystem_car_spawn_points} +\end{figure} + + +\textbf{Car Manager} +Der Car Manager regelt die maximale Anzahl an Fahrzeugen die gleichzeitig auf den Straßen fahren k\"onnen. +Am Anfang werden n Fahrzeuge (n ist hierbei die maximale Anzahl an Autos) auf den Straßen initialisiert, indem ein zuf\"alliger Spawn Point ausgewählt wird. +\begin{lstlisting}{car_manager_respawncars} + +public void SpawnCar(){ + CarSpawnPoint newCarSpawnPoint = GetRandomSpawnPoint(); + GameObject newCar = Instantiate(GetRandomCarModell(), newCarSpawnPoint.GetPosition(), newCarSpawnPoint.transform.rotation); + newCar.GetComponent().SetCarManager(this); + CarBehaviour carBehaviour = newCar.GetComponent(); + + + carBehaviour.curSignal = newCarSpawnPoint.GetNextSignal(); + carBehaviour.curPosition = newCarSpawnPoint.GetPosition(); + + currentCars.Add(newCar); + } +\end{lstlisting} + +Weiters wird mithilfe der Funktion RespawnCars() ein Auto recycled, sobald es einen Endpunkt erreicht hat, indem der Manager die aktuelle Position und das n\"achste Ziel des Fahrzeuges neu setzt. +\begin{lstlisting}{car_manager_respawncars} +public void RespawnCars(GameObject finishedCar){ + CarBehaviour carBehaviour = finishedCar.GetComponent(); + CarSpawnPoint newCarSpawnPoint = GetRandomSpawnPoint(); + carBehaviour.curSignal = newCarSpawnPoint.GetNextSignal(); + carBehaviour.curPosition = newCarSpawnPoint.GetPosition(); + } +\end{lstlisting} + +\textbf{Car Behaviour} +Jedes Fahrzeug erh\"alt nachdem es initialisiert wurde eine zufällige ID mit folgendem Aufbau "Car[0-9]BeamVR[0-9]", damit diese im sp\"ateren Verlauf des Spieles besser identifiziert werden können. +In jedem Frame bewegt sich das Auto, mithilfe der Vector3.MoveTowards() Funktion, richtung dem Car signal, welches derzeit als Ziel festgelegt wurde. +Wenn nun das momentante Ziel erreicht wurde, sucht das Gefährt in dem aktuellen Punkt die Referenz auf das nächste Signal und bewegt sich dort hin. + +Um zu verhindern, dass mehrere Fahrzeuge ineinander fahren,kann das Auto mithilfe eines Raycasts erkennen, was sich in einer bestimmten Distance vor sich befindet und im Notfall anhalten. + +\begin{lstlisting}{car_behaviour_raycast} +... +RaycastHit hit; + if (!Physics.Raycast(curPosition, transform.TransformDirection(Vector3.forward), out hit, carSeeingDist, layerMask)) + { + ... + } +... +\end{lstlisting} \section{3d Welt}\label{sec:3d-world} -Jedes Spiel braucht heutzutage eine Spielwelt, hierbei ist es egal ob es sich um eine 3D oder 2D Applikation handelt. -Unter dem Begriff Spielwelt fällt die Umgebung in welcher sich der Spieler befindet. -Es gibt hierbei so gut wie keine Einschränkungen in der Kreativität, egal ob die digitale Welt nun ein riesiger Ring, der im Weltall schwebt, -oder eine Ansammlung an verschiedenen Planeten ist. +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. +Es gibt hierbei so gut wie keine Einschränkungen in Bezug auf Kreativität, egal ob die digitale Welt nun ein riesiger Ring, der im Weltall schwebt, +oder eine verlassene Großstadt in einer postapokalyptischen welt, siehe Abb. ~\ref{fig:3d_environment_destiny2}. ~\cite{GamesRadar_HaloRing_2022} + %% this image and the next are not working. see issue #1 \begin{figure} @@ -103,41 +221,41 @@ oder eine Ansammlung an verschiedenen Planeten ist. \label{fig:3d_environment_destiny2} \end{figure} -Spielehersteller bauen die Spielwelten so auf, wie es am besten zu der Vision den Spieles passt. -Gleichzeitig wird darauf geschaut, dass sich die Umgebung nicht langweilig oder leer anfühlt. -Hierfür wird Environmental Storytelling verwendet, darunter versteht man das platzieren von Gegenständen und Objekten +Spielehersteller bauen die Spielwelten so auf, wie es am besten zu der Vision des Spieles passt. +Gleichzeitig wird darauf geachtet, dass sich die Umgebung nicht langweilig oder leer anfühlt. +Hierfür wird Environmental Storytelling verwendet. +Darunter versteht man das Platzieren von Gegenständen und Objekten, welche dem Spieler eine kleine Geschichte erzählen. Das passiert jedoch nicht über Sprache sondern einfach nur über die Platzierung und das Aussehen. -Ein Beispiel hierfür w\"are ein das Bild von Cayde-6 (ein Charakter aus Destiny 2), welches in einem Restaurant platziert wurde. +Ein Beispiel hierfür w\"are das Bild von Cayde-6 (ein Charakter aus Destiny 2), welches in einem Restaurant platziert wurde. +Cayde ist einer der drei Anführer der Vanguard, welche eine Ansammlung an Guardians (Spielern und NPC) ist und gegen das Böse kampft. +In Forsaken starb Cayde jedoch und viele trauerten um ihn, als Gedenken wurde dieses Bild aufgehangen. ~\cite{GameDeveloper_2022} \begin {figure} \includegraphics[scale=0.3]{pics/3d_welt_destiny2-environmental-storytelling} - \caption{Environmental Storytelling - Destiny 2 Cayde} + \caption{Environmental Storytelling '-' Destiny 2 Cayde} \label{fig:3d_environmental_storytelling_destiny2} \end {figure} \subsection{City Grid System}\label{subsec:city-grid-system} Um die Gestaltung der Welt in BeamVR zu erleichtern, wurde ein Grid System verwendet. -Dafür wurde die Stadt in ein Raster aufgeteilt, an welchem sich alle Objekte der Welt auf allen 3 Achsen (x,y,z) orientieren. -~\ref{fig:grid-system-unity} -Unity stellt so ein Grid Snapping System bereits zur Verf\"ugung, daher wurde f\"ur BeamVR am Anfang der -Modellierungsphase eine Bestimmte Grid-Gr\"osse festgelegt, an dem die Grundfl\"achen der Geb\"aude und die Strassen +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. +Daher wurde f\"ur BeamVR am Anfang der Modellierungsphase eine bestimmte Grid-Size festgelegt, +an welche die Grundfl\"achen der Geb\"aude und die Strassen angepasst wurden. \begin {figure} \centering - \includegraphics[scale=0.6]{pics/unity-grid-snapping} - \caption{Unity - Grid Snapping System} + \includegraphics[scale=0.5]{pics/unity-grid-snapping} + \caption{Unity '-' Grid Snapping System} \label{fig:grid-system-unity} \end {figure} -Wenn mann die Grid Size, also die Gr\"osse des Rasters, an dem sich alles Orientiert, \"andern m\"ochte muss man zuerst das Grid and Snap Fenster aufrufen. -Als n\"achstes findet man unter dem Bereich World Grid ein Attribut namens Size, wo man die X, Y und Z Achsen frei und unabh\"angig voneinander umskalieren kann. -Wenn man alle Achsen gleichzeitig umstellen m\"ochte, muss man nur auf das Link Icon, welches sich Links neben dem X befindet, dr\"ucken. -Nun werden alle Achsen immer die gleiche Gr\"osse haben. -~\ref{fig:grid-size-unity} +Wenn man die Grid Size, also die Gr\"osse des Rasters \"andern m\"ochte, muss man zuerst im Editor das Grid and Snap Fenster öffnen. +Als n\"achstes findet man unter dem Bereich World Grid ein Attribut namens Size, wo man die X, Y und Z Achsen frei und unabh\"angig voneinander umskalieren kann, siehe Abb. ~\ref{fig:grid-size-unity}. ~\cite{Unity_GridSnapping_2022} \begin {figure} @@ -150,9 +268,8 @@ Nun werden alle Achsen immer die gleiche Gr\"osse haben. \subsection{Stadt}\label{subsec:city} -Jede Stadt hat viele verschiedene Strukturen wie Sehensw\"urdigkeiten, Bauwerke und Einrichtungen wie Kinos, Theater oder Restaurants. -F\"ur BeamVR wurden daher insgesamt \"uber 34 Geb\"aude Modelle erstellt um eine Vielfallt in der Umgebung zu kreieren. -~\ref{fig:beamvr_building-variety} +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}. \begin {figure} \centering @@ -161,26 +278,23 @@ F\"ur BeamVR wurden daher insgesamt \"uber 34 Geb\"aude Modelle erstellt um eine \label{fig:beamvr_building-variety} \end {figure} -Wie auf dem Bild zu sehen, wurde die Stadt so entworfen, dass nur die für den Spieler sichtbaren Objekte wirklich existieren. -~\ref{fig:beamvr_building-variety} +Die Stadt wurde so entworfen, dass nur die für den Spieler sichtbaren Objekte wirklich existieren, wie auf dem Abb. ~\ref{fig:beamvr_building-variety} zu erkennen ist. Bei richtiger Umsetzung scheint es für den Anwender dennoch so, als w\"are dieser in einer kompletten Spielwelt. -In der Spieleentwicklung wird dieser Trick oft angewandt um die Performance des Spieles zu verbessern, da unn\"otige Objekte nicht gerendert oder berechnet werden m\"ussen. -Bei gr\"osseren Projekten spart das nicht nur Zeit sondern auch Ressourcen wie Geld. -Da BeamVR jedoch eine Diplomarbeit ist und daher keine Kosten w\"ahrend der Entwicklung entstehen, wurde dieser Trick angewandt -um die Frames per Second in die h\"ohe zu treiben. +Um die Performance des Spieles zu verbessern, wurde dieser Trick in BeamVR angewandt, da unn\"otige Objekte nicht gerendert oder berechnet werden m\"ussen. +Bei gr\"osseren Projekten spart das nicht nur Zeit sondern auch Ressourcen. +Bei BeamVR wurde diese Technik angewandt um die Frames per Second zu erh\"ohen. + +TODO: PERFORMANCE ERHÖHEN MITHILFE VON MAPS UND TEXTUREN ERKKLÄREN!!!! (hier) \subsection{Tag Stadt}\label{subsec:day-city} -Es wurden 17 verschieden Geb\"aude f\"ur diese Map modelliert. -~\ref{fig:beamvr_building-variety} -Der Fokus bei der Gestaltung des Bauwerke lag dabei, dass diese m\"oglichst realistisch Aussehen und dennoch nicht zu Rechenaufwendig in der Darstellung werden. -Daher wurden Texturen verwendet um kleinere Details an den Fassaden darzustellen. -Das gleiche wurde bei der Apocalypsen Map angewandt. -~\ref{subsec:apocalypse-city} -Die angewandten Texturen stellen Fassaden aus Stein und Glas dar. -Ein weiterer wichtiger Punkt bei der Planung der Stadt war es auch, dass der Spieler nicht aus der Stadt raus schauen kann. -Daher wurden alle umliegenden Bauwerke mindestens 3 Meter h\"oher gemacht, als das Geb\"aude wo der Spieler steht. -~\ref{fig:beamvr_building-heights} +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. +Das gleiche Prinzip wurde bei der Apocalypse Map verwendet, siehe Abschnitt ~\ref{subsec:apocalypse-city}. +Die Texturen stellen Fassaden aus Stein und Glas dar. +Ein weiterer wichtiger Punkt bei der Planung der Stadt war es auch, dass der Spieler nicht aus der Stadt raus schauen kann und die Illusion aufrecht erhalten bleibt. +Daher wurden alle umliegenden Bauwerke mindestens 3 Meter h\"oher gemacht, als das Geb\"aude auf dem sich der Spieler befindet, siehe Abb. ~\ref{fig:beamvr_building-heights}. \begin {figure} \centering @@ -190,9 +304,12 @@ Daher wurden alle umliegenden Bauwerke mindestens 3 Meter h\"oher gemacht, als d \end {figure} \subsection{Nacht Stadt}\label{subsec:night-city} -In der nacht Version der Stadt wurde die Skybox angepasst, diese zeigt nun einen Sternenhimmel. +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, +in Form von Texturen, darstellen zu können, ohne dass diese als Modelle existieren. Zus\"atzlich wurde die Belichtung der Scene auf ein bl\"auliches Licht eingestellt und die Laternen in den Straßen -haben optional noch eigene Lichtquellen. +haben noch eigene Lichtquellen. ~\ref{fig:beamvr_night_map_lighting} \begin {figure} @@ -202,15 +319,13 @@ haben optional noch eigene Lichtquellen. \label{fig:beamvr_night_map_lighting} \end {figure} -\subsection{Apokalypsen Stadt}\label{subsec:apocalypse-city} +\subsection{Apocalypse Stadt}\label{subsec:apocalypse-city} F\"ur diese Umgebung wurden alle Geb\"aude nochmal \"uberarbeitet. -Statt den intakten Glasfassaden werden nun barrikadierte Fenster und Ziegelsteine ohne Verputz f\"ur die Bauwerke verwendet. -~\ref{fig:beamvr_damaged_texture} -Durch diese \"Anderung sieht die Stadt verlassen und wie nach einer Apokalypse aus. -Um den Effekt noch zus\"atzlich zu verst\"arken wurden die Bauwerke noch etwas verdreht, so dass es aussieht, als w\"urden Diese gleich umkippen. +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. +Um den Effekt noch zus\"atzlich zu verst\"arken wurden die Bauwerke in eine Schieflage gebracht, sodass es aussieht, als w\"urden diese gleich zusammenbrechen. Das Gel\"ande wurde mit neuen Sandstein Texturen und D\"unen in eine W\"uste umgewandelt. -Die Planzen und B\"aume wurden durch ausgetrocknete B\"usche ausgetauscht, damit die Welt ein trostloses aussehen bekommt. -~\ref{fig:beamvr_apocalypse_map} +Die Planzen und B\"aume wurden durch ausgetrocknete B\"usche ausgetauscht, damit die Welt ein trostloses Aussehen erhält, siehe Abb. ~\ref{fig:beamvr_apocalypse_map}. \begin {figure} \centering @@ -229,22 +344,24 @@ Die Planzen und B\"aume wurden durch ausgetrocknete B\"usche ausgetauscht, damit \section{Sound Design}\label{sec:sound} -Sound Design ist einer der wichtigsten Punkte, den man bei der Spieleentwicklung beachten muss. +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. Es gibt viele verschiedene Arten Sound Design zu benutzen, wie zum Beispiel die Ger\"ausche die der Anwender selbst in der virtuellen Welt verursacht. Wenn sich der Spieler bewegt, sollten Fußstapfen zu h\"oren sein. Diese klingen je nach Bodentyp unterschiedlich. -Besteht der Boden aus Holz, wird man ein h\"olzernes klopfen und knarren h\"oren, ist der Boden jedoch mit Gras bedeckt wird ein rascheln abgespielt. -Zus\"atzlich wird der gesteuerte Charakter ersch\"opft klingen wenn gelaufen wurde oder gerade ein Sprung ausgef\"uhrt wird. +Besteht der Boden aus Holz, wird man ein h\"olzernes Klopfen und Knarren h\"oren. +Ist der Boden jedoch mit Gras bedeckt, wird ein Rascheln abgespielt. +Zus\"atzlich wird der gesteuerte Charakter außer atem sein wenn gelaufen wurde oder gerade ein Sprung ausgef\"uhrt wird, das wird mithilfe von Atem-Geräuschen umgesetzt. Bei Umgebungen ist es wichtig, dass die Welt nicht leer klingt, sondern mit situationsbedingten Hintergrundger\"auschen voller Leben erscheint. Es gibt jedoch auch Situationen wo gezielt wenig Umgebungsger\"ausche benutzt werden um zum Beispiel eine W\"uste oder eine verlassene Stadt noch einsamer und trostloser darzustellen. Um die Stimmung noch genauer steuern zu k\"onnen kann Musik benutzt werden. Wenn der Spieler auf einem Pferd durch eine Weide reitet, kann eine dramatische und inspirierende Musik benutzt werden, um den Moment noch besser und cinematischer wirken zu lassen. -~\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} Die Musik in der Apocalypse Map ist stark an das Horror Genre angelegt. @@ -257,11 +374,11 @@ Da die Sicht in dieser Map stark durch einen gelblichen Nebel, der wie ein Sands \subsection{City}\label{subsec:day-night-background-sound} 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. -Hinundwieder kann man Menschen 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} 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 hervorzuheben. +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} diff --git a/sections/related_work.tex b/sections/related_work.tex index 910311e..391b175 100644 --- a/sections/related_work.tex +++ b/sections/related_work.tex @@ -7,8 +7,8 @@ Heutzutage kommen sich die virtuelle und die realle Realität immer näher. Angefangen von Virtual Reality, wo sich der Benutzer mithilfe einer VR-Brille in eine fiktive Welt begeben kann. Bis hin zu Augmented Reality, in welcher virtuelle Gegenstände und Strukturen in der reallen Welt angezeigt werden können. -Es gibt neben BeamVR auch noch viele andere verschiedene M\"oglichkeiten um diese Konzepte umsetzen zu können. - +Es gibt neben BeamVR auch noch viele andere verschiedene M\"oglichkeiten um diese Konzepte umzusetzen zu können. +\cite{Jabil_FutureOfARVR_2021} %Das Konzept der Synchronisation von einem Gegenstand über den zwei besprochenen Realitäten ist nicht neu. %Einer der bekanntesten Implementierungen des Konzepts ist Richie's Plank Experience. @@ -55,8 +55,7 @@ Im geheimen Modus Nightmare, welcher mithilfe des Codes 666 erreicht werden kann Damit man diese Modi, vor allem den Plank Modus, mit einem realen Balken spielen kann, muss mithilfe des Setups der Balken kalibriert werden. Hierfür wird der Balken etwa in der Mitte der VR-Spielfläche platziert. -Nun sollten beide VR-Controller auf jeweils einem Ende des Balkens platziert werden, wie man auf der Grafik sehen kann. -\ref{fig:beam_length_measurement} %Balken Länge Einstellen +Nun sollten beide VR-Controller auf jeweils einem Ende des Balkens platziert werden, wie in Abb. \ref{fig:beam_length_measurement} dargestellt. \begin {figure} \includegraphics[scale=0.18]{pics/beam_length_measurement} @@ -71,9 +70,7 @@ Man wird aufgefordert den Trigger des Controllers zu drücken, welcher sich am A In Schritt zwei werden die Controller links und rechts vom Balken platziert und zeigen aufeinander. -Mit dieser Methode wird die Breite des Balkens gemessen. -%Grafik mit Setup Schritt 2 -\ref{fig:beam_width_measurement} %Balken Länge Einstellen +Mit dieser Methode wird die Breite des Balkens gemessen, siehe Abb. \ref{fig:beam_width_measurement}. \begin {figure} \includegraphics[scale=0.18]{pics/beam_width_measurement} @@ -89,10 +86,8 @@ Nun ist das Setup abgeschlossen und der Balken wird richtig in der virtuellen We \label{sec:richiesplankexperience_world} Alle Spielmodi befinden sich in einer Stadt, welche aus einer Vielzahl an verschiedenen Gebäuden besteht. Die Architektur ist sehr vielfältig und realistisch gehalten. -Zwischen den Bauwerken befinden sich Straßen welche mit verschiedenen Pflanzen, z.B. Bäumen, geschmückt sind. -Auf Fahrbahnen befinden sich Fahrzeuge, welche mit Schritttempo durch die Stadt fahren. - -\ref{fig:richiesplankexperience_world} %Richies Plank Experience Spielwelt +Zwischen den Bauwerken existieren Straßen welche mit verschiedenen Pflanzen, z.B. Bäumen, geschmückt sind. +Auf Fahrbahnen befinden sich Fahrzeuge, welche mit Schritttempo durch die Stadt fahren, siehe Abb. \ref{fig:richiesplankexperience_world}. \begin {figure} \includegraphics[scale=0.7]{pics/richiesplankexperience_world} @@ -104,7 +99,7 @@ Auf Fahrbahnen befinden sich Fahrzeuge, welche mit Schritttempo durch die Stadt \section{VR Chat} \label{sec:vrchat} VR Chat befasst sich ebenfalls mit einer \"anlichen Thematik wie BeamVR. -In diesem Fall wird jedoch kein Balken sondern der ganze K\"orper des Benutzers mit Controllern getrackt. +In diesem Fall wird jedoch kein Balken sondern gleich wie bei BeamVR der ganze K\"orper des Benutzers mit Controllern getrackt. \subsection{Spielprinzip} \label{sec:vrchat_principle} @@ -112,38 +107,40 @@ Wie der Name schon sagt, handelt es sich um eine in VR ausf\"uhrbare Anwendung. Da aber nicht jeder eine VR Brille besitzt, kann man auch eine Desktop Variante spielen, welche mit Maus und Tastatur bedient wird. In diesem Programm geht es haupts\"achlich um die Interaktion mit unbekannten Spielern aus dem Internet, welche ebenfalls diese Applikation verwenden. -Wer jedoch mit freunden Spielen möchte, kann das nat\"urlich auch. -Eine Vielzahl an, von Spielern erstellten, Welten und Spielmodi erwarten einen und es kommen weiterhin Neue dazu. -Von einer Runde Capture the flag im Weltall, bishin zu einem entspannenden Abend an einem Lagerfeuer im Wald, ist alles möglich. +Wer jedoch mit Freunden spielen möchte, kann das nat\"urlich auch. +Eine Vielzahl an, von Spielern erstellten, Welten und Spielmodi sind bereits verfügbar und es kommen weiterhin Neue dazu. +Von einer Runde Capture the flag im Weltall, bis hin zu einem entspannenden Abend an einem Lagerfeuer im Wald, ist alles möglich. ~\cite{VRChat_2021_Steam} -\subsection{Verwendungs M\"oglichkeiten} +\subsection{Verwendungsm\"oglichkeiten} \label{sec:vrchat_usecases} -Es gibt extrem viele m\"oglichle Verwendungszwecke für eine Applikation wie VR Chat. -Die 4 Gr\"oßten sind jedoch, die Option neue Freunde im Internet kennenzulernen, eigene Welten zu erschaffen, sein digitales Aussehen selber bestimmen zu k\"onnen und Teil einer riesigen Community zu werden. -~\cite{VRChat_2021}) +Es gibt viele m\"ogliche Verwendungszwecke für eine Applikation wie VR Chat. +Die vier gr\"oßten Use-Cases dieses Programmes sind jedoch, die Option neue Freunde im Internet kennenzulernen, eigene Welten zu erschaffen, sein digitales Aussehen selber bestimmen zu k\"onnen und Teil einer riesigen Community zu werden. +~\cite{VRChat_2021} -VR Chat ist eine soziale Platform auf welcher sich tausende Spieler gleichzeitig befinden, diese Interagieren in Form von Gespr\"achen oder Gesten miteinander. +VR Chat ist eine soziale Platform auf welcher sich tausende Spieler gleichzeitig befinden. +Diese Interagieren in Form von Gespr\"achen oder Gesten miteinander. -Die Entwickler stellen einem die n\"otigen Funktionen zur Verf\"ugung um eigene Welten zu kreiren. Die Spieler fertigen neue Spielmodi wie z.B. Capture the flag, Lasertag, Theaterauff\"uhrungen, etc. an und errichten passende Umbegungen dazu. +Die Entwickler stellen die n\"otigen Funktionen zur Verf\"ugung um eigene Welten zu kreieren. Die Spieler fertigen neue Spielmodi wie z.B. Capture the flag, Lasertag, Theaterauff\"uhrungen, etc. an und errichten passende Umbegungen dazu. -Wem die standard Spielermodelle nicht gefallen, kann einfach mithilfe des Steam Workshops und Tools wie Ready Player Me, Tafi oder MakeAvatar, weitere Modelle downloaden und sofort im Spiel benutzen. -Durch dieses Feature f\"uhlt sich die Applikation sofort viel pers\"önlicher an, da man sich mit den Modellen gut identifizieren kann. +Weitere Spielermodelle, k\"onnen einfach mithilfe des Steam Workshops und Tools wie Ready Player Me, Tafi oder MakeAvatar, heruntergeladen und sofort im Spiel verwendet werden. +Durch dieses Feature f\"uhlt sich die Applikation sofort pers\"onlicher an, da man sich mit den Modellen besser identifizieren kann. ~\cite{VRChat_2021_AvatarCreator} \subsection{Full Body Tracking} \label{sec:vrchat_fullbodytracking} -Wer die n\"otigen Tracker besitzt, hierbei handelt es sich gleich wie bei BeamVR um z.B. die Vive Tracker, kann sogar seinen K\"orper und seine Beine in dem Spiel tracken. -Dafür sind nicht mehr als 3 Schritte notwendig. -~\cite{VRChat_2021_FullBodyTracking} +Benutzer welche die n\"otigen Tracker besitzen, hierbei handelt es sich ebenso wie bei BeamVR um z.B. die Vive Tracker, kann sogar seinen K\"orper und seine Beine im Spiel tracken. +Dafür sind nicht mehr als drei Schritte notwendig. -Als erstes muss man in das Men\"u des Spieles gehen und auf den Kalibrieren Knopf dr\"ucken. + +Zuerst erstes muss man in das Men\"u des Spieles gehen und auf den Kalibrieren Knopf dr\"ucken. Als n\"achstes wird ein Spielermodell ausgew\"ahlt. -Dieses wird darauf hin in einer T-Pose vor dem Spieler ersichtlich sein. -Weiters werden mithilfe von weißen Punkten die Positionen der Tracker in der Applikation angezeit, diese Sollten nun vern\"unftig platziert werden.. +Dieses wird darauf hin in einer T-Pose vor dem Spieler dargsetellt. +Weiters werden mithilfe von weißen Punkten die Positionen der Tracker in der Applikation angezeit, diese sollten nun vern\"unftig platziert werden. -Als Letztes muss man nur noch die Eingabe best\"atigt werden und das Spielermodell macht die Bewegungen des Spielers nach. +Zuletzt muss noch die Eingabe best\"atigt werden und das Spielermodell stellt die bewegungen des Benutzers im Spiel dar. +~\cite{VRChat_2021_FullBodyTracking} %\subsection{Avatar Erstellung}s %\label{sec:vrchat_avatarcreation}