Ich versuche gerade, mit 3D Simplex Noise ein Minecraft-ähnliches Voxel-Terrain zu generieren und möchte auch Höhlen implementieren.
Ich habe die Methode von Perlin Worms in diesem Thread gefunden, die wirklich schöne Ergebnisse generiert. Ich habe jedoch keine Ahnung, wie ich es Stück für Stück generieren soll. Ist dies möglich oder gibt es Alternativen, die Stück für Stück einen ähnlichen Wurm wie eine Höhle produzieren?
Bearbeiten: Dies ist das Problem, das ich nicht lösen kann.
Bearbeiten2: Dies ist das Ergebnis der Kombination von 2D Ridged Multifractal Noise mit einer Simplex Noise-Höhenkarte. Muss noch angepasst werden, aber das ist so ziemlich das Ergebnis, das ich wollte. Vielen Dank an Byte56.
terrain
minecraft-modding
voxels
perlin-noise
user000user
quelle
quelle
Antworten:
Mit den meisten Perlin-Rauschalgorithmen können Sie den Rauschwert an einem bestimmten Ort mit so etwas wie abrufen
noise(x,y,z)
. Dies macht es ziemlich trivial, Rauschen Stück für Stück zu erzeugen. Alles, was Sie tun müssen, ist die globale Position anstelle der Blockposition zu übergeben.Sie sehen also, wir generieren Terrain für den Chunk, indem wir über die Chunk-Grenzen iterieren und prüfen, ob diese globale Position solide ist oder nicht. Dies ist wahrscheinlich dieselbe Methode, mit der Sie das Gelände im Allgemeinen generieren.
perlinNoise.get
nimmt eine globale Position ein und gibt ihre Dichte zurück. WoisSolid
wäre nur ein einfacher Test, um zu sehen, ob das Voxel "dicht genug" ist, um sich für fest zu qualifizieren.perlinNoise.get
kann komplexer sein als nur ein einfacher Rauschalgorithmus. Sie können Überprüfungen basierend auf der Tiefe des Voxels in Ihrer Welt durchführen lassen. Befindet sich das Voxel beispielsweise unter dem von Ihnen festgelegten "absoluten Grundbodenniveau", kann es mithilfe des Perlin-Würmer-Algorithmus eine Dichte zurückgeben. Wenn es über der absoluten Basis liegt, kann eine normale Dichtefunktion verwendet werden abwechslungsreicheres Gelände. Ich würde jedoch eine Mischung zwischen den beiden empfehlen.Das Kombinieren verschiedener Perlin-Rauschfunktionen ist nur etwas, mit dem Sie spielen und sehen müssen, was funktioniert. Am besten richten Sie Ihre Umgebung so ein, dass Sie nur einige Werte ändern und das Gelände im laufenden Betrieb austauschen können, ohne Ihr Spiel neu laden zu müssen. Viel Spaß beim Experimentieren.
quelle
Ich denke, so funktioniert es in Minecraft. Jeder Wurm hat eine maximale Länge (nennen wir es
M
). Die Köpfe jedes Wurms werden basierend auf der Blockposition berechnet. Wenn Sie jeden Block rendern, müssen Sie alle Blöcke innerhalb einesM
Radius überprüfen und allen Würmern folgen. Es ist nicht ideal in Bezug auf die Leistung, aber es funktioniert.quelle