Leseprobe
Inhaltsverzeichnis
Einleitung
Gestaltung
Quelltext
Neurosky Mindwave
Oculus Rift
Sonstiges
Schluss
Quellen
Anhang
Abbildungsverzeichnis
Quelltext
Einleitung
In den letzten Jahren haben sich neue Interaktionsmöglichkeiten im Bereich der Computerspiele etabliert wie bspw. die Bewegungs-Steuerung mittels Microsofts Kinect. Weniger populär ist bislang die Steuerung via sog. Biofeedback, also durch von Sensoren erfassten physiologischen Daten. Beispiel hierfür ist das sog. Neurofeedback mittels sog. Brain-Computer- Interfaces (kurz: BCIs), also per Hirnstromwellen-Messung (Elektroenzephalografie: EEG).
Mit dieser Arbeit soll sich vorbereitend für eine Abschlussarbeit mit der Entwicklung eines Konzepts für die Erstellung eines Computerspiels beschäftigt werden, bei welchem Neuroskys Mindwave und das Oculus Rift zum Einsatz kommen sollen. Das Mindwave ist ein EEG-Messgerät der Firma Neurosky, welches optisch an ein Headset erinnert. Das Oculus Rift ist ein Head-Mounted Display der Firma Oculus VR, welches in der Version Development Kit 2 verfügbar ist. Als Entwicklungsumgebung soll dienen die Spiel-Engine Unity der Firma Unity Technologies, da diese die Integration von Neurosky Mindwave und Oculus Rift gemäß Recherche-Ergebnissen im Vorfeld relativ komfortabel zu ermöglichen schien. Unity stand in der Version 4.6.0b17 (Pro- Lizenz/Vollversion) zur Verfügung.
Im Folgenden soll die Arbeit mit der Software im Rahmen des Projekts zur vorliegenden Arbeit näher beleuchtet werden. Zunächst sollen gestalterische Aspekte betrachtet werden, danach auf Quelltext-Programmierung eingegangen werden.
Gestaltung
In diesem Kapitel ist das gesteckte Ziel hinsichtlich gestalterischer Aspekte die Möglichkeiten der relativ einfachen und effizienten Erstellung einer virtuellen 3D-Umgebung mittels Unity zu thematisieren. Möglichst realitätsnahe, effektvolle, elaborierte und grafisch optimale bzw. optimierte Lösungen zu finden kann und soll an dieser Stelle nicht geleistet werden.
Zunächst wurde ein virtuelles Licht in die Szenerie eingefügt, in diesem Fall ein sog. „Directional Light“. Diese Licht-Art in Unity ‚scheint‘ gleichmäßig in eine Richtung auf alle Objekte in der virtuellen Welt, hat keine lokalisierbare Quelle, eine praktisch unendliche Ausdehnung und ist somit geeignet eine große, quasi endlos weit entfernte Lichtquelle wie die realweltliche Sonne zu simulieren (siehe Abbildung 1; Unity Documentation Webseite: Lighting Overview, 2015, online).
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 1: Directional Light (Unity Documentation Webseite, Lighting Overview, 2015, online)
Außerdem wurde ein Landschaft erstellt, ein sog. Terrain. Hierbei gibt es diverse Möglichkeiten. Der Standard-Weg ist die Nutzung des von Unity bereitgestellten Skripts „Terrain“. Da die ersten Ergebnisse im Umgang mit dem Script nicht den gewünschten Erfolg hinsichtlich der Erstellung einer in gewissem Maße realistisch anmutenden Landschaft brachte wurde nach Alternativen gesucht. Ein Hilfs-Werkzeug namens „World Builder“ (Unity Asset Store Webseite: World Builder, 2015, online) wurde angedacht, u.a. für die automatisierte, ‚zufälligere‘ Verteilung von virtuellen Bäumen auf dem Terrain. Letztendlich wurde aber auch „World Builder“ nicht eingesetzt aus den gleichen Gründen wie das „Terrain“-Skript. Geeigneter erschien die Software World Machine 2 (Basic Edition), welche eingesetzt wurde zur Erzeugung eines Landschaft-Höhenprofils (Heightmap als 512x512-Pixel .r16-Datei; vgl. World Machine Webseite, 2015, online).
Der Transfer von Texturen (‚Überzüge‘ von 3D-Objekten) aus World Machine hinein in Unity stellte sich problematisch dar, weshalb die Texturen für die Landschaft mittels des Skripts „Terrain Toolkit“ von Sándor Moldán realisiert wurden (siehe Abbildung 2; vgl. Moldán, 2009).
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 2: „ Terrain Toolkit “
Zusätzlich wurden in der Landschaft die von Unity angebotenen sog. „Terrain Assets“ installiert, welche das Standard-Angebot erweitern u.a. um diverse Baum-, Strauch- und Gras-Typen (vgl. Unity Asset Store Webseite: Terrain Assets, 2015, online). In einer Baum-Gruppe wurde eine sog. „WindZone“ erstellt und deren Parameter angepasst, um einen Effekt zu erzeugen, bei dem sich die Bäume im Wind bewegen (siehe Abbildung 3).
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 3: „ WindZone"
Assets bezeichnen in Unity Ressourcen jedweden Typs, die in die virtuelle Szenerie importiert werden können. Die Einbindung von Assets erwies sich als einfach und es existieren einige Angebote, um eine lebendiger wirkende virtuelle Umgebung schaffen zu können. Neben den erwähnten „Terrain Assets“ kamen diverse andere zum Einsatz, die kurz aufgelistet werden sollen:
- Skybox: Verwendung von „Blue sky 2“ für Darstellung des ‚Himmels‘
- Automobil „Ruined car“ (Unity Asset Store Webseite: Ruined car, 2015, online)
- Boot „Low-Poly Wooden Row Boat“ (Unity Asset Store Webseite: Low-Poly Wooden Row Boat, 2015, online)
- Brunnen „Traditional water well“ (Unity Asset Store Webseite: Traditional water well, 2015, online)
- Brücke „Simple Wooden Bridge“ (Unity Asset Store Webseite: Simple Wooden Bridge, 2015, online)
- Fischerboot „Fishing Boat“ (Unity Asset Store Webseite: Fishing Boat, 2015, online)
- Pferd „Animated Horse“ (Unity Asset Store Webseite: Animated Horse, 2015, online)
- Haus „Country Cottage“ (TurboSquid Webseite: Country Cottage, 2015, online)
- WC-Haus „bathroom“ (TF3DM Webseite: bathroom, 2015, online)
- Schmetterling „Butterfly with Animations“ (Unity Asset Store Webseite: Butterfly with Animations, 2015, online)
- Wasser „Water4Example Advanced“ (Standard Assets (Pro Only))
Letztgenanntes wurde durch diverse Einstellmöglichkeiten im sog. Inspector von Unity angepasst. Der Inspector zeigt zu sog. GameObjects (Objekten in der Spielwelt wie bspw. das erwähnte Automobil etc. - Assets werden quasi zu GameObjects) zugewiesene Skripte und deren Variablen an (genauer: als public bzw. öffentlich deklarierte Klassen-Variablen), wobei die Variablenwerte im Inspector änderbar sind. So lassen sich bezüglich des Wassers Variablen des Skripts „WaterBase.cs“ ändern wie bspw. Variablen zur Einstellung der Lichtreflexionen auf dem Wasser („Fresnel“) und Einstellungen für den Wasser- Schaum („Foam“) (vgl. YouTube Webseite: Unity 3d Environmental Series Part 4: Water, 2015, online). Auch Änderungen der Variablenwerte des Skripts „GerstnerDisplace.cs“ wurden durchgeführt, z.B. die Wellenhöhe („Amplitude“) geregelt (vgl. YouTube Webseite: Tutorial Unity Water (für Anfänger) (Deutsch), 2015, online).
Ein weiteres benutztes Standard-Asset ist der sog. First Person Controller. Dieser stellt über eine virtuelle Kamera die Spieler-Perspektive bereit sowie Funktionalitäten zur Steuerung und Bewegungen des Spieler-Charakters. Der First Person Controller wurde in das GameObject Heißluftballon integriert, da sich der Spieler-Charakter dort befinden soll. Der virtuelle Heißluftballon (siehe Abbildung 4) ist ein Import einer .fbx-Datei (Domawe Webseite: Hot Air Balloon 3D Model Free Download -3, 2015, online). FBX ist ein kostenloses Dateiaustauschformat, welches die Interoperabilität zwischen diverser 3D- Software ermöglicht (vgl. Wikipedia Webseite: FBX, 2015, online ), darunter auch Unity.
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 4: Hei ß luftballon
(Domawe Webseite: Hot Air Balloon 3D Model Free Download, 2015, online)
Um die Spielwelt realistischer zu gestalten sollten den Objekten im übertragenen Sinn physikalische Eigenschaften zugewiesen werden, damit sich die Objekte realistischer bewegen und untereinander kollidieren können. Dazu ist es nötig, sog. Rigidbodies und zusätzlich sog. Collider zu definieren, um die Funktionalität der PhysX -Physik-Engine der Firma Nvidia für die dafür nötigen Berechnungen zu nutzen (vgl. Unity Documentation Webseite: Rigidbody, 2015, online). Am Beispiel des Heißluftballons verdeutlicht, wurde diesem ein sog. Box Collider (im Spiel unsichtbares Würfelkonstrukt) zugewiesen, damit der Ballon nicht bspw. durch die Landschaft bzw. den Boden hindurch fliegen kann sowie ein Rigidbody zugewiesen, damit der Ballon sich bezüglich physikalischer Einflussgrößen wie bspw. durch die Methode AddForce (siehe unten) hervorgerufene realistischer verhält (siehe Abbildung 5). Die Rigidbody- Eigenschaft „Drag“ bezeichnet quasi die Trägheit und "Use Gravity" wurde deaktiviert, da die Gravitation gesondert behandelt wurde (siehe unten).
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 5: Box Collider
Außerdem wurde im Heißluftballon der Partikel-Effekt „Torch“ inkl. Sound zur auditiven Gestaltung eingefügt, um die Zündflamme zu imitieren (siehe Abbildung 6).
[...]