Upload
lutgardis-weltz
View
215
Download
1
Tags:
Embed Size (px)
Citation preview
MAKE SOME NOISE … von Perlin Noise zu Wavelet Noise
Von Christian Ritter
Seminar Computergrafik SS 2006Institut für InformatikJohannes Gutenberg Universität Mainz
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 2 / 53
Agenda
• Grundlagen• Motivation• Perlin Noise• Wavelet Noise• Einsatzmöglichkeiten
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 3 / 53
Grundlagen …
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 5 / 53
Grundlagen
Fourier-Transformation• Signale können in Elementarschwingungen
zerlegt werden (Sinus- und Kosinusfunktionen)
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 6 / 53
Grundlagen
Nyquist-Limit- „Ein analoges Signal muss mit mehr als der doppelten
Signalfrequenz abgetastet werden, um aus dem digitalen Abbild des Signals das analoge Ausgangssignal rekonstruieren zu können“ (Internetquelle)
- Sonst entsteht Aliasing
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 7 / 53
Motivation …
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 8 / 53
Motivation
Was fehlt?
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 9 / 53
Motivation
Ausgangssituation• Viele Strukturen (Wasser, Holz, …)
– Fraktale (lat. fractus: gebrochen): Muster mit einem hohen Grad an Skaleninvarianz bzw. Selbstähnlichkeit
– An zwei Punkten ähnlich, aber nicht gleich– Texturen geringer Auflösung: Wiederholung erkennbar
Realistisch nur durch Texturen hoher Auflösung darstellbar- früher: begrenzte Speicher- Heute möglich, aber in vielen Fällen unnötig (z.B. 3D
Nebelvolumen)
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 10 / 53
Motivation
WunschDie optimale NOISE-Funktion soll …• Fraktal sein• Stetig differenzierbar (am Besten c-
differenzierbar)• Leicht beschreibbar• Schnell • Reproduzierbar• Erweiterbar auf weitere Dimensionen
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 11 / 53
Perlin Noise …
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 12 / 53
Perlin Noise
Geschichte• Benannt nach ihrem Erfinder Ken Perlin
– „Department of Computer Sience“ New York University– 1981 Walt Disney „Tron“– 1983 erste Version einer 3D Noise Funktion– 1984 Erste Shader-Sprache– 1997 Academy Award for Technical Achievment
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 13 / 53
Perlin Noise
Das Ziel im Blick• Fourieranalyse: komplexes Signal als Summe
gewichteter Kosinusfunktionen verschiedener Frequenz
• Analog: NOISE als Summe gewichteter NOISE-Bänder verschiedener Frequenz
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 14 / 53
Perlin Noise
Berechnung eines Noise-Bandes• Gitter aus Zufallszahlen [0,1] erzeugen• Zwischen Zufallszahlen interpolieren
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 15 / 53
Perlin Noise
Zufallszahlen erzeugen• Pseudo-Zufallsgenerator
– Weist einer ganzen Zahl einen Zufallswert [0,1] zu– Reproduzierbar
• Beispiele:– Multiplikationen in endlichen Körper Z/PZ
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 16 / 53
Perlin Noise
Interpolation• Erweiterung des Definitionsbereiches auf reelle
Zahlen
• Methode– Lineare Interpolation– S-Kurve Interpolation– Kosinus Interpolation– Kubische Interpolation
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 17 / 53
Perlin Noise
Lineare Interpolation• Zwischen den benachbarten
Punkten durch eine Gerade interpoliert
• Nachteil: nicht stetig differenzierbar
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 18 / 53
Perlin Noise
Kosinus Interpolation• Zum Interpolieren wird die
Kosinuskurve verwendet• stetig differenzierbar• langsam
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 19 / 53
Perlin Noise
S - Kurve• „Beschleunigung“ und
„Verzögerung“ bei Start und Ende
• weichere Übergänge• Stetig differenzierbar• Sehr ähnlich der
Kosinusinterpolation und dieser vorzuziehen
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 20 / 53
Perlin Noise
Kubische Interpolation• Berücksichtigt 4 Punkte• 2 mal stetig differenzierbar• rechenaufwändig
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 21 / 53
Perlin Noise
Perlins Ansatz• Wert an jedem Gitterpunkt ist 0• Zufallswert bestimmt den Anstieg an diesem
Punkt
• Vorteil: Frequenzen der Fourieranalyse sind begrenzt auf den Bereich 2^(k+1) bis 2^k
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 22 / 53
Perlin Noise
Zusammenfassung• Komplexes Rauschen
durch Addition mehrere NOISE-Bänder verschiedener Gewichtung
• Sehr variable, sehr intuitiv, aber oft zu granular in der Beschreibung (jedes Band muss beschrieben werden)
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 23 / 53
Perlin Noise
Persistenz• Verdopplung der Frequenz von Band zu Band (1
Oktave)• Beschreibung der Amplitudenänderung durch
einen konstanten Faktor genannt Persistenz
Persistenz: 1 / 1.41
Persistenz: 1 / 4
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 24 / 53
Perlin Noise
Rauschen in mehreren Dimensionen• Leicht erweiterbar auf mehrere Dimensionen
Zufallszahlen abhängig von allen Dimensionen Interpolation entlang aller Achsen
• Man verwendet oft 3D-Noise zum Texturieren von 2D-Oberflächen
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 25 / 53
Perlin Noise
Probleme / Aliasing
• Abtastfrequenz liegt unter der Nyquistgrenze
• Da Frequenzen begrenzt Bänder können abgeschnitten werden Geometrie erscheint früher als die Textur
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 26 / 53
Perlin Noise
Probleme / Aliasing
• Überblenden
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 27 / 53
Perlin Noise
Probleme / Bandbegrenzung• 2D Perlin Noise
• 2D Schnitt durch ein 3D Perlin Noise Volumen
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 28 / 53
Wavelet Noise …
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 29 / 53
Wavelet Noise
Einleitung I• „Wavelet Noise“ (SIGGRAPH August 2005)
• Robert L. Cook Academy Award of Merit (Oscar) „for significant
advancements to the field of motion picture rendering as exemplified in Pixar's RenderMan“Vizevorstand der Softwareentwicklung bei Pixar Animation Studios
• Tony DeRose
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 30 / 53
Wavelet Noise
Einleitung II• Wavelet („kleine Welle“ – frz. Ondelette)• Kein Rauschen kann Aliasing unter allen
Umständen verhindern
Ziel• Verhinderung von Aliasing im Idealfall
Aufbau• wie Perlin: Summe gewichteter Rauschbänder
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 31 / 53
Wavelet Noise
Funktionsweise eines Renderers
• Szene S(x) • Filterkern K(x)
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 32 / 53
Wavelet Noise
Ziel• Bei zu kleiner Skalierung keinen Einfluss auf das Bild
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 33 / 53
Wavelet Noise
Der Idealfall I• Farbe des Oberflächenpunktes wird dominiert durch M(x)
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 34 / 53
Wavelet Noise
Der Idealfall II
• Beitrag der Rauschfunktion verschwindet, wenn Aliasing auftreten würde
• j,l ganze Zahlen
• Annahme: j=-1 für darstellbares Rauschen, j>=0 sonst
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 35 / 53
Wavelet Noise
Erzeugung eines Bandes• R(x) erzeugen
• Downsampling zu R-(x)
• Upsampling zu R-+(x)
• N(x) = R(x) – R-+(x)
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 36 / 53
Wavelet Noise
Upsampling I• Basisfunktion Phi(x)
• Funktionen als Linearkombination von um i verschobene Phi(x-i) gebildet werden
• Alle möglichen Funktionen F(x) erzeugen einen Vektorraum S0
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 37 / 53
Wavelet Noise
Upsampling II• Erzeuge Vektorraum S1 durch
Linearkombination aller Phi(2x-i)
• Verfeinerbar: Für alle Funktionen F in S0 lassen sich Koeffizienten finden, so dass …
• Die Koeffizienten lassen sich berechnen durch …
Für quadratische B-Splines umfasst diese Summe nur 4 Summanden!
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 38 / 53
Wavelet Noise
Upsampling III• Die neue Koeffizientensequenz ist doppelt so
lang, wie die Koeffizienten von F UPSAMPLING
• Verfeinerbare Basisfunktionen stellen sicher, dass alle Funktionen in S0 lassen sich in S1 darstellen S0 eine echte Teilmenge von S1 ist
Beispiele für verfeinerbare Basisfunktionen- Uniform B-Spline jeden Grades
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 39 / 53
Wavelet Noise
Downsampling I• nicht jede Funktion in S1 ist auch in S0 enthalten,
d.h. egal welche Koeffizienten ich in S0 wähle es liegt ein Detailverlust vor
• Trennung in einen darstellbaren und einen nicht darstellbaren Teil
• G-(x) wird durch die „kleinste Quadrate-Methode“ bestimmt
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 40 / 53
Wavelet Noise
Downsampling II• Beste Annäherung von D(x) in S0: alle Koeffizienten = 0
D(x) und alle ganzzahligen Verschiebungen orthogonal zu allen Funktionen in S0 sind
• Alle Detailfunktionen erzeugen einen Vektorraum: Wavelet-Raum W0
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 41 / 53
Wavelet Noise
Downsampling III• Die Koeffizienten für G-(x) können mit Hilfe der
Wavelet Analysis (insbesondere des sog. Analysis Koeffizienten) berechnet werden
• Für quadratische B-Splines ist die Summe unendlich lang; fällt aber schnell ab !
• Die Koeffizientensequenz für G ist doppelt so lang, wie die Koeffizientensequenz für G- Downsampling
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 42 / 53
Wavelet Noise
Die BasisfunktionAls Basisfunktion werden quadratische B-Splines
verwendet- Ähnlich zu den meisten verwendeten Filterkernen- Geringer Grad, lokaler Einfluss schnell und
einfach- Erzeugt differenzierbares Rauschen
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 43 / 53
Wavelet Noise
Erzeugung eines Bandes V• R(x) erzeugen
• Downsampling zu R-(x)
• Upsampling zu R-+(x)
• N(x) = R(x) – R-+(x)
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 44 / 53
Wavelet Noise
Ergebnis• Das Rauschband ist so
konstruiert, dass es für alle Skalierungen 2^j für j>=0 keinen Beitrag mehr liefert
• Die Basisfunktion ist so gewählt, dass sie den meisten Filterkernen ähnlich ist
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 45 / 53
Wavelet Noise
Der Nicht-Ideale Fall• j (Skalierung 2^j) und l (Verschiebung) sind ja
nicht unbedingt ganze Zahlen
• Numerische Untersuchungen des Beitrags C(j, 0.5) zeigen: starker abfall bei steigendem j
• In den meisten realistischen Szenarien arbeitet die Methode gut
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 46 / 53
Wavelet Noise
Ergebnis• 2D Wavelet Noise
• 2D Schnitt durch ein 3D Wavelet Noise Volumen
War wohl nichts!
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 47 / 53
Wavelet Noise
Projektion• Bisher: Abtastung des 3D-Volumen• Jetzt: das Integral über alle gewichteten Werte
der Rauschfunktion entlang einer Geraden orthogonal zur Schnittebene
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 48 / 53
Wavelet Noise
Ergebnis• 2D Wavelet Noise
• 3D Wavelet Noise projiziert auf 2D
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 49 / 53
Wavelet Noise
Ergebnis
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 50 / 53
Einsatzmöglichkeiten …
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 51 / 53
Einsatzmöglichkeiten
• Prozedurale Texturen– Holz, Wolken, Feuer, …
• Modellierung– Landschaften, Lindemeyer-Systeme
• Animationen– Partikelsysteme, natürliches Verhalten von Haaren, etc
2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz 52 / 53
Voilà tout.
• Haben Sie Fragen ?• Möchten Sie gerne mehr wissen ?