2017-04-05 2 views
0

Ich habe Probleme, den besten Weg zu finden, einem Geländegenerator Realismus hinzuzufügen. An dieser Stelle habe ich eine Flutfüllung, die perfekt funktioniert, aber wenn ich irgendeine Art von Realismus hinzufügen möchte, muss ich Höhenvariablen hinzufügen. Ich habe die folgenden Verfahren gesehen versucht Height zu machen:Terrain-Generierung mit realistischer Höhenkarte

Im Moment habe ich Platten durch meine Flußfüllen bin Erzeugung Aber ich bin mir nicht sicher, wohin ich von dort aus gehen soll.

Ich bin nicht sicher über die Verwendung einer Rauschfunktion nur aufgrund der Tatsache, dass ich Biome innerhalb eines Kontinents erzeugen müsste, um es realistisch aussehen zu lassen (Ein Kontinent mit nur Bergen wäre unrealistisch). Der Diamantquadratalgorithmus wird wahrscheinlich nicht für meine Bedürfnisse funktionieren, da ich bei der Größenanpassung flexibel sein möchte.

Was ist meine beste Option zum Generieren einer Höhenkarte, wenn ich quadratische Kacheln habe, um etwas Realismus zu geben, nicht sehr ressourcenintensiv, und den Code behalten, den ich habe? Hier

ist ein Bild von der Erzeugung und die Erzeugung Code ist im Github-Projekt: https://github.com/Hunterb9101/TileWorkspace/blob/59fe1f28f019d7128c970772d1ef6bd30d63072c/Generation.png

Antwort

0

TLDR: Ich würde ein Perlin Noise Generation mit einigen auf Biome gehefteten verwenden.

Diese article/tutorial geht über Code-Snippets und ihre Implementierungsmethoden. Das Vorschlagen des besten Algorithmus für Ihre Aufgabe hängt vollständig von Ihrer Fähigkeit und Endergebniszielen ab.

jedoch eine kurze Beschreibung der Perlin Noise und es mit realistischen Zielen im Auge mit ...

Wie bei den meisten Geländen Generation, sind Lärm Funktionen Ihr Freund - Perlin und/oder Rauschen insbesondere simplex. Ich habe einige planetare Terrain-Generierungsalgorithmen implementiert und obwohl sie in 2d sind, könnte die resultierende Höhen-/"Textur" -Karte relativ einfach auf eine Kugel projiziert werden . Ich nehme an, Konvertierung in Hex-Format ist kein Problem entweder.

Meine Technik hat mehrere Rauschschichten, z. Temperatur und Luftfeuchtigkeit. Die Temperatur wird mit einer Breitenkoordinate in fusioniert, um den Äquator heißer und die Pole kalt zu machen, während das Rauschen dafür sorgt, dass es kein einfacher Gradient ist. Der endgültige Geländetyp ist ausgewählt durch Regeln wie "wenn heiß und nicht feucht, dann Wüste wählen". Sie kann meine JavaScript-Implementierung dieses hier sehen: https://github.com/tapio/infiniverse/blob/master/js/universe/planet-aerial.js

Wie für den Wasseranteil, können Sie einfach die Höhe Wasserstand anpassen als Rauschen Funktionen neigen dazu, einen konstanten Mittelwert haben. Eine andere Option ist die Anwendung eines Exponentenfilters (nützlich auch bei der Generierung von Clouds, siehe meine Implementierung hier).an diesem Punkt

Ein anderer Weg, sphärische Gelände zu erzeugen, die in dem Sinn kamen, ( hat nicht geprüft) ist 3D Rauschen zu verwenden, und es von einer Oberfläche einer Kugel abtasten, den resultierenden Wert als die Bodenhöhe verwendet wird. Sie können dann Gewicht entsprechend der Menge des Wassers auf Planeten und der Breitenkoordinate gewichten.

Ich werde mit einem Link zu einer praktischen Umsetzung von 3D-Planeten Gelände Generation Ende: http://libnoise.sourceforge.net/tutorials/tutorial8.html

Um jede beliebige Art des realistischen Geländes zu erzeugen Sie Lärm von einer Art verwenden, gehen zu müssen. In früheren Projekten habe ich selbst den Diamant-Quadrat-Algorithmus benutzt. Das war jedoch einfach Höhenmaps zu generieren.

Für etwas mehr Licht lesen würde ich this Artikel über realistische Geländetechniken überprüfen.

+0

Hallo, und danke für Ihre Hilfe, um mich zum Laufen zu bringen! Ich habe daran gearbeitet, eine Perlin-Rauschfunktion zu bauen (weil es einfacher zu implementieren als Simplex war), aber ich hatte einige Probleme damit. Ich werde das für eine andere Frage speichern, aber danke für Ihre Hilfe! – Nerd9101

Verwandte Themen