Luftbilder als Konstruktionsvorlage nutzen

  • In diesem Tutorial wird beschrieben, wie Luftbilder als Konstruktionsvorlage, oder gar als endgültiger Ersatz der Bodentextur genutzt werden können
    How To: Satellitenbilder in Transport Fever


    Schritt 1: Besorge eine Heightmap

    Viele schlagen dafür terrain.party vor, allerdings haben die dortigen Heightmaps eine zu geringe Auflösung für Realkarten. Wir benötigen mindestens 4m / Pixel. Für den wunderschönen Freistaat Thüringen gibt es seit einiger Zeit das Geoportal Thüringen, das extrem hoch aufgelöste Daten zum Download anbietet.

    Schritt 2: Besorge dir ein Satellitenbild

    Wer jetzt an Google Maps denkt hat eine Menge Arbeit und Frustration vor sich. Man wird schwerlich ein Satellitenbild erstellen können, das exakt deckungsgleich mit der Heightmap ist. Hier möchte ich ein weiteres Mal auf das Geoportal Thüringen verweisen, wo man hoch aufgelöste Satellitenbilder bekommt.

    Kurze Einführung in die Thüringer Geodaten

    Die Geodaten werden über eine Karte bereitgestellt, bei der man weit genug hereinzoomen muss um einzelne Kacheln von 1 x 1 Km anwählen zu können. Die Höhendaten liegen in verschiedenen Formaten vor:
    • LAS, LAZ: unglaublich hoch aufgelöst, aber aus mehreren Gründen unbrauchbar. Sie sind nicht gerastert, enthalten Gebäude und Vegetation und das Format ist relativ kompliziert (Aber gut dokumentiert). Alles in allem zu viel Arbeit
    • DGM, DOM: gerasterte, sortierte Höhendaten im Textformat. Sehr leicht zu nutzen, außerdem mit einer Auflösung von 2m / Pixel sehr gut für uns geeignet. DGM: Enthält keine Vegetation und Gebäude, DOM: Enthält Erhebungen von Vegetation / Gebäuden -> DGM ist unsere Wahl
    Die Satellitenbilder sind ganz ähnlich hinterlegt. Genau genommen handelt es sich hierbei nicht um Satellitenbilder, sondern um Luftbilder, die aus Flugzeugen aufgenommen wurden. Entsprechend liegen von jeder Kachel (hier 2x2 Km) mehrere Versionen vor, die von verschiedenen Überflügen stammen. Neben den historischen Luftbildern gibt es sogenannte Orthofotos, die entzerrt sind. Für die Planung in Transport Fever reichen die Previews, die in der Regel eine Größe von 1000 x 1000 Pixel haben.

    Die Länge und Breite des Satellitenbilds dürfen 16383 Pixel nicht überschreiten. Entscheidend sind hier, anders als bei der Kartengröße, nicht die Gesamtzahl der Pixel, sondern die Seitenlängen.

    Um die Höhendaten in eine Heightmap zu überführen, sowie zum Zusammensetzen der Kacheln zu einem einzelnen Bild, schreibt man sich idealerweise eine kleines Programm. Mein Ansatz ist leider nicht reif für die Öffentlichkeit.

    Schritt 3: Erzeuge deine Map

    Dafür gibt es etliche Tutorials und Tools. Natürlich klappt's auch manuell, ansonsten hilft das hier. Achte darauf, dass die Minimal- und Maximalhöhe der Karte zu den Höhendaten passen. Sie müssen nicht richtig sein, nur der Abstand muss stimmen. Transport Fever zeichnet bei 1000 Meter schon Schnee und ab ~600 Metern wachsen keine Bäume mehr.

    Schritt 4: Mache Transport Fever mit dem Satellitenbild bekannt

    Ersetze die ~\steamapps\common\Transport Fever\res\textures\terrain\level_colors.tga durch deine Textur. Wahrscheinlich musst du sie vorher ins .tga Format konvertieren. Hier hilft Irfan View mit seiner Batch-Convert Funktion. Vorher ein Backup machen!

    Schritt 5: Spanne das Satellitenbild über die Karte

    Ersetze den Code der ~\steamapps\common\Transport Fever\res\shaders\misc\terrain_gen.fs durch folgenden: Vorher ein Backup machen

    C-Quellcode

    1. #version 150
    2. uniform sampler2D heightmapTex;
    3. uniform sampler2D ambientTex;
    4. uniform vec2 offset;
    5. uniform vec2 tileSize;
    6. uniform vec2 resolution;
    7. uniform float texel;
    8. uniform sampler2D noiseTex;
    9. uniform sampler2D levelColorTex;
    10. uniform sampler2DArray detailColorArrayTex;
    11. uniform sampler2DArray detailNrmlArrayTex;
    12. in vec4 texCoord;
    13. out vec4 color0;
    14. out vec4 color1;
    15. void main() {
    16. vec2 heightMapSize = vec2(513, 513); //Replace with your heightmap size
    17. float posx = (offset.x + texCoord.x) / heightMapSize.x * 64 + 0.5;
    18. float posy = (offset.y + texCoord.y) / heightMapSize.y * 64 + 0.5;
    19. color0 = texture(levelColorTex, vec2(posx, posy));
    20. color1 = vec4(1.0, 1.0, 1.0, 1.0);
    21. }
    Alles anzeigen

    Schritt 6: What's next

    • Meiner Erfahrung nach sollte man zuerst die generierten Ortschaften und Straßen abreißen und neu bauen. Dabei sollte man darauf achten, dass eine Stadt zu keinem Zeitpunkt ganz abgerissen werden darf, sonst verschwindet sie. Die Auflösung der Höhendaten ist so hoch, dass die Trassen von Straßen und Bahngleisen ohne Probleme in der Höhenkarte gefunden werden können

    • Die mühsamste Aufgabe ist (in bewaldeten Gebieten) das platzieren der Bäume. Dabei können die neu platzierten Straßen erst mal übermalt werden. Später kann man die Straßen durch kurzes umrüsten (z.B. mit Tramgleisen) von Bäumen befreien. Die Geduld zahlt sich beim Blick auf die realistische Transport Fever Karte aus.

    Viel Spaß! Ich freue mich auf eure Screenshots :)
    Dateien
    • terrain_gen.zip

      (475 Byte, 82 mal heruntergeladen, zuletzt: )

    2.387 mal gelesen

Kommentare 22

  • GamingPotatoes -

    Habe Probleme beim Einfügen des Satellitenbildes, es ist immer viel zu klein in der Mitte der Map, bitte Hilfe.

    • GamingPotatoes -

      Wenn ich ranzoome, dann wird die Map dunkel, wie kann ich das beheben? :)

    • snowball -

      1. Im shader steht zweimal 513, mit einem Kommentar. Das musst du ändern
      2. Vermutlich HDR

    • GamingPotatoes -

      Ich habe vorerst mal ein Google Maps Bild genommen, weil ich auf Geoportal NRW nicht fündig werde nach Satelliten Bildern :|Kennt jemand eine gute Webseite, wo man hochauflösende Satellitenbilder von NRW bekommt?

    • snowball -

      Steht im Kommentar Darunter

    • GamingPotatoes -

      Bei diesem „bauforum.wirklichewelt.de“ habe ich nichts gefunden.
      Und das GeoPortal NRW versteh ich nicht... Wäre es vielleicht möglich ein Tutorial als Videoforum zu erstellen? :)

  • GamingPotatoes -

    Wie mache ich das denn mit dem Satellitenbild, wenn ich nicht diese Thüringer Seite verwende, da ich Köln haben möchte? :)

  • trainzer24 -

    sag mal Snowball, hast du da schon Ergebnisse die xyz.Datei zu verarbeiten ?

    • snowball -

      Ja, aber ich habe ehrlich gesagt keine Lust es zu veröffentlichen. Wenn du es probieren möchtest kann ich es dir per PM schicken.

    • trainzer24 -

      PM wartet :)

  • trainzer24 -

    Danke Snowball :) Problem verursachte meine Bilddatei, hatte die nur als TGA abgespeichert ...jetzt konvertiert und nun geht's freu freu
    so, jetzt kann ich weiter basteln :)

  • trainzer24 -

    Danke für das Tutorial , super Sache !!
    hab mal nach Anleitung versucht ein Satelitenbild als Untergrund zu integrieren.
    Bildgröße 1025 * 1025 Tga , hab den Eintrag in der terrain_gen.fs auf den Wert gesetzt.
    bekomme beim Start folgende Fehlermeldung:
    0(1) : error C0000: syntax error, unexpected floating point constant at token "<float-const>"

    res/shaders/misc/terrain_gen.fs

    • snowball -

      Dann hast du irgendwas geschrieben, was so nicht vorgesehen war. Ich habe dir eine fertige terrain_gen.fs als .zip an das Tutorial gehängt. Stelle bitte sicher, dass du wirklich *nichts anderes als die zwei angegebenen Zahlen änderst*

      Ich selbst habe es auf genau diese Weise schon sehr oft gemacht und habe nie einen Fehler bekommen.

  • snowball -

    @'robrobrobrob' Du hast völlig Recht, die Datei heißt 'level_colors.tga'. Ich hab das korrigiert.

  • robrobrobrob -

    Bei mir gibt es unter dem angegebenen Pfad gar keine "base_colors.tga"

  • robrobrobrob -

    Für NRW: geoportal.nrw/

  • Alpenexpress -

    Respekt! Die Idee gefällt mir.

  • GamingPotatoes -

    WOW, klasse Tutorial!! Danke dafür :D