Landscape Heightmaps erstellen

Grafik, Musik, Sound, Spieledesign, Spielmechanik, Story Writing und sonstiger kreativer Kram, der nichts mit Programmieren zu tun hat.
Antworten
Benutzeravatar
Jonathan
Establishment
Beiträge: 2574
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Landscape Heightmaps erstellen

Beitrag 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...
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
joeydee
Establishment
Beiträge: 1165
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: Landscape Heightmaps erstellen

Beitrag 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.
Benutzeravatar
marcgfx
Establishment
Beiträge: 2126
Registriert: 18.10.2010, 23:26

Re: Landscape Heightmaps erstellen

Beitrag 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
scheichs
Establishment
Beiträge: 899
Registriert: 28.07.2010, 20:18

Re: Landscape Heightmaps erstellen

Beitrag 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.
Benutzeravatar
Jonathan
Establishment
Beiträge: 2574
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Landscape Heightmaps erstellen

Beitrag 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...
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Jonathan
Establishment
Beiträge: 2574
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Landscape Heightmaps erstellen

Beitrag 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.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
joeydee
Establishment
Beiträge: 1165
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: Landscape Heightmaps erstellen

Beitrag 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 ;)
Benutzeravatar
Jonathan
Establishment
Beiträge: 2574
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Landscape Heightmaps erstellen

Beitrag 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...
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Jonathan
Establishment
Beiträge: 2574
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Landscape Heightmaps erstellen

Beitrag von Jonathan »

Ich verlinke hier mal noch schnell folgendes Video, das einen sehr guten Eindruck macht:

https://www.youtube.com/watch?v=hUILySfQ3ic
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Jonathan
Establishment
Beiträge: 2574
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Landscape Heightmaps erstellen

Beitrag 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...
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Schrompf
Moderator
Beiträge: 5097
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: Landscape Heightmaps erstellen

Beitrag von Schrompf »

Das sieht echt viel besser aus.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Jonathan
Establishment
Beiträge: 2574
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Landscape Heightmaps erstellen

Beitrag 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.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
xq
Establishment
Beiträge: 1590
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: Landscape Heightmaps erstellen

Beitrag 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
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Programmiert viel in ⚡️Zig⚡️ und nervt Leute damit.
Benutzeravatar
joeydee
Establishment
Beiträge: 1165
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: Landscape Heightmaps erstellen

Beitrag von joeydee »

Mir ist gerade noch Gaea von quadspinner über den Weg gelaufen. Hab nur kurz ins Programm geschaut, machte auf mich zwar einen brauchbaren Eindruck, ist aber leider auch schon gecrasht. Trotzdem vielleicht wert, das weiter im Auge zu behalten.
Community-Version (Evaluation, Non-Commercial) ist frei, Indie-Version wäre einmalig 99,-
Ist Node-based, d.h. man kann auch sehr viel händisch lokal Einfluss nehmen (z.B. Masken importieren oder malen).
Ein paar Striche und Erosion:
gaea_test.png
Man kann einzelne Nodes für Export markieren, und bei einem Build werden dann alle Files exportiert.
Kann auch sowas wie PNG64, float Raw etc.
Benutzeravatar
Jonathan
Establishment
Beiträge: 2574
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Landscape Heightmaps erstellen

Beitrag von Jonathan »

joeydee hat geschrieben: 04.12.2024, 09:01 Mir ist gerade noch Gaea von quadspinner über den Weg gelaufen. Hab nur kurz ins Programm geschaut, machte auf mich zwar einen brauchbaren Eindruck, ist aber leider auch schon gecrasht. Trotzdem vielleicht wert, das weiter im Auge zu behalten.
Jap, danke für den Hinweis. Das mit den Masken importieren / malen klingt ansich genau richtig. Man hat semantische Eingaben ("Hier ist Baubereich, das sollte flach sein; hier sind Berge, die sollen einfach nur hübsch aussehen und sind eh komplett Hindernis; ungefähr hier ist ein Fluss, aber der kann ruhig etwas schlengeln um natürlicher zu wirken") und bekommt darauf dann sinnvolle und ansehnliche Ergebnisse. Wenn man sich damit Arbeitszeit spart, sind es die 100 € auch locker wert.

Mal schauen. Aktuell gibt es beim Landvogt andere Baustellen. Ich mag auch meine Blenderpipeline gerade, aus ganz einfachen Gründen: Ich habe ein Programm für alles, ich kann alles mit einem Klick exportieren und im Spiel laden, Blender wird auch in vielen Jahren noch supported werden und selbst wenn sich etwas ändert, werde ich noch viele Jahre lang problemlos die alten Versionen runterladen und verwenden können. Keine Lizenzserver, keine Zwangsupdates, und ich könnte sogar auf Linux oder Mac wechseln. Für die sehr langsame Hobbyentwicklung sind das ziemlich gewichtige Vorteile. Ich kann mir beliebig Zeit lassen und niemand macht mir was kaputt.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Antworten