Prozeduraler Rock-Algorithmus

7

Ich möchte einige prozedurale Low-Poly-Steine ​​und Felsbrocken für ein Spiel erstellen.

Hier ist ein Beispiel dafür, was ich erreichen möchte

Ich habe im Internet außer 3D-Softwareartikeln nicht viele interessante Informationen gefunden. Ich bin mir nicht sicher, welchen Weg ich gehen soll.

dotminic
quelle
1
Wie @jackmott vorgeschlagen hat, könnten Sie eine Kugel verwenden. Ich würde aber auch vorschlagen, eine zufällige Höhenkarte auf der Kugel zu verwenden. Sie können eine "Beispiel" -Kartenhöhe erstellen und von dort aus zufällig auswählen.
Andrew Wilson
1
Sie sollten auf jeden Fall eine brillante Website des prozeduralen Genies Inigo Quilez besuchen: iquilezles.org . Siehe auch seine shadertoy.com .
Qbic
1
Die par_shapes.hEinzeldateibibliothek von Philip Rideout für parametrische Netze verfügt über einen rockGenerierungsalgorithmus, der auf Simplex-Rauschen basiert. Möglicherweise können Sie sich von der Implementierung inspirieren lassen.
Lars Viklund

Antworten:

4

Ein Ansatz könnte darin bestehen, mit einer Kugel zu beginnen, vielleicht einige zufällige Parameter auszuwählen, um sie in unterschiedlichen Mengen zu dehnen, sodass einige Felsen ungefähr rund sind, während andere ungefähr eiförmig sind, und dann 3D-Perlin- oder Simplex-Rauschen und seine fraktalen Varianten zu verwenden (siehe die fbm-Methoden) in der Verknüpfung), um Scheitelpunkte in Richtung der Mitte zu drücken oder sie durch ein Vielfaches des Perlin-Rauschens herauszuziehen. Sie würden einfach die 3D-Koordinate jedes Scheitelpunkts an die 3D-Perlin-Rauschfunktion übergeben, einen Float im Bereich [0,1] zurückerhalten und damit den Scheitelpunkt drücken oder ziehen.

Wenn Sie mir mitteilen, mit welcher Umgebung / Sprache Sie arbeiten, kann ich näher darauf eingehen.

Jackmott
quelle
Ich benutze C ++ und Direct3D. Ich habe versucht, eine konvexe Punktwolkenhülle zu modifizieren, aber die Ergebnisse sind nicht sehr gut. Ich werde versuchen, was hier vorgeschlagen wurde, und von einer Kugel ausgehen.
Dotminic
Ich habe hier einen praktischen Perlin-Rauschcode in c ++: github.com/jackmott/FastNoise-SIMD. Wenn die Kugeln jedoch niedrig genug sind, ist es möglicherweise sinnvoller, nur einige zufällige Verschiebungen von Verticies vorzunehmen. Lärm zu verwenden wäre übertrieben.
Jackott
3

Wenn ich Steine ​​in Modellierungssoftware erstelle, beginne ich mit einem Icosaeder, strecke ihn dann herum, skaliere ihn auf eine Nite, dann wähle ich einfach zufällige Eckpunkte aus und ziehe sie ein wenig heraus. Ich nehme an, dasselbe kann mit Code gemacht werden

Bálint
quelle