Tempelmodelle in der Irrlicht Engine

by Jan Seyler und Nithi Rungtanapirom

Ausblick

Nachdem unser Praktikum nun abgeschlossen ist, sind uns während der Umsetzung einige Dinge aufgefallen, die an Irrlicht bzw. unserem Programm noch zu verbessern sind und dies stelle ich nun in diesem kleinen Ausblick dar.

Wie auch schon in unserem Vorgängerpraktikum angeregt, wäre es schön eine ressourcensparende Grassdarstellung in Irrlicht zu haben. Die momentante Lösung ist zwar einfach zu implementieren, aber für große Graßflächen einfach unbrauchbar, da es zu speicherintensiv ist. Im Zuge dieser besseren Darstellung von Terrain sind auch Wälder wünschenswert. Gerade unser Gebiet enthält relativ viele Waldflächen, die wir so allerding nich darstellen konnten, weil die TreeNode, die im Forum angeboten wird, einfach noch zu unausgereift ist.
Eine noch größere Annäherung an die Realität ergibt sicherlich ein fraktaler Wolkengenerator, der zu einem bereits existierenden Sonnenzyklus hinzugefügt werden müsste. Den Sonnenzyklus hatten wir für unser Projekt gedacht, ihn allerdings wegen einem OpenGL Problem nicht eingebaut. Da der Sonnenzyklus ähnlich wie eine Skybox um das gerenderte Terrain herum gelegt wird, wir aber Nebel verwenden ergibt sich folgendes Problem:

OpenGL erstellt Nebel als eine von der Entfernung des Bildobjekts abhängende graduelle Mischung aus der tatsächlichen Farbe und der Nebelfarbe. Diese Vermischung kann entweder linear oder exponentiell erfolgen.
Wenn man nun zusätzlich zu einer Skybox noch Nebel verwenden möchte, tritt ein Problem auf:



Der Nebel wird also nur auf das Terrain und die Objekte darauf, aber nicht auf die Skybox angewendet. Dieses Dilemma ist aber nur logisch, da die Skybox einfach zu weit vom Betrachter entfernt ist und somit die Skybox komplett nur die Farbe des Nebels hätte. Dies bedeutet aber natürlich, dass man keine Skybox einfügen braucht. Was tut man nu aber, falls man einen Nebel möchte, der nur über dem Boden schwebt und man am Himmel z.B. noch einen Sternenhimmel möchte? Die einfachste Möglichkeit ist seine Skybox wie folgt zu bearbeiten: Skybox mit Nebel als Farbverlauf

Hierbei habe ich einfach einen Farbverlauf in der Farbe des Nebels, die man ja selbst bestimmen kann, über die ursprüngliche Skybox gelegt. Es ist sicherlich nicht die beste Lösung aber ich denke eine der einfachsten und es ist schon wesentlich besser als gar nichts.
Allerdings wirkt so der Nebel sehr statisch und nicht sehr realistisch... Außerdem ergibt sich somit an Bergen, die höher sind als der Farbverlauf ein Problem.
Es wäre schön hier eine elegantere Lösung zu finden, die gleichzeitig auch noch ressourcenschonend ist. Falls man einfach nur den Horizont leicht im Nebel sehen möchte, kann man die Skybox soweit verkleinern, dass sie gerade noch im maximalen Nebelradius liegt. Da sich die Skybox mit der Kamera mitbewegt, ändert sich die Entfernung auch nicht. Dies ist allerdings für einen Bodennebel keine anwendbare Methode.
Optimal wäre ein Nebel, der nur bis zu einer bestimmten Höhe über der Oberflächse schwebt, was meiner Meinung nach aber nur mit deinem animated bzw particle mesh umzusetzten ist.
Ich denke, diese Lösung wäre zu ressourcenaufwändig.