Was sind die bekannten Algorithmen, um einen Planeten mit einem unterirdischen Höhlennetzwerk zu erschaffen?

Ich kenne ein paar Algorithmen, um eine Höhenkarte für einen Planeten zu erstellen, aber die meisten von ihnen berücksichtigen nicht die unterirdischen Aspekte des Planeten (Höhlen, Tunnel, ...).

Gibt es Algorithmen, die sich darum kümmern? Werden sie nur verwendet, nachdem eine erste Höhenkarte erstellt wurde, oder könnten sie gemeinsam verwendet werden, um ein Höhlen-/Tunnelnetzwerk effizienter zu erstellen?

Alle Hinweise auf Algorithmenbeschreibungen, Umfragen oder Arbeitsbibliotheken sind willkommen!

Basieren Höhlen nicht auf unterirdischen Flüssen und schwachem Gestein, wo Wasser das Gestein abträgt? Es gäbe also nicht wirklich einen Algorithmus.
Nicht nur, dass einige Höhlen durch tektonische Bewegungen entstanden sind ... Aber es geht mir nicht wirklich darum, so realistisch wie möglich zu sein. Ich würde gerne wissen, welche Methoden es gibt (also ist Erosion eine, wie Sie vorgeschlagen haben).
Gut, dass ich keine Antwort gepostet habe. Ich gehe manchmal zu schnell. Immer gut zu lernen!
Wie Sie bemerkt haben, gibt es verschiedene Arten von Formationstypen, und die Merkmale von jedem variieren je nach Art des Gesteins, in dem sie geschaffen wurden. Ich bezweifle, dass Sie einen Algorithmus finden werden, der es schafft, all dies auf einem planetenweiten Maßstab zu erfassen .
Tatsächlich kenne ich keinen Algorithmus, der den Untergrund übernimmt ... Also, meine Frage soll nicht einmal realistisch sein, ich würde gerne einen Algorithmus kennen, der den Planeten schnitzt und ein Höhlen- und Tunnelnetzwerk baut und wie Sie machen es. Selbst wenn wir uns auf durch Erosion geschnitzte Höhlen konzentrieren, verstehe ich nicht ganz, wie man solche Höhlen/Tunnel unterirdisch baut und welchen Algorithmus man verwenden soll.
Diese Antwort auf den Stapelüberlauf kann als Ausgangspunkt für jemanden nützlich sein, der eine Antwort schreiben möchte, als Ausgangspunkt für Recherchen.
Minecraft tut dies offensichtlich, obwohl die Ergebnisse nicht auf der Simulation der Höhlenerstellung basieren und nicht immer realistisch sind.
Dwarf Fortress (erhältlich für Linux, Windows und Mac) erstellt in jedem neuen Spiel drei Höhlenebenen. Code ist jedoch nicht verfügbar.

Antworten (2)

Diese Art von Dingen kann sehr leicht "gefälscht" werden, es besteht keine Notwendigkeit, die Welt und Erosion zu simulieren, da Sie sich mehr darum kümmern, dass die Dinge gut aussehen.

Hier ist ein einfaches Beispiel: http://hub.jmonkeyengine.org/forum/topic/how-to-approach-random-cubic-cave-generation/

Grundalgorithmus:

  • Beginnen Sie mit einem zufälligen Punkt und einem zufälligen Radius unter Verwendung eines Skalierungsfaktors.
  • Berechnen Sie eine zufällige Anzahl von Zweigen mit einer zufälligen Länge und zufälligen Breite basierend auf dem Skalierungsfaktor
  • Erstellen Sie Punkte am Ende dieser Zweige mit zufälliger Größe und Skalierungsfaktor basierend auf dem lokalen Skalierungsfaktor
  • Rekurs auf eine maximale Tiefe

Hier gibt es einen langen und sehr informativen GPU-Gems-Artikel, in dem es um die prozedurale Terrain-Generierung geht:

http://http.developer.nvidia.com/GPUGems3/gpugems3_ch01.html

Die Details sind zu lang, um in diese Antwort hineingezogen zu werden, aber die Grundidee ist, dass sie verschiedene Rauschfunktionen kombiniert, um dynamisch und prozedural Gelände wie dieses zu generieren:

Beispiel 1 Beispiel 2

Äußerst interessante Technik (die mir nicht bewusst war!). Danke für das Teilen !

Möglicherweise können Sie einen zellulären Automaten verwenden, um die Höhlenbildung zu simulieren, nicht im einfachen Sinne von Conways Spiel des Lebens, sondern indem Sie den Automaten so programmieren, dass er Erde mit unterschiedlichen Dichten simuliert, die zufällig in einem 2D- oder 3D-Gitter angeordnet sind, flüssig, was könnte sei Wasser oder Magma und Luft.

Durch die richtige Einstellung der Regeln würde Wasser in zufälligen Abständen und Bereichen von oben kommen und die Erde erodieren, jede Zelle schwächen, bis sie verschwand, oder es könnte Steinablagerung in leeren Räumen (Stalaktiten und Stalagmiten) verursachen. Wenn Sie eine 3D-Simulation hätten, könnten Sie auch die Schwerkraft hinzufügen, was erfordert, dass sich das Wasser immer horizontal oder bergab bewegt, es sei denn, die Fließgeschwindigkeit wurde irgendwann eingeschränkt (an diesem Punkt könnte es stromaufwärts der Blockade steigen) oder es wurde ausreichend heiß .

Die Schwerkraft könnte auch verwendet werden, um Einstürze zu bestimmen - wenn nicht ausreichend starke Erde aufgefordert wird, eine zu große Entfernung ohne Unterstützung zu überbrücken, würde sie einstürzen.

Magma würde von unten kommen, ausgehend von einem Hot Spot, dessen Intensität und Position der maximalen Hitze im Laufe der Zeit variieren kann, und Magma könnte sich zu hartem Gestein verfestigen oder wieder abklingen, um Hohlräume zu hinterlassen (abhängig von der Art des Hot Spots und / oder zufällige Faktoren), und es würde auch Wasser erhitzen, wodurch es aufsteigt.

Dies wäre nicht unbedingt schnell zu programmieren und nicht besonders schnell auszuführen, aber richtig ausgeführt, könnte es zu sehr realistischen Ergebnissen führen.