Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Perlin Noise und Lindenmayer Systeme

Ähnliche Präsentationen


Präsentation zum Thema: "Perlin Noise und Lindenmayer Systeme"—  Präsentation transkript:

1 Perlin Noise und Lindenmayer Systeme
CG-Seminar Vortrag WS 04/05 von Sebastian Limbach

2 Perlin Noise & Lindenmayer Systeme
Übersicht Perlin Noise & Lindenmayer Systeme Übersicht Teil 1 – Die Perlin Noise Funktion Teil 2 – Lindenmayer Systeme

3 Perlin Noise & Lindenmayer Systeme
Die Perlin Noise Funktion Perlin Noise & Lindenmayer Systeme Teil 1 – Die Perlin Noise Funktion Übersicht: Ken Perlin, Hintergründe, Motivation Aufbau der Perlin Noise Funktion Verwendungszwecke

4 Perlin Noise & Lindenmayer Systeme
Die Perlin Noise Funktion Perlin Noise & Lindenmayer Systeme Ken Perlin, Hintergründe Ken Perlin ist Professor an der New York University (Department of Computer Science). Er arbeitete unter anderem an dem Film „Tron“ (1981). 1983 erstellte er die erste Version einer dreidimensionalen Noise Funktion für prozedurale Texturen. 1984 entwickelte er die erste Shader-Sprache. 1997 erhielt er einen Academy Award (von der „Academy of Motion Picture Arts and Science“) für die Entwicklung der Perlin Noise Funktion.

5 Perlin Noise & Lindenmayer Systeme
Die Perlin Noise Funktion Perlin Noise & Lindenmayer Systeme Motivation für die Perlin Noise Funktion Eine Vielzahl natürlicher Phänomene weisen eine fraktale Struktur auf. Der Begriff „fraktal“ kommt von lat. fractus: gebrochen; frangere: brechen, in Stücke zerbrechen. Silhouette einer Bergkette Wellen auf einer Wasseroberfläche Muster im Marmor Wind

6 Perlin Noise & Lindenmayer Systeme
Die Perlin Noise Funktion Perlin Noise & Lindenmayer Systeme Motivation für die Perlin Noise Funktion Um diese Phänomene in der Computergrafik nachzubilden ist eine Funktion mit fraktalen Eigenschaften hilfreich. -> Perlin Noise Funktion Einige Eigenschaften: basiert auf pseudozufälligen Noise-Funktionen fraktale Struktur durch ähnliche, jedoch unterschiedlich gewichtete und skalierte Grundmuster ähnliche Funktionsparameter führen zu ähnlichem Funktionswert

7 Perlin Noise & Lindenmayer Systeme
Die Perlin Noise Funktion Perlin Noise & Lindenmayer Systeme Aufbau der Perlin Noise Funktion Die Grundlage bildet eine Noise-Funktion. noise: 9 ® [0,1] Jeder ganzen Zahl wird ein Zufallswert zwischen 0 und 1 zugeordnet. Der gleiche Funktionsparameter muss zu einem immer gleichen Funktionswert führen. Mögliche Realisierung: Potenzfunktion mod p (wobei p = große Primzahl)

8 Perlin Noise & Lindenmayer Systeme
Die Perlin Noise Funktion Perlin Noise & Lindenmayer Systeme Beispiel Dies ist die Funktion noise(i) = ( |( i )5| mod 7919 ) /

9 Perlin Noise & Lindenmayer Systeme
Die Perlin Noise Funktion Perlin Noise & Lindenmayer Systeme Interpolation Als nächstes benötigt man eine erweiterte Noise-Funktion noiser, die beliebige reelle Werte annehmen kann. Um diese Funktion zu realisieren, muss zwischen den Werten der Funktion „noise“ interpoliert werden. Einige Interpolationsverfahren: lineare Interpolation Kosinus-Interpolation kubische Interpolation

10 Perlin Noise & Lindenmayer Systeme
Die Perlin Noise Funktion Perlin Noise & Lindenmayer Systeme Lineare Interpolation Der Funktionswert an der Stelle a Î 3 \ 9 zwischen den ganzen Zahlen l = ë x û und r = é x ù mit x = a – l ergibt sich aus der Formel: ( 1 – x ) * noise( l ) + x * noise( r )

11 Perlin Noise & Lindenmayer Systeme
Die Perlin Noise Funktion Perlin Noise & Lindenmayer Systeme Beispiel für lineare Interpolation ( 1 – x ) * noise( l ) + x * noise( r )

12 Perlin Noise & Lindenmayer Systeme
Die Perlin Noise Funktion Perlin Noise & Lindenmayer Systeme Kosinus-Interpolation Der Funktionswert an der Stelle a Î 3 \ 9 zwischen den ganzen Zahlen l = ë a û und r = é a ù mit x = a – l ergibt sich aus der Formel: ( 1 – xc ) * noise( l ) + xc * noise( r ) Dabei ist xc = (1 – cos( x * π )) / 2

13 Perlin Noise & Lindenmayer Systeme
Die Perlin Noise Funktion Perlin Noise & Lindenmayer Systeme Beispiel für Kosinus-Interpolation

14 Perlin Noise & Lindenmayer Systeme
Die Perlin Noise Funktion Perlin Noise & Lindenmayer Systeme Kubische Interpolation Der Funktionswert an der Stelle a Î 3 \ 9 zwischen den ganzen Zahlen l = ë a û und r = é a ù mit x = a – l ergibt sich aus der Formel: p * x3 + q * x2 + r * x + s Wobei: p = (noise(r + 1) – noise(r)) – (noise(l – 1) – noise(l)) q = (noise(l – 1) – noise(l)) – p r = noise(r + 1) – noise(l – 1) s = noise(l)

15 Perlin Noise & Lindenmayer Systeme
Die Perlin Noise Funktion Perlin Noise & Lindenmayer Systeme Beispiel für kubische Interpolation

16 Perlin Noise & Lindenmayer Systeme
Die Perlin Noise Funktion Perlin Noise & Lindenmayer Systeme Wellenlänge, Frequenz und Amplitude Definitionen Die Wellenlänge der noiser Funktion ist der Abstand zwischen zwei Werten der zugrunde liegenden „noise“ Funktion. Die Frequenz der noiser Funktion ist 1 / Wellenlänge. Die Amplitude der noiser Funktion ist die Differenz zwischen dem maximalen und minimalen Funktionswert.

17 Perlin Noise & Lindenmayer Systeme
Die Perlin Noise Funktion Perlin Noise & Lindenmayer Systeme Zusammensetzen der Perlin Noise Funktion Grundlage bildet eine noiser Funktion mit Frequenz und Amplitude von 1. Als nächstes addiert man zur ersten Funktion weitere noiser Funktionen („Oktaven“), deren Frequenz sich jeweils erhöht (i.d.R. verdoppelt) und deren Amplitude sich verringert (i.d.R. halbiert). Jede Oktav benötigt eine eigene Noise Funktion als Grundlage (-> Primzahl variieren). Die Summe der noiser Funktionen ist die Perlin Noise Funktion.

18 Perlin Noise & Lindenmayer Systeme
Die Perlin Noise Funktion Perlin Noise & Lindenmayer Systeme Beispiel Oktave 0, Frequenz = 1, Amplitude = 1

19 Perlin Noise & Lindenmayer Systeme
Die Perlin Noise Funktion Perlin Noise & Lindenmayer Systeme Beispiel Oktave 1, Frequenz = 2, Amplitude = 1/2

20 Perlin Noise & Lindenmayer Systeme
Die Perlin Noise Funktion Perlin Noise & Lindenmayer Systeme Beispiel Oktave 2, Frequenz = 4, Amplitude = 1/4

21 Perlin Noise & Lindenmayer Systeme
Die Perlin Noise Funktion Perlin Noise & Lindenmayer Systeme Beispiel Oktave 3, Frequenz = 8, Amplitude = 1/8

22 Perlin Noise & Lindenmayer Systeme
Die Perlin Noise Funktion Perlin Noise & Lindenmayer Systeme Beispiel Oktave 4, Frequenz = 16, Amplitude = 1/16

23 Perlin Noise & Lindenmayer Systeme
Die Perlin Noise Funktion Perlin Noise & Lindenmayer Systeme Beispiel Perlin Noise Funktion, zusammengesetzt aus 7 Oktaven

24 Perlin Noise & Lindenmayer Systeme
Die Perlin Noise Funktion Perlin Noise & Lindenmayer Systeme Persistence Üblicherweise wird in jeder Oktave die Frequenz verdoppelt und die Amplitude halbiert. Andere Faktoren führen zu unterschiedlichen Perlin Noise Funktionen. Den Faktor, um den sich die Amplitude bei doppelter Frequenz verändert, bezeichnet man als Persistence. (Im Normalfall beträgt die Persistence also ½).

25 Perlin Noise & Lindenmayer Systeme
Die Perlin Noise Funktion Perlin Noise & Lindenmayer Systeme Höhere Dimensionen Die Perlin Noise Funktion lässt sich problemlos auch in zwei, drei oder mehr Dimensionen berechnen. Dazu benötigt man eine zwei-, drei- oder mehr-dimensionale Noise Funktion.

26 Perlin Noise & Lindenmayer Systeme
Die Perlin Noise Funktion Perlin Noise & Lindenmayer Systeme Beispiele + + + + + Oktave 0 Oktave 1 Oktave 2 Oktave 3 Oktave 4 Oktave 5 = 2D-Perlin Noise, zusammengesetzt aus 6 Oktaven

27 Perlin Noise & Lindenmayer Systeme
Die Perlin Noise Funktion Perlin Noise & Lindenmayer Systeme Beispiele 3D-Perlin Noise, zusammengesetzt aus 6 Oktaven Loop: z-Koordinate („Zeit“) wird in jeder Oktave modulo der jeweiligen Frequenz gerechnet

28 Perlin Noise & Lindenmayer Systeme
Die Perlin Noise Funktion Perlin Noise & Lindenmayer Systeme Einsatzmöglichkeiten Prozedurale Texturen / Shader Wolken Wasseroberflächen Feuer Rauch Modelling Landschaftsgenerierung (Displacement Mapping) Pflanzen (L-Systeme) Animation natürliche Bewegungen Partikelsysteme unterschiedliche Animation vieler einzelner Akteure (Menschenmengen, Fischschwärme etc.)

29 Perlin Noise & Lindenmayer Systeme
Die Perlin Noise Funktion Perlin Noise & Lindenmayer Systeme Prozedurale Texturen / Shader Perlin Noise Funktionen mit unterschiedlicher Persistence, mehrere kombinierte Perlin Noise Funktionen und Funktionen, die mit den Perlin Noise Werten weiterrechnen, können eingesetzt werden um unterschiedliche Texturen zu erzeugen. Prozedurale Texturen besitzen unendliche Ausdehnung bei geringem Speicherbedarf. 3D-Texturen beseitigen Probleme beim Mapping. Die Ableitung der Perlin Noise Funktion kann für bestimmte Textureffekte genutzt werden (z.B. für Reflexion von Wasseroberflächen oder Beleuchtung von Wolken).

30 Perlin Noise & Lindenmayer Systeme
Die Perlin Noise Funktion Perlin Noise & Lindenmayer Systeme Beispiel: Wolken ursprüngliche 2D Perlin Noise Funktion Wolkendichte = Perlin Noise Perlin Noise als Teil der Texturfunktion für realistische Wolken Wolkendichte = 1.0 – 0.01(Perlin Noise)

31 Perlin Noise & Lindenmayer Systeme
Die Perlin Noise Funktion Perlin Noise & Lindenmayer Systeme Beispiel: Fischschwarm

32 Perlin Noise & Lindenmayer Systeme
Teil 2 – Lindenmayer Systeme Übersicht: Grundlagen Verschiedene Lindenmayer Systeme Lindenmayer Systeme und die Perlin Noise Funktion

33 Perlin Noise & Lindenmayer Systeme
Grundlagen Lindenmayer Systeme (kurz L-Systeme) wurden erstmals 1968 von Aristid Lindenmayer (ungarischer(?) Biologe, ) vorgestellt. L-Systeme sind eine mathematische Theorie der Entwicklung von Pflanzen. Sie ähneln formalen Sprachen und Grammatiken ( -> GdI ). Ursprünglich wurden sie zur Beschreibung von einfachen mehrzelligen Organismen genutzt, sie wurden jedoch weiterentwickelt um auch komplexe Pflanzen zu beschreiben. Außer für Computergrafiker sind L-Systeme auch für Biologen und Mathematiker interessant.

34 Perlin Noise & Lindenmayer Systeme
Einfache L-Systeme Die einfachsten L-Systeme sind die D0L-Systeme (deterministische, kontextfreie L-Systeme). L-System ist ein Tripel (V, ω, P), wobei V das Alphabet des L-Systems, ω Î V+ das nicht leere Axiom (Anfangswort) und P eine Menge von Produktionsregeln (a, Χ) bezeichnet. Für die Produktionsregeln gilt: a Î V bezeichnet man als Vorgänger. Χ Î V* bezeichnet man als Nachfolger. Das System ist deterministisch, falls keine zwei Produktionsregeln den gleichen Vorgänger besitzen, sonst nennt man es 0L-System.

35 Perlin Noise & Lindenmayer Systeme
Einfache L-Systeme Ausgehend vom Anfangswort (Axiom) können, den Produktionsregeln entsprechend, neue Wörter abgeleitet werden. In jedem Ableitungschritt werden dabei alle Symbole des aktuellen Wortes gleichzeitig durch die in den Produktionsregeln festgelegten Nachfolger ersetzt. Falls für ein Symbol keine Produktionsregel mit entsprechendem Vorgänger existiert, so wird die Identitätsproduktion a → a (a Î V) angewandt.

36 Perlin Noise & Lindenmayer Systeme
Grafische Interpretation Zur grafischen Darstellung der Wörter wird die so genannte „Schildkröten (Turtle) - Interpretation“ angewandt. Die Turtle beginnt bei einer Startposition mit einer bestimmten Ausrichtung. Einzelne Symbole des Wortes werden benutzt, um die Turtle zu steuern (alle anderen Symbole werden ignoriert): „F“ Die Turtle geht einen Schritt vorwärts und hinterlässt auf dem Weg eine Linie. „f“ Die Turtle geht einen Schritt vorwärts, ohne dass eine Linie gezeichnet wird. „+“ Die Turtle dreht sich nach links. „-“ Die Turtle dreht sich nach rechts. Die Schrittweite d und der Drehwinkel δ der Schildkröte müssen für jedes System festgelegt werden.

37 Perlin Noise & Lindenmayer Systeme
Beispiel: D0L-System mit Turtle-Interpretation Axiom 1. Ableitung 2. Ableitung 3. Ableitung D0L-System „quadratische Kochinsel“: ω: F – F – F – F p: F → F – F + F + FF – F – F + F δ = 90°

38 Perlin Noise & Lindenmayer Systeme
Geklammerte L-Systeme Um verästelte Strukturen zu erzeugen benötigt man spezielle Baum-0L-Systeme, bei denen einzelne, um eine Mittellinie (axis) angeordnete Kanten („Äste“) durch „Unterbäume“ ersetzt werden, die ihrerseits wieder aus einzelnen Ästen bestehen. Um solche Strukturen modellieren zu können verwendet man geklammerte L-Systeme. Diese entsprechen den (D)0L-Systemen, jedoch kommen zwei neue Symbole für die Turtle-Interpretation hinzu: „[“ Die aktuelle Position und Ausrichtung der Turtle wird auf einen Stack gepusht. „]“ Die oberste Position und Ausrichtung der Turtle wird vom Stack gepopt.

39 Perlin Noise & Lindenmayer Systeme
Beispiel: Geklammertes L-System 1. Ableitung 3. Ableitung 5. Ableitung 7. Ableitung L-System: ω: X p: X → F – [[X] + X] + F[+FX] – X F → FF δ = 22,5°

40 Perlin Noise & Lindenmayer Systeme
Dreidimensionale Interpretation Um Pflanzen in drei Dimensionen zu modellieren benötigt man weitere Turtle-Steuerzeichen: „+“, „-“ Die Turtle dreht sich nach links / rechts (wie gehabt). „&“, „^“ Die Turtle kippt nach unten / oben. „\“, „/“ Die Turtle „rollt“ nach links / rechts. „|“ Die Turtle dreht sich um 180°. „{“, „}“ Das Zeichnen eines ausgefüllten Polygons wird begonnen / beendet. „!“ Der Liniendurchmesser wird verkleinert. „ ‘ “ Der Farbindex wird erhöht. Alle Drehungen beziehen sich hierbei auf den Drehwinkel δ.

41 Perlin Noise & Lindenmayer Systeme
Beispiel Bild: „Three-dimensional bush“ P. Prusinkiewicz (1986) 7. Ableitung L-System: δ = 22,5° ω: A p: A → [&FL!A]/////‘[&FL!A]///////‘[&FL!A] F → S ///// F S → F L L → [‘‘‘^^{-f+f+f-|-f+f+f}]

42 Perlin Noise & Lindenmayer Systeme
Stochastische L-Systeme Möchte man mehrere Pflanzen der gleichen Art visualisieren (Wald, Blumenwiese), dann müssen sich die einzelnen Pflanzen voneinander unterscheiden. Verschiedene Pflanzen desselben Typs lassen sich über stochastische L-Systeme realisieren. Jeder Produktionsregel wird eine bestimmte Wahrscheinlichkeit p zugeordnet. Die Summe aller Wahrscheinlichkeiten von Produktionen mit gleichem Vorgänger muss 1 betragen. Per Zufall wird bei der Ableitung zwischen den möglichen Produktionen gewählt. Mit Hilfe einer Perlin Noise Funktion ließe sich beispielsweise erreichen, dass auf einer Wiese ähnliche Pflanzen auch nahe zusammen stehen.

43 Perlin Noise & Lindenmayer Systeme
Kontextsensitive L-Systeme Um eine Signalweitergabe zwischen einzelnen Pflanzenteilen simulieren zu können benötigt man kontextsensitive L-Systeme. Neue Produktionsregeln: al < a > ar → Χ al Î V ist der linke Kontext, ar Î V ist der rechte Kontext. (2L-System) (k, l)-System: linker Kontext ist Wort der Länge k, rechter Kontext ist Wort der Länge l. al < a → Χ bzw. a > ar → Χ sind Produktionsregeln eines 1L-Systems. Zur Vereinfachung kann man zulassen, dass in 1L-Systemen al und ar Wörter beliebiger Länge seien dürfen.

44 Perlin Noise & Lindenmayer Systeme
Parametrische L-Systeme Die bisherigen L-Systeme haben einige Nachteile. Beispielsweise ist die Länge einzelner Segmente auf Vielfache ganzer Zahlen begrenzt. Um wirklich realistische Pflanzen modellieren zu können benötigt man parametrische L-Systeme. Jedem Buchstaben aus dem Alphabet können endlich viele Parameter zugeordnet werden. In jedem gültigen Wort sind alle Parameter mit reellen Zahlen belegt. Die Produktionsregeln können um logische Ausdrücke ergänzt werden und werden nur angewandt, wenn der logische Ausdruck wahr wird. Der Nachfolger kann mit Hilfe von arithmetischen Ausdrücken neue Parameter berechnen.

45 Perlin Noise & Lindenmayer Systeme
Beispiel eines parametrischen L-Systems ω: B(2)A(4,4) p: A(x,y) : y <= 3 → A(x*2, x+y) A(x,y) : y > 3 → B(x)A(x/y, 0) B(x) : x < 1 → C B(x) : x >= 1 → B(x-1) Ableitung: B(2)A(4,4) Þ B(1)B(4)A(1,0) Þ B(0)B(3)A(2,1) Þ CB(2)A(4,3) Þ CB(1)A(8,7) Þ ...

46 Perlin Noise & Lindenmayer Systeme
Beispiel eines parametrischen L-Systems Bild: P. Prusinkiewicz ω: !(1)F(200)/(45)A p: A : * → !(vr)F(50)[&(a)F(50)A]/(d1)[&(a)F(50)A] /(d2)[&(a)F(50)A] F(l) : * → F(l*lr) !(w) : * → !(w*vr) Parameter für Bild: d1=180,00; d2=252,00; a=36.00; lr=1,070 T = (-0,61;0,77;-0,19) Die Ausrichtung der Turtle wird nach dem Zeichnen jedes Segmentes etwas in Richtung T geneigt („Tropismus“).

47 Perlin Noise & Lindenmayer Systeme
Beispiel eines parametrischen L-Systems Bild: „Medicine lake“ F. K. Musgrave, C. E. Kolb, P. Prusinkiewicz, B. B. Mandelbrot (1988)

48 Perlin Noise & Lindenmayer Systeme
Lindenmayer Systeme & Perlin Noise Die Perlin Noise Funktion kann dazu verwendet werden, um in stochastischen L-Systemen Produktionsregeln auszuwählen, die aktuelle Farbe oder Liniendicke in einem L-System zu variieren, einzelne Parameter in parametrischen L-Systemen zu variieren, den „Biegevektor“ zu variieren, aus mehreren L-Systemen bei der „Bepflanzung“ einer Landschaft auszuwählen, Wind, der beispielsweise über eine Wiese weht, zu simulieren,

49 Perlin Noise & Lindenmayer Systeme
Vielen Dank für Ihre Aufmerksamkeit!

50 Perlin Noise & Lindenmayer Systeme
Die Perlin Noise Funktion Perlin Noise & Lindenmayer Systeme Beispiel: Wolken Wolken als kachelbare Textur für Echtzeit-3D-Grafik


Herunterladen ppt "Perlin Noise und Lindenmayer Systeme"

Ähnliche Präsentationen


Google-Anzeigen