Landschaftsbau mit DEM
Im diesem Bericht geht es um den Bau von gleisbezogenen Landschafts-Objekten im Zusammenspiel mit einem digitalen Höhenmodell der Landschaft.
Geländemodell
Der klassische Ansatz zur Berechnung und Darstellung eines Geländes in der 3D-Programmierung ist das sogenannte Heightmap. Dabei wird die Landschaft in einem fest vorgegebenen Raster von z.B. 10m in Quadrate unterteilt. Zu jedem Koordinatenwert der Ebene gehört ein Höhenwert, der die Lage des Terrains gegenüber der Nullebene angibt. Dieses Format ist also kein volles 3D-Format, sondern 2D+Höhe. Vorteile sind die sehr einfache Programmierbarkeit und interne Verwaltung und auch die sehr effiziente Berechnung einer Höhenposition bei vorgegebener Lage. Das ist insbesondere für Anwendungen hilreich, bei denen sich viele Objekte frei im Gelände bewegen können bzw. Kollisionen zwischen Objekten und dem Gelände berechnet werden müssen. Für die Anwendung einer Bahnsimulation, deren Züge sich ja sowieso schon auf vorgegebenen Bahnen bewegen, bleibt als Vorteil nur die einfache Programmierarbeit. Weitere Nachteile sind die unnötig hohe Datendichte in bahnferneren Geländebereichen und das Problem, die beim Vorbild "scharf geschnittenen" Geländeformen im Zusammenhang mit Einschnitten und Dämmen nicht korrekt nachbauen zu können. Das folgende Foto zeigt einen normalen Bahndamm, der exakt parallel zum Gleis mit einem genormten Schüttwinkel angelegt wird. Im zweiten Foto liegt die Trasse ein einem Einschnitt, bei dem umgekehrt das gleiche Verfahren angewendet wird. Mit einem Heightmap sind solche Geländeformen wegen des starren Meshrasters nicht darzustellen.
Bei Zusi 3 wird deshalb ein anderer Ansatz verwendet, welcher eine Weiterentwicklung des Zusi 2-Verfahrens ist. Das Geländemodell ist programmseitig völlig frei definierbar, also an kein Raster gebunden. Der Streckenbauer verlegt zunächst die Gleise und baut die gleisbezogene Landschaft (Gleisbettung, Einschnitte, Bahnsteige, Brücken usw.) und erst dann werden die verbliebenen Löcher und freien Bereiche vom Geländeformer lückenlos mit dem Terrain aufgefüllt. Der Geländeformer bezieht die Höheninformation aus einem digitalen Geländemodell (DEM), das praktisch für die ganze Welt - auch kostenlos - erhältlich ist. Der große Vorteil dieses Verfahrens besteht darin, daß der Geländeformer erkennt, wie weit die zu erzeugende Landschaft jeweils von der bereits gebauten Bahntrasse entfernt ist, so daß er automatisch bahnfernes Gelände zunehmend gröber nachbilden kann. So sind bei gleichem Rechenaufwand größere Sichtweiten möglich, ohne auf feine Meshes in Gleisnähe verzichten zu müssen. Außerdem wird das Gelände sanft an die zuvor gebaute bahnnahe Landschaft herangeführt. Kleinere Ungenauigkeiten im DEM oder auch im Streckenbau werden so automatisch ausgeglichen.
Das DEM im 3D-Editor
Um Strecken nicht im luftleeren Raum bauen zu müssen, kann der 3D-Editor ein DEM direkt als 3D-Objekt darstellen, und diverse Baufunktionen können ihre Höhendaten direkt aus dem DEM beziehen.
Im 3D-Editor bietet sich nach dem Import der Strecke aus dem Gleisplaneditor z.B. das folgende Bild. Die Strecke liegt in der im Gleisplaneditor eingestellten Höhenlage und das hier zusätzlich eingespielte DEM (einfarbig grün) dient als Orientierung für den tatsächlichen Geländeverlauf. Das DEM ist kein Bestandteil der 3D-Landschaft, sondern nur eine Art Orientierungshilfe.
Auf dem DEM können auch georeferenzierte Bitmaps als Textur dargestellt werden. Damit lassen sich Straßen und Objekte schnell und vorbildgerecht bauen:
Wer seine Strecke sorgfältig gebaut hat (die DEM-Daten stehen ja auch im Gleisplaneditor beim Abstecken des Höhenprofils zur Verfügung), wird jetzt feststellen, daß die Strecke im Bereich der Dämme über dem DEM und im Bereich der Einschnitte darunter liegt.
Bau der gleisnahen Landschaft
Einschnitt/Damm: Um Dämme und Einschnitte zu vorbildgerecht zu bauen, bietet Zusi die folgende Funktion, welche von einem Startelement aus u.a. über eine einstellbare Länge entlang des Gleises arbeitet. Damit der Damm/Einschnitt immer paßgenau am Randweg beginnt, können die Abmessungen direkt aus der Oberbau-Bauart entnommen werden, welche bei jedem Streckenelement hinterlegt wird. Alternativ kann Seitenabstand und Höhendifferenz zur Gleisachse individuell eingegeben werden. Am anderen Ende des Einschnitts/Damms bietet sich die Methode an, jeweils automatisch bis zur Oberfläche des DEMs zu bauen. Die Routine erkennt automatisch, ob Damm oder Einschnitt nötig sind und erzeugt durch den Schnitt mit dem DEM sehr vorbildnahe Geländeverläufe.
Hier das Ergebnis - das DEM ist zur besseren Erkennbarkeit als Gitter dargestellt. Wie man sieht, paßt sich die Höhe der neu gebauten Polygone automatisch dem Verlauf des DEMs an. Wenn am Ende der Geländeformer die offenen Bereiche ausfüllt, entsteht eine sehr authenthische Geländeoberfläche, da sich Einschnitt/Damm perfekt an die durch das DEM gegebene Oberfläche angepaßt haben.
Stützmauer: Nach dem gleichen Prinzip lassen sich gleisbezogene Stützmauern anlegen. Über der Mauer kann auf Wunsch noch ein Einschnitt bis zum DEM angelegt werden, wie es beim Vorbild oberhalb von Stützmauern auch üblich ist. Diverse Optionen sollten sich aus dem Formular von erkennen lassen, ohne daß sie alle im Detail erläutert werden müssen.
Nach dem Aufruf der Funktion sieht man die hier auf 200 m Länge von 0 auf 8 m ansteigende Mauer und darüber den bis zum DEM angelegten Einschnitt.
Bahnsteig: Zwar ohne DEM-Bezug aber auch zur Familie der gleisbezogenen Baufunktionen gehört die Funktion für den Bahnsteigbau. Für Haus-/Außenbahnsteige kann eine feste Breite eingestellt werden und wenn ein Bahnsteig zwischen zwei Gleisen angelegt werden soll, dann ergibt sich die Breite automatisch durch die beiden Bahnsteigkanten. Das zweite kann Gleis automatisch ermittelt, für besondere Fälle aber auch über die Elementnummern manuell festgelegt werden.
Das folgende Bild zeigt den Bahnsteig, der durch das automatisch gefundene Parallelgleis begrenzt wird. Der Bahnsteig wird also ohne weitere Nacharbeit auch in der Kurve mit dem sich verringernden Gleisabstand gebaut. Die beiden Bahnsteiggkanten werden mit einer eigenen Textur belegt, die vom Fuß über die Kante bis zu einer frei definierbaren Breite gewickelt wird. Damit lassen sich auch die moderneren Bauarten nachbilden, die parallel zur Bahnsteigkante noch einen besonderen Belag inkl. Blindenleitweg aufweisen. Konfigurationen lassen sich in xml-Dateien speichern, so daß die diversen Parameter für Normbahnsteige nicht jedes Mal eingestellt werden müssen.
Formkurve: Eine weitere Baufunktion mit Gleisbezug ist die Formkurve. Hierbei handelt es sich um eine frei definierbare 2D-Kurve, die entlang des Gleises in die Länge gezogen wird. Das folgende einfache Beispiel mit einer symbolischen Textur erklärt die Funktionsweise. Im Eingabeformular wird die 2D-Kurve mit x-/y- und Textur-Koordinaten definiert und kann auch aus einer xml-Datei geladen werden.
Nach dem Ausführen der Funktion sieht man das entstandene 3D-Objekt, das mit dem zuvor definierten Querschnitt entlang des Gleises erstellt wurde. Für diese sehr universelle Funktion dürften sich zahlreiche Anwendungsfälle finden lassen.
Elemente entlang Gleis importieren: Wenn einzelne 3D-Objekte mehrfach entlang der Strecke aufgestellt werden sollen, bietet sich diese Funktion an. Parallel zum Gleis in einstellbaren Abständen wird eine 3D-Datei importiert. Für eher etwas unregelmäßig stehende Objekte wie Bäume kann die Position zufällig variiert werden. Die Höhenlage kann entweder auf das Gleis bezogen oder aus dem DEM entnommen werden. Im folgenden Beispiel wird der Tiger aus dem DirectX-SDK mit Zufallseinfluß DEM-bezogen importiert.
Wie man sieht, wurde der Tiger 10 m neben dem Gleis, variiert mit dem Zufallswert von +/-2 m, importiert und auf DEM-Höhe geschoben. Da er seinen Objektursprung etwa in Körpermitte hat, stecken die Beine bei dieser Demostration im Boden.
Panorama
Zu guter letzt noch ein Hinweis auf weitere Neuerung im Zusammenhang mit dem Gelände, der zwar noch nicht vollständig implemtiert ist, aber durch ein paar erfolgversprechende Vorabversuche seine Funktionsfähigkeit gezeigt hat. Und zwar wird für die Darstellung des Terrains eine zweite, deutlich gröber gebaute, lückenlose Grundplatte verwendet. Diese wird ab einer Entfernung von einigen km für die Darstellung der Landschaft benutzt, braucht wegen der recht groben Meshes nur wenig Rechenleistung und ermöglicht somit ein sehr tiefes Panorama mit Sichtweiten im (voraussichtlich) mittleren zweistelligen km-Bereich. Hier eine entsprechende Aussicht im Bereich des Eggegebirges:
Weiter >
|