Seite 1 von 1

Landscape Heightmaps erstellen

Verfasst: 09.08.2024, 14:48
von Jonathan
Moin,

was sind die besten Tools / Techniken für Heightmaps?

Ich wollte ein paar Landschaften basteln und musste erschreckt feststellen wie unfassbar undankbar das Thema ist. Weil es unglaublich viel nutzlose Informationen dazu im Internet gibt. Man wird förmlich von Quatsch erschlagen.

Fürs erste will ich neue Maps für den Landvogt basteln. Ich will also ein paar Flüsse und Berge platzieren, und dann für meine Karte nutzen. Es gibt den Sculpt-Modus, der das prinzipiell kann, aber das sieht erstmal hässlich aus. Es gibt auch eine Millionen Heightmap-Generatoren, aber alles was ich bisher gesehen habe, gibt dir ein paar Parameter und erstellt dann was zufälliges. Was in meinem Fall komplett nutzlos ist. Ich brauche viel eher etwas wie "refinement", d.h. ich male / baue eine hässliche Landschaft und drücke dann auf einen Knopf und sie soll gut aussehen.

Das klingt nach hohen Anforderungen, aber ich glaube nicht, dass das unrealistisch ist: Schließlich gibt es hunderte prozedurale Modelle, die Dinge wie Sediment-Transport etc. simulieren. Aber von den millionen Tutorials erklärt dir die eine Hälfte, wie man dank displacement Modifier aus einer Heightmap (aus dem Internet heruntergeladen) durch Magie aus einer Plane ein Gebirge machen kann (ja, das ist cool und lustig, aber sorry, das kenn ich halt schon, das interessiert mich nicht), und die andere Hälfte klickt mit irgendwelchen Generatoren herum. Das Ergebnis sind immer geil aus, schön gerendert und alles, aber ich brauche halt Kontrolle. Ich will ja Level bauen, nicht Bilder rendern.

Ich benutze für sonst alles in der Regel Blender, das würde ich also bevorzugen. Irgendwelche Ideen, was da der beste Workflow ist? Bonuspunkte, wenn man iterativ verfeinern und später auch nochmal Dinge ändern kann...

Re: Landscape Heightmaps erstellen

Verfasst: 09.08.2024, 22:07
von joeydee
Wenn ich es mit Blender bauen wollte, da gibts doch sicher auch gute Terrain-Plugins wo man gute Kontrolle hat, oder? Nur Vermutung, aber eigentlich gibts da doch für fast alles qualitativ gute Addons. Aber hast du sicher längst gesucht, in dem Fall streich das.

Wenn ich selbst simulieren wollte: Papers über Erosion etc. suchen, keine Tutorials.
Aber hier warst du auch mal in einem Thread dazu aktiv. Also hast du die Idee vermutlich selbst schon verworfen, der Tipp wahrscheinlich auch wenig wert.

Wenn ich irgendwas selbst entwickeln wollte, auch für evtl. Ingame-Editoren, würde ich wahrscheinlich auf eine Art Baukastensystem setzen, wo man neben simplem rise/lower vor allem vorberechnete Assets wie z.B. Klippenstücke frei positionieren kann, die sich dann in die Landschaft blenden. Ich denke da nicht an 3D-Assets, mehr nur an 2D-Brushes mit weichem Rand die man in ein Heightfield stempelt. Mit etwas geschickter Messauswertung in welcher Grundhöhe man gerade platziert.
Oder halt echt ein grobes 3D-Baukastensystem wo man Felsbrocken verteilen/stapeln kann, und dann live die Heightmap topdown berechnen und darstellen.
Beides könnte man dann auch gut nondestruktiv aufbauen, Asset-Brushes zufällig ändern, Post-Filter drüberlegen, Flüsse und Erosion nachträglich aufrechnen usw.
Aber klar, Problem eher nur verschoben: Wie generiert man gute Asset-Brushes, und wie berechnet man Flüsse und Erosion? Also wahrscheinlich ist der Gedanke für dich auch nicht viel wert.

Nicht ganz ernst gemeint weil ich nich wüsste wo man die Ressourcen herbekäme, aber ein custom Stable Diffusion Modell mit vielen Heightmaps trainieren, und dann per Image-to-Image dein Refinement einer groben Vorzeichnung vornehmen, das könnte grundsätzlich auch funktionieren für die reine Landschaft; Flüsse müssten dann aber sicher nochmal auf Logik korrigiert werden.

Trotzdem, das wären vermutlich die Punkte wo ich ansetzen würde, aber wahrscheinlich sind das gar keine neuen Ansätze für dich.

Re: Landscape Heightmaps erstellen

Verfasst: 10.08.2024, 10:19
von marcgfx
for langer langer Zeit habe ich ein Tool namens KPT Bryce benutzt, darin konnte man Heightmaps zeichnen und Erosion anwenden. Vermutlicht ist es das?
https://www.daz3d.com/bryce-7-pro

Re: Landscape Heightmaps erstellen

Verfasst: 10.08.2024, 15:17
von scheichs
Ah ja schön Bryce... war mit (Amiga) Reflections eins der ersten ernsthaften 3D Tools für mich. Damals im Spanienurlaub auf nem PC-Mag als Vollversion dabei gewesen. Da konnte man wirklich tolle Sachen damit machen.

Was glaub ich ganz praktikabel ist ist https://www.world-machine.com/

Heightmap per Bitmap-Node reingezogen und dann einfach paar Modifkationsnodes (z.B. Noise, Erosion) dranhängen.

Re: Landscape Heightmaps erstellen

Verfasst: 11.08.2024, 17:07
von Jonathan
Ich habe ein bisschen weiter gesucht und folgendes, sehr gut wirkendes Blender-Addon gefunden:

https://lancephan.gumroad.com/l/worldblender

Im Wesentlichen sind das ein paar Geometry Nodes, die auf alle Mögliche Arten kombiniert werden können und realistische Terrains zu erzeugen. Die meisten Features gibt es allerdings bloß in der Pro-Version, inklusive der Möglichkeit, eigene Meshs zu importieren. Damit könnte man vermutlich recht leicht die grobe Landschaft sculpten, dann ein wenig Noise drauf packen und ein paar Runden Erosion simulieren. Man kann wohl auch Kurven verwenden um z.B. Flüsse zu ziehen. Insgesamt ziemlich nah an dem was ich will, aber 50$ sind mir eigentlich gerade ein bisschen viel um mal 2 Heightmaps zu basteln und danach wieder mit etwas anderem weiter zu machen. Ich schau mal weiter und überlege nochmal...

Re: Landscape Heightmaps erstellen

Verfasst: 11.08.2024, 22:24
von Jonathan
Folgendes Addon gibt es auch noch:

https://github.com/ozikazina/Hydra

Das macht nur den Erosion-Teil, aber das ist vermutlich auch das wichtigste. Ein bisschen Noise etc. auf das Terrain packen kriege ich im Zweifelsfalle auch selber mit ein paar Geometry-Nodes hin. Leider hab ich die Installation des Addons noch nicht hinbekommen, aber die letzte Version ist nicht sehr alt, vielleicht gibts ja Support oder sogar neue Versionen in der Zukunft.

Re: Landscape Heightmaps erstellen

Verfasst: 12.08.2024, 12:07
von joeydee
Das macht nur den Erosion-Teil, aber das ist vermutlich auch das wichtigste
Denke auch, und den Gestaltungs-Teil dürftest du leicht selbst hinbekommen. Im Video des ersten Tools meine ich sogar genau die Methode zu sehen die ich beschrieben habe: https://youtu.be/OCdP8-1Pa6I?t=53

Das hier sieht mir danach aus, was ich mit grober Positionierung einiger 3D-"Felsen" (hier einfach Lowpoly-Klötze) beschrieben hatte. Ob nun automatisch per Geometry-Nodes oder manuell zur freien Gestaltung ist bei dieser geringen Menge ja egal.
terrain01.png
Das sieht mir nach einem Heightfield aus, welches aus der der Draufsicht-Depthmap dieser Klötze generiert worden sein dürfte, mit ein wenig Noise.
terrain02.png
Und am Ende Erosionsfilter u.a.
terrain03.png
Also Workflow für Punkt 1 und 2 einfach selbst machen, und dann das 2. Tool einsetzen.

Und ähnliches geht theoretisch auch nur 2D-based, wenn man nicht Klötze in 3D, sondern kleinere Heightfield-Brushes ebensolcher in eine Heightmap blendet. Wobei man beim Blenden bereits weiche Übergänge, sowie neben den Blendmodi Max oder Add auch andere wie Subtrahieren oder Differenz uvm. einsetzen kann.
Hatte mit sowas mal in Photoshop experimentiert, und wollte irgendwann(TM) mal ein eigenes Tool dazu basteln. Wie so vieles ;)

Re: Landscape Heightmaps erstellen

Verfasst: 17.08.2024, 15:00
von Jonathan
Hab jetzt Hydra ans Laufen gekriegt. Positiv ist, dass man tatsächlich mit 2 Klicks schon Ergebnisse bekommt. Man wählt ein Mesh aus, setzt die Parameter und das Ergebnis wird non-destructive in einem Modifier gespeichert. Negativ ist, nun, ich mag die Ergebnisse nicht so wirklich, und so lange ich auch mit den Parametern rumspiele, es wird einfach nicht wirklich besser:

Eingabe:
Das habe ich so in Blender geknetet.
2024-08-17_15-47-09_%pn.png
Erosion:
Nach der Simulation sind absolut überall Falten. Beim großen Berg sieht das ganz gut aus, bei den Hügeln aber eher nicht.
2024-08-17_15-46-58_blender.png
Schnee / Geröll Ablagerungen:
Das Geröll glättet die Hänge etwas, das funktioniert bloß leider nur gut an den steilen / großen Bergen. Die Hügel sind immer noch zu faltig.
2024-08-17_15-50-23_%pn.png


Was ich wohl eigentlich stattdessen gerne hätte: Ich setze irgendwo einen Blob hin und durch die Simulation wird der kantiger und eckiger und sieht bergiger aus. Halt irgendetwas, das realistische Details hinzufügt. Denn die Knetpinsel (ich übersetze btw. ab jetzt sculpting mit kneten ;) ) haben ja erstmal recht wenig Details, was ok ist, weil ich das "Leveldesigner" ja nur abstrakt festlegen will, wo Berge sind und wie groß diese sind. Die Details sind dann nur fürs schöne Aussehen.

Ganz so automatisch schein ich es mit Gratis-Addons dann wohl doch nicht hinzubekommen. Aber ok, es gibt auch Knetpinsel mit mehr Details (Schuppen, Kratzer, etc.) mit ein wenig Suchen finde ich da bestimmt gute für Terrain, und statt Details dann vollautomatisch zu generieren könnte ich sie dann relativ zügig von Hand drüber pinseln. Mal schauen...

Re: Landscape Heightmaps erstellen

Verfasst: 17.08.2024, 17:51
von Jonathan
Ich verlinke hier mal noch schnell folgendes Video, das einen sehr guten Eindruck macht:

https://www.youtube.com/watch?v=hUILySfQ3ic

Re: Landscape Heightmaps erstellen

Verfasst: 17.08.2024, 18:59
von Jonathan
Ich hab noch was neues, sehr nettes ausprobiert: Ein Node-Setup dass automatisch passende Details / Noise erstellt:

Vorher / Nachher
2024-08-17_19-40-05_%pn.png
2024-08-17_19-39-55_blender.png

Die Idee ist, per Geometry Nodes einen Displacement Modifier zu bauen, der sich je nach Eingabehöhe des Vertex anders verhält. Man nimmt also das Mesh, splitted es in XYZ und verschiebt die Z-Koordinate indem man Noise-Funktionen addiert, die von der Z-Koordinate abhängen.

Das Setup dazu sieht so aus:
2024-08-17_19-46-23_blender.png
Und hier einer der zwei Noise Nodes (Die Idee ist bei beiden gleich):
2024-08-17_19-47-20_blender.png
Unten werden zunächst 2 Noise-Texturen mit unterschiedlicher Frequenz addiert. So kriegt man die scharfen, großen Spitzen und überall dazwischen die kleinen Bobbel. Das Ergebnis wird mit einem Faktor multipliziert, der oben berechnet wird, im wesentlichen also eine Kurve die von der Z-Koordinate abhängt.

Das jetzt nur mal ein schneller Test, mit ein bisschen mehr Arbeit kann man sicherlich für die verschiedenen Höhenstufen noch viel bessere Displacement-Texturen generieren. Insgesamt bin ich aber schon ziemlich zufrieden, wenn man bedenkt wie schnell die grobe Position der Berge im Knet-Modus hingepinselt war. Und ehrlich gesagt gefällt mir das Ergebnis jetzt schon besser als dieses durselige Erosion-Addon, bei dem jede Landschaft aussieht wie meine ungefaltete Bettdecke...

Re: Landscape Heightmaps erstellen

Verfasst: 18.08.2024, 11:02
von Schrompf
Das sieht echt viel besser aus.

Re: Landscape Heightmaps erstellen

Verfasst: 19.08.2024, 19:43
von Jonathan
Danke :)

Ich habe die Datei ein bisschen erweitert und mit nützlichen Features versorgt. Es werden Material-Maps generiert, d.h. an Steigungen wird eine Stein-Textur genommen, im Flachen Gras oder, basierend auf einer Wolken-Textur, Erde. Die 3 Gewichte werden dann als RGB map exportiert. Zusätzlich wird die Heightmap als exr gespeichert und die Normalmap als normale png. All diese Materialien basieren auf dem Terrain-Mesh, d.h. beim Kneten ändert sich die Geometrie und damit auch alle Maps die per Script bequem durch einen einzelnen Knopfdruck rausgeschrieben werden können. Wenn das Spiel dann noch einen Button hat um das Terrain neu zu laden kann man so in Blender die Landschaft editieren, im Hintergrund das Spiel laufen lassen und mit 2 Klicks und ein paar Sekunden warten die aktuelle Version ins Spiel laden.

Ich muss das noch ein wenig aufräumen und in eine Datei packen, die keine 100 MB hat, dann lad ich es mal als Beispiel die nächsten Tage hier hoch. Ist ja vielleicht / hoffentlich für den ein oder anderen nützlich.

Re: Landscape Heightmaps erstellen

Verfasst: 19.08.2024, 21:09
von xq
Leider ist das Cert invalid, aber für mich war eines der geilsten Tools in der Richtung L3DT: https://www.bundysoft.com/docs/doku.php?id=l3dt:about

Das Tool kann zwischen "fully random generated" und "fully hand worked" ziemlich alles. Es gibt eine "Detail Map", welche Properties enthält (höhe, wassergehalt, salzgehalt, wasserstand, ...) und daraus dann maps generiert. Das Tool exportiert auch literally jede Information die man über die Landschaft jemals wissen wollte