Entwicklung – Bob The Builder
Einleitung
Seit Herbst 2008 wird bei Espadon am Welteneditor ' Bob the Builder ' gearbeitet. Er ermöglicht unseren Weltendesignern ohne weitere Kenntnisse von der Programmierung mit Ogre selbst eine Espadon Online Welt zu designen.
Der Welteneditor ist somit das Bindeglied zwischen Weltendesignern und Client bzw. Server.
Programmiert wird mit C++, als Grafikengine verwenden wir Ogre3d (http://www.ogre3d.org).
Im Folgenden wollen wir Euch unter zu Hilfenahme von einigen Rendershots einen kurzen Überblick über die Funktionen geben, welche dem Designer zur Verfügung stehen.
Menu
Als erstes stellen wir den groben Aufbau des Editors vor. Neben einem ausreichend großen Renderfenster zum arbeiten muss ebenso ein einfach zu handhabendes Menu vorhanden sein, was trotz einer großen Menge an Funktionen einen guten Arbeitsfluss gewährleisten muss.
Das Renderfenster nimmt den größten Teil der Fläche des Editor Fensters ein.
Das Menu ist logisch in einzelne Tabs unterteilt, welche wiederum in Untertabs aufgeteilt sind.
So wird eine logische Gliederung der Funktionen bei gleichzeitig kompaktem Aufbau gewährleistet.
Navigation
Die Navigation im Renderfenster erfolgt zum einen über Tastatur und Maus und zum anderen über eine Minimap im Menu.
Mit Tastatur und Maus wird die Position der Kamera, sowie ihre Ausrichtung verändert.
Die gesamte Welt ist in einzelne Zellen unterteilt, sodass das Laden von Teilen der Welt möglich ist.
Welchen Ausschnitt der Welt gerade bearbeitet wird, kann über eine Minimap im Menu ausgewählt werden.
Im Vergleich zur gesamten Fläche der erstellten Welt wird also nur ein kleiner Teil bearbeitet, was einen deutlichen Leistungsschub beim bearbeiten bewirkt.
Terrain
Zu Anfang konzentrierten wir uns auf das Terrain. Ziel war es, ein 100% verformbares Terrain zu schaffen, das nicht nur in Form einer Heightmap verändert werden kann, sondern auch Höhlen und Überhänge ermöglicht.
Zur Bearbeitung des Terrains verwendet der Designer bestimmte Brushs, welche unterschiedliche Gradienten und Funktionen besitzen, die anhand von eingestelltem Radius und Intensität auf das Terrain wirken.
Das Verformen geschieht per Mausklick. Der Benutzer klickt auf die entsprechende Stelle des Terrains um sie zu verändern. Die Stelle auf die die Maus zeigt, wird als Mittelpunkt für die Berechnung des zu verformenden Kreisbereichs verwendet.
Daraufhin werden alle in Frage kommenden Punkte des Terrains anhand des Radius ermittelt, worauf die Brush - spezifische Veränderung erfolgt.
Da im Vergleich zur gesamten Fläche meist nur eine relativ kleine Fläche bearbeitet wird, sind alle Dreiecke und Punkte des Terrains in einen Quadtree eingeordnet, sodass die in Frage kommenden Punkte aus der gesamt Menge des Terrains schnell ermittelt werden können.
So ist auch auf älteren Computern hier noch ein flüssiges Bearbeiten des Terrains ohne Leistungseinbrüche möglich.
Im folgenden ein paar Beispiele, wie die bisherige Verformung des Terrains von statten gehen kann.
Terrain – Sinusbrush - 2D
Mit der Sinusbrush kann man, wie es der Name bereits vermuten lässt, das Terrain anhand einer (halben) Sinusschwingung verformen.
Da der so entstehende Gradient kreisförmig über den Arbeitsbereich verteilt wird, entsteht ein regelmäßiger und abgerundeter Hügel:
Die Sinusbrush zählt zu den Heightmap bzw. 2D Brushs.
Sie verändert lediglich die Höhenkoordinate der Punkte.

Terrain – Normalbrush - 3D
Die Normalbrush verschiebt die Punkte in Richtung ihrer Normalen und verwendet einen auf den Dreidimensionalen Raum angewendeten Radius.
Daher zählt sie zu den 3D Brushs.
Mit ihr kann man skurril anmutende Landschaften erstellen (siehe Bild) aber auch Überhänge und Höhlen.
Da die Punkte mit fortlaufendem Verformen weiter auseinander driften, werden die Dreiecke immer größer. Da nach ein paar Anwendungen die Landschaft unschön und eckig wird, entwickelten wir ein dynamisches System um die Dreiecke zu teilen. Zum einen werden sie ab einer bestimmten Größe bzw. Seitenlänge an dieser Seite einfach zweigeteilt (wobei logischerweise auch das
angrenzende Dreieck geteilt werden muss). Zum anderen kann ein Dreieck durch das hinzufügen eines Mittelpunktes in drei neue Dreiecke geteilt werden.
Dieses Verfahren ist weiterhin dazu bestimmt feinere Strukturen zu modellieren.

Anmerkung
Wird das Terrain erstellt, so wird ein regelmäßiges Grundraster aus Punkten erstellt.
Strukturen, welche kleiner als dieses Raster sind könnten ohne diese Techniken daher nicht modelliert werden.
Terrain – Texturieren
Das Texturieren des Terrains funktioniert prinzipiell ähnlich wie das Verformen.
Anhand des Mittelpunktes und des Radius werden die in Frage kommenden Punkte ermittelt. Nur dass hier dann nicht ihre Position, sondern ihre Texturdaten verändert werden.

Objekte
Auch das Platzieren von Objekten auf dem Terrain ist selbstverständlich möglich.
Der Benutzer wählt ein Objekt aus einer Liste aus und kann es mit der Maus an der gewünschten Stelle auf dem Terrain platzieren. Ebenso können die Objekte skaliert, gedreht oder gekippt werden, wie es dem Benutzer beliebt.
Die Platzierung geschieht hierbei direkt auf dem Terrain. Weitere kleinere Funktionen, wie zum Beispiel das erzeugen einer zufälligen Ausrichtung bei jedem neu platzierten Objekt, ergänzen das Platzieren.

Objekte - Auswählen
Ein Selektieren von platzierten Objekten, sowie Löschen und Repositionieren gehört hier selbstverständlich auch zum Funktionsumfang.
Beim Auswählen von Objekten kann der Benutzer bestimmen, unter welcher Bedingung ein Objekt selektiert werden soll. Zum einen wird ein Objekt nur dann ausgewählt, wenn der Mauscursor genau auf das Objekt zeigt (Testen auf Polygon Ebene).
Zum anderen kann die Selektion auf Ebene der Boundingbox geschehen. Ogre3D ermöglicht eine schnelle Auswahl von Objekten anhand ihrer Boundingbox, sodass das Objekt zur Selektion nicht wirklich getroffen werden muss.
Gerade, wenn ein schnelles Repositionieren von weiter entfernten Objekten erforderlich ist, die eine nicht sehr große Fläche aufweisen (Beispiel Baum mit dünnem Stamm), ist das Testen auf BoundingBox Ebene angebracht, bietet aber bei Objekten, die nahe beieinander stehen auch Platz für eine Fehlerhafte Selektion.
Objekte - Objekt an Objekt
Damit aber nicht nur Objekte auf dem Terrain platziert werden können, sondern auch die Einrichtung eines Hauses (Bilder aufhängen, platzieren von Dingen im 1. Stock usw.) möglich werden, gibt es die Objekt an Objekt Funktion (kurz OaO). Anbei ein Beispiel, wie Objekte auf einem Tisch platziert wurden.
Hierbei wird das gewählte Objekt beim verschieben nicht weiter auf dem Terrain, sondern nur an bereits platzierten Objekten bewegt.
So sind dem Entwickler beim Erstellen einer Objekt – und detailreichen Welt keine Grenzen gesetzt.
Anno1989 – Stand: 1. Juni 2009


