Graphic PIZiadas

Graphic PIZiadas

Meine Welt ist in..

Perlin Noise: Pseudorandom Funktionen für Gelände Generation

Die Erstellung von virtuellen Umgebungen erfordert die Modellierung von großen Datenmengen für die Bildung von Flächen, die verschiedene Szenarien neu. Die fraktale Natur unserer Welt ermöglicht die Verwendung von verschiedenen mathematischen Funktionen für die Automatisierung dieser Aufgaben. Bäume, Land, Wolken, Feuer usw.. sind mit vielen verschiedenen Techniken, die auf Selbstähnlichkeit gebaut, Base-Komplex Familien von Fraktalen. Die Funktionen, die die sogenannte "perlin Rauschen" erzeugt in diesen Fällen gelten.

Boote

Machen Sie eine Analyse der in einer Dimension angewendet Konzept, seine Verallgemeinerung auf zwei Dimensionen (Land) ist unmittelbar, und gibt keine erste didaktische Interesse.

Lärm Funktionen: "Noise-Funktionen (NF)"

Ein NF ist im Wesentlichen ein Pseudo-Zufallszahlengenerator hat die Eigenschaft, die die gleichen Wert an einem Eingang oder "Samen" bestimmt.
Jede Funktion, wie y = cos(x) immer den gleichen Wert von "y" für einen bestimmten Wert von "x".

Boote

Wenn wir diese Funktion nutzen, um ein geometrisches Modell zu generieren, wir wieder bekommen das gleiche Modell später den gleichen Variablen. Allerdings kann die Funktion nicht in der Darstellung eines Profils Dünen oder die Berge verwendet werden, weil es eine periodische Wiederholung hat, ein Muster, Natürlichkeit, die subtrahiert. Dünen der Wüste ähneln einander, sind aber nicht identisch.

Boote

Ein sich wiederholendes Muster bleibt ein glaubwürdiges Szenario. Ein Pseudo-Muster können ein Profil erstellen, wo man nicht identifizieren Wiederholungen.

Boote

Eine zufällige Funktion ist nicht steuerbar du nicht wiederherstellen können oder zurückzugewinnen vorherigen Werte, da jedes Mal unterschiedliche Werte zurückgeben.

Boote

A "Perlin-Funktion", um den Vorteil der zufälligen mischen (Lärm) mit der Steuerung der Funktion eines herkömmlichen. Weitere Zwischenwerte zwischen zwei angegebenen Werte erhalten werden, die Kontinuität daher diese Funktionen. Wenn wir erhöhen den Umfang der Darstellung Notwendigkeit, diese Zwischenpunkte zu erhalten, um die Auflösung der erzeugten Bilder halten. Wenn wir eine Darstellung auf unterschiedlichen Detailebenen LOD-Techniken, Diese Aspekte sind unter den wichtigsten.

Schließlich ist es erforderlich, die erhalten werden, um scharfe "Spitzen" und "Täler" in der Regel unerwünschte vermeiden Kurve zu glätten und sind im Allgemeinen unrealistisch.
Um Bilder auf verschiedenen Ebenen zu erhalten, ist notwendig, um die gleiche Auflösung mit neuen Punkte zu erhalten. Die Funktion muss diese Operation zu ermöglichen, um eine angemessene Qualität der Darstellung zu gewährleisten.

Boote

Jede Funktion "Perlin Noise" erzeugt verschiedene gewünschte Daten, die besser oder schlechter als die Erstellung von Modellen anpassen können. Dies ist ein Gebiet der Forschung derzeit eingehende Erforschung.
In [1] schlägt die Verwendung eines Generators von Zahlen psudoaleatorio, basierend auf der Verwendung von Primzahlen, , die eine Zahl im Bereich zurück [-1,1] für jede Integer-Wert zugeführt.

Funktion Lärm (32-Bit-Ganzzahl: x)

x = (x<<13) ^ X

Boote

Boote

Boote
Rückkehr ( 1.0 – ( (x * (x * x * A B) +C) &7fffffff) / 1073741824.0)Rauschende Funktion

Die Funktion "Noise"

Die ersten drei Zahlen sind Primzahlen. Sie können mit verschiedenen Werten experimentieren, um neue Kurven generieren. Die Verwendung der drei Variablen (A, B-C) wurde durch Expression Klarheit durchgeführt.

Der Code besteht aus zwei Hauptlinien.

First "schütteln" den Eingangswert in einer kontrollierten Art und Weise mit der Verschiebung der seine Bit-

x = (x<<13) ^ X

Um die Zahl in diesem Bereich erzeugen [-1,1] verwenden Sie den Wert von seinem oberen Ende (1) und subtrahieren einen Wert von [0,2].

Beziehen Sie den Wert auf subtrahieren wird durch die Bestimmung eines neuen Zwischenwert mit genannten Primzahlen durchgeführt.

x * ( x * x * A + B) + C

Die erzeugte Zahl muss positiv sein, so dass wir eine logische Maske anwenden, seine erste Bit auf Null zu bringen (positiv)

&7fffffff

Aufteilen des letzteren durch die maximale ganze Zahl einen Wert zu erhalten, zwischen null und eins, für sie durch MaxEntero / 2 = unterteilt ist 230

Oktaven

Um die endgültige Funktion die Funktion "Noise" mit anderen "ähnlich" zu komponieren fügt van dessen Frequenz verdoppelt sequentiell.

Die Frequenz der Kehrwert der Wellenlänge von F = 1 / L, da Begriff der Periodizität der Welle

Frequenz

Während die Amplitude gibt uns die Größe (unsere Wellenhöhe)

Boote

Jede dieser Funktionen Verdoppelung der vorherigen Frequenz, ähnlich wie bei der gleich Abstand zwischen zwei aufeinanderfolgenden Noten auf einem Klavier, als "Oktave".

Eine Funktion und ihre erste Oktave kann eine neue Funktion zu komponieren
Ein Pseudo-Zufallsfunktion und fügte seinem achten

Ein Pseudo-Zufallsfunktion und ihre Oktaven hinzugefügt
Sie können die Oberwellen der Funktion selbst hinzufügen oder eine Mischung aus ähnlichen Funktionen, Hinzufügen von mehr Vielfalt in der Schaffung von vielen Oktaven Kurvenfahrt einge schrittweise hinzufügen Detailmaßstab. Eine höhere Anzahl von Oktaven höhere Komplexität in der erhaltenen Kurve, ermöglicht, steilen Klippen simulieren.

1
2
3
4
5
6
7
8
9

Die Persistenz-Faktor gibt die Häufigkeit oder das Gewicht der Oberschwingungen, Hinzufügen eines Kontrollpunktes auf der Glätte der Kurve.

Persistenz hohe Mehrwerte größere Veränderung entlang der Kurve.

Indem der Wert der Persistenz, der Einfluss der Oktaven scharfen Formen erzeugen.

Für eine gegebene Frequenz eine einzelne Amplitude für jeden Wert von Persistenz, wir nennen “Amplitude jeder Frequenz”

Mandelbrot define el ruido, “Lärm”, als “Hochfrequenz geringer Persistenz”

Der Berechnungsprozess wird in mehreren Stufen.

Zuerst bestimmen wir die erzeugende Funktion von Lärm, Wie bereits erläutert:

Zwischenwerte zwischen zwei Punkten kann durch lineare Interpolation errechnet werden, quadratische, kubische usw..

Dann, ist “erweicht” nachdem die Interpolationsfunktion:

Und die Integration der Satz, Kopplung der Summierfunktion harmonischen Komponenten:

[1] Seite Perlin Noise erläuternde Pseudocode. Diese Seite ist die wichtigste Referenz-Implementierung in dieser Arbeit vorgestellten. "http://freespace.virgin.net / hugo.elias / Perlin Noise.htm"