Überblick

Perlin-Noise Beispiel In meiner Studienzeit hatte ich mal im Rahmen einer Gruppenpräsentation eine kleine Demo für Perlin-Noise geschrieben und die soll hiermit hust mal der Nachwelt zu Gute kommen. An sich ist die Demo nichts Tolles, aber sie gibt einen ganz guten Einblick, wie die Ergbenisse bei Perlin-Noise zu Stande kommen (Und sie demonstirert auch eine unglaublich langsame Implementierung von Perlin-Noise). Außerdem kann man den generierten Perlin-Noise auch als Bitmap abspeichern, womit die Demo also auch etwas Nützliches auswirft.

Perlin-Noise

Terrain mit Perlin-Noise Mit Perlin-Noise kann das Aussehen vieler komplexer Naturphänomene auf überraschend einfache Weise simuliert werden. Dazu zählen zum Beispiel Oberflächenstrukturen (siehe oben), Rauch, die Form von Gebirgszügen (siehe links) oder ganze Planetenoberflächen. Das Verfahren an sich wurde in den 80ern von Ken Perlin entwickelt und ist recht einfach, zu implementieren. Es ist wirklich erstaunlich, wie viele Effekte sich mit so wenig Code umsetzen lassen.

Perlin-Noise funktioniert so, dass mehrere Frequenzbänder, die zuäflliges Rauschen in einer bestimmten Frequenz enthalten, über einander gelegt werden. Ein einzelnes Frequenzband lässt sich für Perlin-Noise im 2D-Fall als Bildebene vorstellen, die ein zufälliges Rauschen enthält. Das erste Freuqnzband (also die erste Ebene) enthält ein Rauschen mit einer sehr niedrigen Frquenz, d.h. das Rauschen wirkt weichgespült. Für jedes weitere Frequenzband wird dann die Frequenz um einen gewissen Faktor (meist 2) multipliziert, so dass von Frequenzband zu Frequenzband das Rauschen hochfrquenter wird. Durch Überlagerung mehrerer Frequenzbilder entsteht dann der typische Perlin-Noise (siehe rechts).

Bedienung der Demo

Perlin-Noise-Demo

Die Bedienung der Demo sollte nicht weiter schwierig sein. Einfach an den Reglern herumspielen und nach kurzer Wartezeit sollte links der fertige Perlin-Noise zu sehen sein. Es gibt ein paar Einstellungen, die den Perlin-Nosie beeinflussen, die an dieser Stelle mal kruz erläutert werden sollen:

  • Anzahl Frequenzbänder: Damit kann die Anzahl der Frequenzbänder eingestellt werden. Je mehr Frequenzbänder verwendet werden, desto schärfer wird der resultierende Perlin-Noise erscheinen.
  • Frequenzfaktor: Damit wird der Faktor bestimmt, um den sich die Frequenzbänder unterscheiden. Je höher dieser Faktor, desto größer ist der Unterschied im Schärfeeindruck zwischen den einzelnen Frequenzbändern.
  • Persistenz: Die Persistenz bestimmt die Wichtung der einzelnen Frequenzbänder. Große Werte betonnen hohe Frequenzen, kleinere Werte betonen niedrigere Frequenzen.
  • Seed: Dies dient nur zur Initialisierung des Zufallsgenerator, der das Rauschen für die einzelnen Frequenzbänder erzeugt. Durch andere Seed-Werte kann man neuen Perlin-Noise erzeugen.
  • Kurve: Damit kann man sich den Querschnitt in der Mitte Perlin-Noise als Höhenkurve liefern lassen.
  • Cosinus Interpolation: Wenn eingeschaltet, wird zwischen einzelnen Samples auf einem Frequenzband weicher interpoliert.
  • Frequenzband glätten: Wenn eingeschaltet, wird für alle Samples von Frequenzbändern der Durchschnitt aus den direkten Nachbarn gebildet. Damit erscheint der Perlin-Noise weicher, aber auch kontrastärmer.
  • Bild strecken: Wenn eingeschaltet, wird das Bild auf die Fenstergröße gestreckt, was nützllich zum Präsentieren ist :-).

Download

  1. PerlinNoise.zip (235.82kB): Perlin-Noise-Demo, 51 Download(s)
  2. PerlinMaterial.zip (87.13kB): Blender-Beispiel mit Perlin-Noise-basiertem Material, 40 Download(s)
  3. PerlinTerrain.zip (35.22kB): Blender-Beispiel mit Perlin-Noise-basiertem Terrain, 55 Download(s)