MAKE SOME NOISE … von Perlin Noise zu Wavelet Noise Von Christian Ritter Seminar Computergrafik SS 2006 Institut für Informatik Johannes Gutenberg Universität Mainz
Agenda Grundlagen Motivation Perlin Noise Wavelet Noise Einsatzmöglichkeiten 2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz
Grundlagen … 2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz
Grundlagen Frequenz, Wellenlänge, Amplitude 2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz
Grundlagen Fourier-Transformation Signale können in Elementarschwingungen zerlegt werden (Sinus- und Kosinusfunktionen) 2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz
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
Motivation … 2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz
Motivation Was fehlt? 2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz
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
Die optimale NOISE-Funktion soll … Fraktal sein Motivation Wunsch Die 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
Perlin Noise … 2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz
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
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
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
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
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
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
Perlin Noise Kosinus Interpolation Zum Interpolieren wird die Kosinuskurve verwendet stetig differenzierbar langsam 2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz
„Beschleunigung“ und „Verzögerung“ bei Start und Ende 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
Perlin Noise Kubische Interpolation Berücksichtigt 4 Punkte 2 mal stetig differenzierbar rechenaufwändig 2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz
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
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
Perlin Noise Persistenz Verdopplung der Frequenz von Band zu Band (1 Oktave) Beschreibung der Amplitudenänderung durch einen konstanten Faktor genannt Persistenz Persistenz: 1 / 4 Persistenz: 1 / 1.41 2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz
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
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
Perlin Noise Probleme / Aliasing Überblenden 2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz
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
Wavelet Noise … 2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz
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
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
Wavelet Noise Funktionsweise eines Renderers Szene S(x) Filterkern K(x) 2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz
Bei zu kleiner Skalierung keinen Einfluss auf das Bild Wavelet Noise Ziel Bei zu kleiner Skalierung keinen Einfluss auf das Bild 2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz
Wavelet Noise Der Idealfall I Farbe des Oberflächenpunktes wird dominiert durch M(x) 2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz
Wavelet Noise Der Idealfall II Annahme: j=-1 für darstellbares Rauschen, j>=0 sonst Beitrag der Rauschfunktion verschwindet, wenn Aliasing auftreten würde j,l ganze Zahlen 2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz
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
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
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
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
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
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
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
Wavelet Noise Die Basisfunktion Als 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
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
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
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
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
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
Wavelet Noise Ergebnis 2D Wavelet Noise 3D Wavelet Noise projiziert auf 2D 2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz
Wavelet Noise Ergebnis 2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz
Einsatzmöglichkeiten … 2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz
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
Voilà tout. Haben Sie Fragen ? Möchten Sie gerne mehr wissen ? 2006-07-07 Christian Ritter, Johannes Gutenberg Universität Mainz