Daten aus Länder-Geoportalen in den TS übernehmen (3d-Modelle und Landschaft)

Discord Einladung
Trete unserem Discord-Server bei (klicke hier zum Beitreten).
  • Ausgangslage

    Bei unserem Streckenprojekt "Oberpfalz" gibt es diverse Ortsdurchfahrten. Bei einigen liegen Teile der Ortschaften am Berg bzw im Tal, also deutlich sichtbar von der Lokführerperspektive. Als Beispiel genannt seien hier Nabburg und Amberg, oder Maxhütte-Haidhof oder auch Etzelwang. Die Nutzung von vielfach vorhandenen Haus-Objekten schied aus, wir wollten so authentisch wie möglich bleiben. Um hier überhaupt einigermaßen voranzukommen, hatte ich mit den Grundrissen aus OpenStreetMap gearbeitet und experimentiert. Es blieb aber immer noch ein aufwändiger Arbeitsschritt.


    Erste Überlegungen

    Bereits erwähnt, habe ich auf der Basis von OpenStreetMap-Daten (Grundrissen) Bereiche in Bodenwöhr Nord (Blechhammer) gestaltet. Die Häuser sind zwar individuell, aber immer noch mit zu großem Aufwand gestaltet. So habe ich den Schritt abgebrochen, bei dem Beispiel fehlen deshalb auch noch Texturen.

    Mittlerweile hatte ich mit Planungsdaten zu tun und im Rahmen von Planungen für eine Schule den Train Simulator als Planunsinstrument genutzt. Konstruiert hatte ich einen Hochbahnsteig der Stadtbahn direkt an einem Schulneubau mit direktem Zugang zum Schulhof in der Ebene 1 der Schule.

    Dabei bin ich dann auf die bei der Stadtverwaltung vorhandenen Daten im Geoportal gestoßen.

  • wir wollten so authentisch wie möglich bleiben

    Irgendwo muss man im TSC Grenzen beim Streckenbau setzen, sonst wirds nie fertig. Ich weiss nicht, welche Provider ihr freigeschaltet habt, aber

    mir fallen auf anhieb diverse Häuser aus Konstanz-Villingen ein, die an der Stelle hinpassen würden.


    Wir haben aktuell genau die gleiche Diskussion in Hildesheim. Streng genommen müsste man dort jeder Häuserfront am Bahnhof in Blender nachbauen....aber wirds dann fertig? Eher nicht. Man muss sich auch die Frage stellen, ob es überhaupt noch irgendwann ein Publikum für das eigene Projekt gibt, wenn man etliche Jahre am basteln ist. Wir haben diesen Faktor bei unserem Projekt immer im Blick, wenn wir uns entscheiden müssen, wie authentisch irgendwas sein soll. Am Ende des Tages wollen die Spieler halt spielen und etwas im Downloadbereich sehen.

    „Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren.“
    Benjamin Franklin

    4 Mal editiert, zuletzt von tom87 ()

  • Die Daten im Geoportal

    Bayern, was für unser Projekt entscheidend ist, liefert Daten im CityGML-Dateiformat (City Geography Markup Language).

    Das Datenformat gehört zu den Opendata-Formaten und ist damit frei verfügbar. In den CityGML-Daten sind dreidimensionale digitale Modelle von Gebäuden enthalten, die auf der amtlichen Liegenschaftskarte basieren, also schon recht genau sind. Dazu gehört ein digitales Geländemodell zur Beschreibung der Erdoberfläche. Bei den digitalen Gebäudemodellen gibt es verschiedene Detailstufen, einen Level of Detail (LoD).

    - LoD1 Daten beinhalten einfache Klötzchen ohne Berücksichtigung der tatsächlichen Dachform.

    - LoD2 Daten beinhalten zusätzlich allen Gebäuden zugeordnete standardisierte Dachformen. Sind die Dachformen zu komplex, wird ein Flachdach dargestellt. Bayern liefert diese Datenform.

    Es gibt noch die Definition LoD3 (detaillierte Gebäude mit Dachüberständen, Balkonen, Türen, Fenster), die bisher eher selten vorkommen (Google Earth liefert angenäherte Daten mit Texturen von den größeren Städten)

    Leider stehen Google-Daten für die Städte in der Oberpfalz nicht zur Verfügung.

    Im Folgenden möchte ich darstellen, wie man über Blender die Gebäude und Landschaftsdaten in den TS bekommt. Die Landschaftsdaten sind insoweit interessant, dass man zum Beispiel felsige Geländeeinschnitte so per Objekt einigermaßen realistisch gestalten kann. Ich habe dazu 4 Beispieldateien ausgewählt: Schwandorf-Pesserlstraße, Nattermoos, Kronstätten Dorf, Pösing Dorf.

    Quelle: Bayernatlas: https://atlas.bayern.de/?c=677…=8&r=0&l=atkis&t=ba&mid=1

    Man kann 3D mit dem Button unten rechts aufrufen, egal ob Karte oder Luftbild


    Daten nach Blender zur Weiterverarbeitung laden

    Ich arbeite nach wie vor mit Blender 2.79, weil das für mich von der Erfahrung und von den Arbeitsschritten am einfachsten ist. Aber die hier zu beschreibenden grundsätzlichen Schritte sind auch bei der Oberfläche ab 2.8 nicht anders.

    Der erste notwendige Schritt ist, die CityGML-Daten nach Blender zu bekommen. Das geht über das obj-Dateiformat. Dafür gibt es Kommandozeilen-Tools, wie z.B.
    https://github.com/tum-gis/CityGML2OBJv2

    Damit muss man sich aber schon sehr gut auskennen. Ich habe hier jetzt darauf verzichtet.

    Es gibt als Tool den 3DcityLoader, der allerdings keine kostenlose Konvertierung bietet (es sei denn, die Datei ist klein):

    Das Downloadportal für 3D-Stadtmodelle
    3D-Stadtmodelle aus öffentlichen Quellen konvertiert in viele Dateiformate, wie CityGML, AutoCAD DXF, STL oder OBJ, sofort herunterladen.
    3dcityloader.com

    Es gibt auf der Einstiegsseite unter "3D-Stadtmodelle in vielen Formaten" einen Button "Jetzt Testen". Dann gelangt man auf den Auswahlbereich. Ich habe hier Kronstetten Dorf mit der Kirche ausgewählt. Das Ergebniss seht ihr in der Vorschau, ebenso Schwandorf_Presserlstraße, Nattermoos und Pösing.

    (Nattermoos und Kronstetten sind kleine Datei und daher kostenlos) Quelle: jeweils 3DCityloader

    Man kann rechts das Dateiformat einstellen, hier also "obj", die Auflösung beim Gelände bis 1m herunter, bei Gebäuden bis 20cm. Außerdem gibt es die Option, nur die Gebäudedaten herunterzuladen, oder die Geländedaten in einer eigenen Datei zu bekommen. Wenn Ihr ein Luftbild als Textur bekommen wollt, müsst Ihr bei "Textur" das entsprechende Häkchen setzten.

    Man kann auch mit dem von AutoCAD bekannten Dateiformat dxf weiterarbeiten. Ich werde beide Möglichkeiten im Folgenden darstellen und auf die Unterschiede hinweisen.

  • Importieren der Datei nach Blender

    1. obj-Datei

    Die Datei aus dem 3DCityLoader wird gepackt als zip-Datei zur Verfügung gestellt. Nach dem Entpacken gibt es die obj-Datei, die ATTRIBUTION.txt mit den Angaben für die Lizenzen, die map_texture.jpg mit dem Luftbild für die Geländedaten und die materials.mtl mit Informationen für die Texturen. Die Datei materials.mtl lässt sich mit einem Texteditor (z.B. Notepad) öffnen. Es gibt in der Datei also das Material terrain_material mit der Textur map_texture.jpg und das Material buildings_material. Die Angabe Kd steht für eine diffuse Farbe nach dem Schema rot-grün-blau. Dabei bedeutet 0.7 0.7 0.7 einen Grau-Wert. Die Angabe Ks steht für Specular Reflectance, also der Intensität eines Glanzlichts.

    Ich bereite an dieser Stelle mein Material gleich für den TS vor. Dazu konvertiere ich die jpg-Datei in eine png-Datei und verändere die Größe in eine beispielsweise 1024x1024 oder 2048x2048 große Datei. Zur Erinnerung, der TS benötigt ace-Dateien, die Werte zur Basis 2 beinhalten müssen. Da die Beispieldatei von Kronstetten nicht quadratisch ist, passe ich den Arbeitsbereich in Photoshop entsprechend an und speichere die Datei unter Kronstetten_Luftbild. Zudem habe ich gleich der obj-Datei einen passenden Namen gegeben als Kronstetten_Dorf.obj. Damit ist nun meine Datei fertig für den Import nach Blender.

    Nicht wundern nach dem Import in Blender, das Objekt steht. Es muss als erstes um die X-Achse rotiert werden; also mit dem Blender-Befehl R X -90. Dann liegt es korrekt.

    Als nächstes müssen wir uns um das Material kümmern.