RanDEM - Zufallsgenerator für digitale Höhenmodelle (DEM)

http://www.nikis.de/RanDEM


0. News
1. Einleitung
2. Programmbeschreibung
3. Einstellungsmöglichkeiten
4. grauskalierte Bitmaps in SimCity 4 importieren
5. FAQ
6. Versionshistory
7. Download

Zugriffe:

0. News:

28. April 2004: Warum meldet sich niemand bei mir und erzählt mir, dass die Bitmapansicht bei einer Farbtiefe von 16 Bit nicht vernünftig funktioniert? Naja, jedenfalls wurde dieser Fehler jetzt mit Version 2.1 behoben.

18. März 2003: RanDEM V2.0 ist fertig! Ich habe das Programm komplett neu geschrieben und nur die alten Algorithmen übernommen. Zu den Neuerungen gehört z.B., dass das Dialogfeld "Einstellungen" beim Wechsel zu anderen Anwendungen ausgeblendet wird. Außerdem wurde die Berechnung in einen Worker-Thread ausgelagert und das Bitmap muss zur Anzeige nicht mehr zwischengespeichert werden, sondern verbleibt im Speicher, bis man es gezielt speichert. Zusätzlich kann man jetzt Größen bis zu 32 einstellen und zwischen verschiedenen Farbskalen (Graustufen, topografisch, topografisch mit Wasser, Rot, Grün, Blau) wählen.

Auf der Suche nach weiteren Ergänzungen von RanDEM bin ich auf dieses Projekt von Leonhard Rathner gestoßen:
Landschaftserstellung und -Erosion in der Computergrafik
Mit seinem Java-Programm "Terrain Erosion Simulator (TES)", kann man ebenfalls DEMs als grauskalierte Bilddatei erstellen (statt der Mittelpunktverschiebung verwendet er die "Perlin Noise"-Funktion) und sogar noch Erosion (!) hinzufügen. Letzteres erfordert aber leider massive CPU-Power.

1. Einleitung:

RanDEM ist mein allererstes Visual C++ Programm, also wird es wohl noch einige Macken und Bugs haben, evt. kommt es auch hin und wieder zu Abstürzen. Ich übernehme keinerlei Verantwortung für Probleme oder Schäden, die durch Anwendung des Programms auftreten. Wer Lob, Kritik, Bugmeldungen, Verbesserungsvorschläge oder sonstwas loswerden möchte, kann sich gerne bei mir melden: RanDEM@nikis.de

Viel Spaß!

Niki

2. Programmbeschreibung:

RanDEM erstellt sogenannte digitale Höhenmodelle (DEM). Dabei wird jedem Punkt einer Ebene ein bestimmter Höhenwert zugeordnet. In diesem Fall entspricht die Ebene einer Bitmap-Grafikdatei und die Höhenwerte den Farbwerten, hier 256 Graustufen. Schwarz (0) ist also der tiefste Punkt und weiß (255) der höchste.
Damit diese einigermaßen natürlichen Landschaften ähneln, werden keine reinen Zufallswerte gewählt, sondern mit Hilfe der Mittelpunktverschiebung eine Landschaft mit einer bestimmten fraktalen Dimension erstellt (zumindest näherungsweise). Der Wert 2.25 für die fraktale Dimension kommt hierbei realen Landschaftszügen sehr nahe.

3. Einstellungsmöglichkeiten:

- fraktale Dimension:
sollte zwischen 2 und 3 liegen; je größer, desto zerklüfteter die Landschaft, je kleiner, desto gleichmäßiger
- Delta:
Verschiebungsgrundwert für die Mittelpunktverschiebung, da die Höhe auf ein Maximum von 255 heruntergerechnet wird, hat dieser Wert wenig Einfluss auf das Ergebnis
- Schritte: (nur bis V1.3)
Anzahl der Berechnungsschritte, der Abstand der zu berechnenden Punkte wird mit jedem Schritt halbiert, das Maximum ist abhängig von der Bildgröße, für ein brauchbares Ergebnis sollte immer das Maximum gewählt werden, kleinere Werte haben zur Zeit leider kaum Einfluss auf die Berechnungsgeschwindigkeit
- Breite:
Breite * 64 + 1 = Pixelbreite des Bitmaps
- Höhe:
Höhe * 64 + 1 = Pixelhöhe des Bitmaps

- Landhöhe:
Höhenunterschied zwischen N.N. und dem höchsten Berg, kleine Werte ergeben flaches Geländer, große Werte hohe Berge
- Wasserspiegel:
senkt die ganze Karte ab, so dass sich die Fläche unterhalb des Wasserspiegels vergößert
- Farbskala: (ab V2.0, irrelevant bei Farbtiefe von 8 Bit)
hier können verschiedene Farbskalen für die Bitmapdatei gewählt werden - N.N.:
der Graustufen-Indexwert, der dem Meeresniveau entspricht (bei SimCity 4 zwischen 83 und 84)
- Wasseroberfläche zeigen:
alle Punkte unterhalb des Meeresspiegels werden mit hervorgehobener Farbe gezeichnet, um die Küstenlinie besser zu sehen

Anzeige:
- normal:
das Bitmap wird 1:1 dargestellt
- anpassen:
das Bitmap wird an die Größe des Clientfensters angepasst, das Seitenverhältnis wird beibehalten
- dehnen:
das Bitmap wird an die Größe des Clientfensters angepasst, das Seitenverhältnis kann sich verändern

Dateiname:
in diese Datei wird das aktuelle Bitmap durch Drücken auf "Bitmap speichern" gespeichert


4. grauskalierte Bitmaps in SimCity 4 importieren

Zufälligerweise lassen sich die mit RanDEM erstellten grauskalierten Bitmaps sehr gut in SimCity 4 importieren, um neue Regionen zu erstellen.
Dabei ist folgendes zu beachten:

- Farbskala "Graustufen" wählen
- N.N. auf 84
- "Wasseroberfläche zeigen" deaktivieren
- Schritte auf die maximale Größe stellen (bis V1.3)

Mit der dazu passenden config.bmp (Breite und Höhe müssen übereinstimmen!), kann man die Bitmapdatei dann über Strg+Alt+Shift+R in SimCity 4 importieren.

5. FAQ:

Frage: Ist es möglich, das Bitmap in Farbe darzustellen?
Antwort: Ab V2.0 kann man zwischen verschiedenen Farbskalen wählen.

Frage: Kann man verschieden große Stadtfelder in der config.bmp selbst plazieren?
Antwort: Nein. Je nach Auswahl der Stadtgröße (4x4, 2x2, 1x1) wird die config.bmp komplett in dieser Größe ausgefüllt und am Rand mit kleineren Stadtfeldern aufgefüllt, bis die gewünschte Bildgröße erreicht ist. Alle weitergehende Plazierungsmöglichkeiten würden in den Aufgabenbereich eines Grafikprogramms fallen und sind in RanDEM nicht vorgesehen.

Frage: Wäre es nicht möglich, eine grobe Richtung für das Bitmap vorzugeben, so dass z.B. eine Insel entsteht oder ein Fluss das Bild kreuzt?
Antwort: Der verwendete Mittelpunktverschiebungsalgorithmus lässt derartige Vorgaben leider nicht zu. Man müsste diese nachträglich hinzufügen und auch noch die Landschaft zum Fluss/Meer hin abfallen lassen. Das alles ist sehr aufwendig und würde auch den Rahmen von RanDEM sprengen. Man kann aber entweder so oft neue Landschaften generieren, bis man mal eine erwischt, die den speziellen Wünschen einigermaßen entspricht. Oder man bearbeitet das Bitmap noch mit einem Grafikprogramm und zieht mit einem dicken schwarzen Pinsel eine Linie quer durchs Bild, schon hat man einen Fluss. Allerdings sollte man dann die Übergänge noch glätten oder verwischen ...

Frage: Warum sind meine Landschaften immer so flach? Kann ich keine stärkeren Gefälle produzieren?
Antwort: Bis V1.2 wurde mit Erhöhung des Wasserspiegels die Höhe der gesamten Landschaft einfach reduziert. So konnte es vorkommen, dass der höchste Punkt der Landschaft weit unter dem maximal möglichen Wert lag, die Landschaft war viel flacher als es eigentlich möglich gewesen wäre. Dieses Problem wurde mit V1.3 gelöst.

Frage: Das Programm startet nicht, weil die Datei "OLEACC.DLL" fehlt (unter Win98).
Antwort: Diese Datei kann man sich z.B. im Internet herunterladen (richtiges Betriebssystem beachten!) und ins /windows/system-Verzeichnis kopieren.

6. Versionshistory:

V2.1 vom 28.04.2003:
- bei einer Farbtiefe von 16 Bit wird das Bitmap nun korrekt angezeigt
- bei einer Farbtiefe von 8 Bit wird auch ein Bitmap angezeigt, allerdings werden hier für die verschiedenen Höhenwerte die 256 Indexwerte der Windows-Farbpalette verwendet, in diesem Fall bietet also nur das gespeicherte Bitmap eine vernünftige Ansicht
V2.0 vom 18.03.2003:
- Dialogfeld "Einstellungen" wird beim Wechsel zu anderen Anwendungen ausgeblendet
- die Berechnung wurde in einen Worker-Thread ausgelagert
- das Bitmap muss zur Anzeige nicht mehr zwischengespeichert werden, sondern verbleibt im Speicher
- verschiedenen Farbskalen (Graustufen, topografisch, topografisch mit Wasser, Rot, Grün, Blau) stehen zur Auswahl
- die maximale Höhe und Breite wurde auf 32 vergrößert
- Zufallsgenerator wird jetzt nach Millisekunden (vorher Sekunden) initialisiert
V1.3 vom 22.02.2003:
- neue Höhenberechnung bei Erhöhung des Wasserspiegels, der eingestellte Höhenbereich wird jetzt komplett ausgenutzt
- mit Änderung der Größe wird die Anzahl der Schritte automatisch auf das Maximum gestellt
- die Anzeige der maximalen Schritte wird jetzt mit dem KillFocus()-Ereignis und nicht mehr mit dem Change()-Ereignis der Felder "Breite" und "Höhe" aktualisiert
- "Landschaft verändern" in "aktuelle Landschaft variieren" bzw. "übernehmen" umbenannt
V1.2 vom 14.02.2003:
- bei fehlendem Dateinamen wird keine Fehlermeldung ausgegeben, sondern gleich der "Speichern unter"-Dialog geöffnet
- es kann eine zur aktuellen Breite und Höhe passende config.bmp erstellt werden
- Dateiname wird auch in der Statusleiste angezeigt
V1.1 vom 13.02.2003:
- Dialog "Einstellungen" in Toolbox geändert und topmost-Attribut gesetzt
- Icon überarbeitet und in allen Bildtypen verfügbar gemacht
V1.0 vom 12.02.2003:
- erster Release

7. Download:

aktuelle Version:
RanDEM V2.1 vom 28.04.2003 (319.488 Bytes)

ältere Version:
RanDEM V1.3 vom 22.02.2003 (311.296 Bytes)