Mission on Mars: Skalierung und Optimierung – Teil 1

Lesezeit: 4 Minuten

Fragt man Computergrafiker was das Wichtigste bei der Erstellung von 3D Objekten ist, kommt die Antwort: „Skalierung! Du muss skalieren!“.

Genau das mache ich nun auch.

Der Mars bei Wiki

Hier einige für mich wichtige Wiki-Fakten zum Mars – aus https://de.wikipedia.org/wiki/Mars_(Planet)

  • Die höchste Erhebung ist rund 24.000 m hoch
  • Das tiefste Loch ist rund -7.000 m tief

Der Mars bei der NASA

Wie im Artikel Mission on Mars: Die NASA war schon da beschrieben, habe ich ja eine Höhenmap des Mars, die ich in eine Mercator-Projektion umgerechnet habe.

Richtigerweise muss ich die Projektion allerdings wiederholen, habe ich doch hier https://webgis.wr.usgs.gov/pigwad/ArcMap_prjs/Mars 2000 Sphere.prj die richtige Ausgangs-Projektion gefunden.

Die Tools der GDAL-Bibliothek bieten mir weitere Möglichkeiten diese Höhenmap zu untersuchen. Zuerst hole ich mir die Informationen mit

was mir diese Informationen gibt:

Interessant sind die kalkulierten Werte Min/Max – die von -8522 bis 21184 gehen. Das korrespondiert mit den Werten der Wiki in etwa mit einer kleinen Verschiebung.

Um mehr Daten aus dieser Map heraus zu bekommen, rechne ich die DEM-Daten mit folgender Eingangs-Datei um:

Es werden 29.706 Höhenwerte auf 3 x 256 Farben (=768) verteilt. Das sind pro Farbwertdifferenz 38,7 Höhenwerte.  Im Bereich von -5.000 bis 2.000 sind das also etwa 180 Farbwerte.

Bei dieser linearen Verteilung entsteht folgende Höhenmap:

Die Rotwerte sind dominant, Gelb und Weiß nur in extremen Höhen vorhanden – nämlich am sogenannten Olympus Mons (Wiki: https://de.wikipedia.org/wiki/Olympus_Mons).

Für mein Spiel „Mission on Mars“ sind diese extremen Höhen und Tiefen wenig interessant – das soll eher Sperrgebiet sein, eine Raumbasis dort zu errichten wäre langweilig, weil isoliert. Ich versuche also mehr Informationen „in der Mitte“ zu generieren, dabei die extremen Höhen- und Tiefenwerte zu „opfern“  und gestalte die DEM-Eingabe so:

Hatte ich vorher im „besiedelbaren“ Gebiet von -5.000 bis 2.000 ganze 180 Farbwerte, so erlange ich in diesem Gebiet nun mehr als die fünffache Höhenauflösung – nämlich 1.024 Werte. Die RGB-Komponenten sind so gewählt, dass die Identifikation eindeutig ist.

Für Tiefen unter -5.000 und Höhen höher als 2.000 reduziert sich die Höhenauflösung natürlich gewaltig. Die Highmap sieht damit dann so aus:

Nette Nebeneffekte sind:

  • RGB-Höhenwerte deren Rotwert < 255 und g = b = 0 sind, sind „zu tief zum siedeln“
  • RGB-Höhenwerte deren Komponenten alle gleich sind, also r = g = b, sind „zu hoch zum siedeln“

Ich nehme mir einen interessanten Bildausschnitt von 1.024 x 1.024. Um nicht durch JPEG-Komprimierung und Interpolation meine Höhendaten zu „verseuchen“, speichere ich diese als unkomprimierte, nicht optimierte 24-bit PNG-Datei ab. Das ist wichtig – hier als JPEG:

Hier als korrekte PNG-Version: http://www.mission-on-mars.com/blog/download/highmap_tile10

heightFromImage anpassen

Für weitere Experimente könnte man die DEM-Input-Datei sicherlich parsen, ich habe sie fürs Beispiel erst mal hardcodiert:

Und wie erwartet, habe ich schöne Details auf meinem Tile:

Dafür brauchte ich keine neue Revision – lediglich die URL im Source-Code ändern auf: http://www.mission-on-mars.com/blog/example/tile10/512/16/200

Weiterführende Links

Im folgenden Blog kümmere ich mich um den Maßstab und das Zusammenspiel von Höhe und Breite:

Mission on Mars: Skalierung – Teil 2

 

 

 

 

 

 

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.