Groundlevel
(Alexander Laser)
Wie durch die Aufgabenstellung vorgegeben wurde zunächst das Augenmerk auf die Gestaltung eines Levels, in unserem Fall ein Stockwerk, gelegt. Dabei fiel die Wahl auf das Pförtnergeschoss, da dieses den größten Wiedererkennungswert des AVZ besitzt. Für die Umsetzung des Modells wurde die 3D-Graphiksoftware Blender gewählt, da zum einen der Editor zu dem derzeitigen Zeitpunkt noch nicht fertig war und es sich bei Blender zum anderen um eine frei zugängliche Software handelt. Bei der Gestaltung wurde sich am Original und an dem virtuelle AVZ aus der Diplomarbeit von Beate Fiß aus den Jahr 1999 orientiert. Die Etage wurde leicht abgeändert und etwas verkleinert, sodass ein Kompromiss zwischen Wiedererkennungswert und Leveldesign erreicht werden konnte. In Abbildung 1 ist ein Wireframe der fertigen Pförtneretage mit Bezeichnung der einzelnen Räume zu sehen.
Groundlevel Wireframe: 1 Pförtnerhalle, 2 CIP-Pool, 3 WC, 4 Eingangshalle, 5 u. 6 Vorlesungsräume |
Beim Bau des Geschosses wurden zunächst nur die Räume aneinander gebaut. Im Anschluss, daran wurden große statische Objekte wie Säulen und Wandeinwölbungen, sowie das Pförtnerhäuschen eingebaut. Im nächsten Schritt wurden nicht-interaktive Objekte wie Stühle, Tische, Lampen etc. aus der Modellierungsphase des Projektes eingefügt. Diese Objekte wurden dann mit der Etage in Blender zu einem einzigen Objekt verschmolzen1. Nun wurde das Leveldesign eingeflochten. Dazu wurden die interaktiven Objekte wie Türen Feuerlöscher etc, indem ihre Koordinaten in eine XML-Datei2 eingetragen wurden, an die entsprechenden Stellen des Pförtnerlevels platziert. Die Installation von Feuer und Rauch erfolgte auf die gleiche Weise.
Groundlevel in Blender ohne Texturen und interaktive Objekte und Feuer |
Während die Anbringung von interaktiven Objekten und Feuern und ausschließlich über die XML Dateien ablief, mussten die statischen Objekte über die Append-funktion von Blender zunächst importiert werden und anschließend per Hand skaliert, rotiert und translatiert werden. Im späteren verlauf des Projektes konnte für die restlichen Level auch diese Funktion an die XML Dateien übertragen werden. Für die Texturierrung des Groundlevels mussten die Faces, die eine gemeinsame Textur oder eine gemeinsames Material erhalten sollten, zunächst als eine separate Gruppe von Objekten gehandhabt werden. Anschließend wurde Textur mit der Hilfe der UV-Map3 von Blender entsprechend ihrer zu bedeckenden Oberfläche skaliert. Zur Verbesserung der Performance und Ladezeit wurde beschlossen alle Faces nur von einer Seite zu rendern. Das führte dazu, dass zum Beispiel die inneren Wände und auch das Pförtnerhaus verdoppelt werden mussten diese von der Vor- und Rückseite sichtbar und unpassierbar sein sollten. Im nächsten Schritt wurden alle Objekte dann zum Groundlevel vereint. Durch die Vereinigung kam es teilweise zu Umorientierungen der Flächennormalen, die wieder richtig ausgerichtet werden mussten. Schlussendlich konnte das Groundlevel als JSON-Datei exportiert werden. Innerhalb der JSON-Dateien musste, damit die Texturen ordentlich mit THREE.js angezeigt werden konnten noch eine Feinabstimmung vorgenommen werden. Dazu wurden die Parameter von "mapDiffuseRepeat":[1,1] auf einen Wert >1 gesetzt damit sich die Texturen wiederholend aneinander setzten und nicht zentriert auf das Face und zu den Rändern gestreckt werden. Im Kapitel Blender Export wird näher auf die Syntax und Semantik der JSON-Dateien eingegangen.
Groundlevel in Blender mit Texturen und ohne interaktive Objekte und Feuer |
Für besondere Effekte und zur Sicherung des Levelablaufes auf den von uns erdachten Wegen wurden zusätzlich noch Trigger konstruiert und gesetzt und um dem Spielenden eine leichte Hilfestellung zu geben. Um zwei Beispiele für die genannten Trigger zu geben. Ein Trigger sorgt dafür, dass beim Betreten des Computerraumes der Rauch stark zunimmt. Ein weiterer Trigger sorgt dafür, dass sobald man diesen auslöst eine Überblendung zu einem anderen HTML Objekt erfährt, mit welchem der Spieler dann interagieren kann.
1. Fun Fact : Das Modell bestand zum Schluss aus rund 85.000 Vertices und 67.000 Flächen. ↩
2. Für nähere Informationen s.a. Kapitel: XML lesen & platzieren. ↩
3. Für nähere Informationen s.a Kapitel Modi von BLender. ↩