Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Perlin Noise und Lindenmayer Systeme CG-Seminar Vortrag WS 04/05 von Sebastian Limbach."—  Präsentation transkript:

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

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

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

4 Perlin Noise & Lindenmayer Systeme Ken Perlin, Hintergründe Die Perlin Noise Funktion Ken Perlin ist Professor an der New York University (Department of Computer Science). Er arbeitete unter anderem an dem Film „Tron“ (1981) erstellte er die erste Version einer dreidimensionalen Noise Funktion für prozedurale Texturen entwickelte er die erste Shader-Sprache 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 Motivation für die Perlin Noise Funktion 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 Motivation für die Perlin Noise Funktion 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 Aufbau der Perlin Noise Funktion Die Perlin Noise Funktion Die Grundlage bildet eine Noise-Funktion. noise:   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 Beispiel Die Perlin Noise Funktion Dies ist die Funktion noise(i) = ( |( i ) 5 | mod 7919 ) / 7918.

9 Perlin Noise & Lindenmayer Systeme Interpolation Die Perlin Noise Funktion Als nächstes benötigt man eine erweiterte Noise-Funktion noise r, 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 Lineare Interpolation Die Perlin Noise Funktion Der Funktionswert an der Stelle a   \  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 Beispiel für lineare Interpolation Die Perlin Noise Funktion ( 1 – x ) * noise( l ) + x * noise( r )

12 Perlin Noise & Lindenmayer Systeme Kosinus-Interpolation Die Perlin Noise Funktion Der Funktionswert an der Stelle a   \  zwischen den ganzen Zahlen l =  a  und r =  a  mit x = a – l ergibt sich aus der Formel: ( 1 – x c ) * noise( l ) + x c * noise( r ) Dabei ist x c = (1 – cos( x * π )) / 2

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

14 Perlin Noise & Lindenmayer Systeme Kubische Interpolation Die Perlin Noise Funktion Der Funktionswert an der Stelle a   \  zwischen den ganzen Zahlen l =  a  und r =  a  mit x = a – l ergibt sich aus der Formel: p * x 3 + q * x 2 + 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 Beispiel für kubische Interpolation Die Perlin Noise Funktion

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

17 Perlin Noise & Lindenmayer Systeme Zusammensetzen der Perlin Noise Funktion Die Perlin Noise Funktion Grundlage bildet eine noise r Funktion mit Frequenz und Amplitude von 1. Als nächstes addiert man zur ersten Funktion weitere noise r 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 noise r Funktionen ist die Perlin Noise Funktion.

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

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

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

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

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

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

24 Perlin Noise & Lindenmayer Systeme Persistence Die Perlin Noise Funktion Ü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 Höhere Dimensionen Die Perlin Noise Funktion 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 Beispiele Die Perlin Noise Funktion 2D-Perlin Noise, zusammengesetzt aus 6 Oktaven = Oktave 0Oktave 1Oktave 2Oktave 3Oktave 4Oktave 5

27 Perlin Noise & Lindenmayer Systeme Beispiele Die Perlin Noise Funktion 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 Einsatzmöglichkeiten Die Perlin Noise Funktion 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 Prozedurale Texturen / Shader Die Perlin Noise Funktion 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 Beispiel: Wolken Die Perlin Noise Funktion 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 Beispiel: Fischschwarm Die Perlin Noise Funktion

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

33 Perlin Noise & Lindenmayer Systeme Grundlagen Lindenmayer Systeme 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 Lindenmayer 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 Lindenmayer 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 Lindenmayer Systeme 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 Lindenmayer Systeme D0L-System „quadratische Kochinsel“: ω:F – F – F – F p:F → F – F + F + FF – F – F + F δ = 90° Axiom1. Ableitung2. Ableitung3. Ableitung

38 Perlin Noise & Lindenmayer Systeme Geklammerte L-Systeme Lindenmayer 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 Lindenmayer Systeme L-System: ω:X p:X → F – [[X] + X] + F[+FX] – X F → FF δ = 22,5° 1. Ableitung3. Ableitung5. Ableitung7. Ableitung

40 Perlin Noise & Lindenmayer Systeme Dreidimensionale Interpretation Lindenmayer Systeme 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 Lindenmayer Systeme 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}] 7. Ableitung Bild: „Three-dimensional bush“ P. Prusinkiewicz (1986)

42 Perlin Noise & Lindenmayer Systeme Stochastische L-Systeme Lindenmayer 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 Lindenmayer Systeme Um eine Signalweitergabe zwischen einzelnen Pflanzenteilen simulieren zu können benötigt man kontextsensitive L-Systeme. Neue Produktionsregeln: a l a r → Χa l  V ist der linke Kontext, a r  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. a l a r → Χ sind Produktionsregeln eines 1L- Systems. Zur Vereinfachung kann man zulassen, dass in 1L-Systemen a l und a r Wörter beliebiger Länge seien dürfen.

44 Perlin Noise & Lindenmayer Systeme Parametrische L-Systeme Lindenmayer 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 Lindenmayer Systeme ω: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 Lindenmayer Systeme ω:!(1)F(200)/(45)A p:A: * → !(v r )F(50)[&(a)F(50)A]/(d 1 )[&(a)F(50)A] /(d 2 )[&(a)F(50)A] F(l): * → F(l*l r ) !(w): * → !(w*v r ) Parameter für Bild: d 1 =180,00; d 2 =252,00; a=36.00; l r =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“). Bild: P. Prusinkiewicz

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

48 Perlin Noise & Lindenmayer Systeme Lindenmayer Systeme & Perlin Noise Lindenmayer Systeme 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 Beispiel: Wolken Die Perlin Noise Funktion Wolken als kachelbare Textur für Echtzeit-3D-Grafik


Herunterladen ppt "Perlin Noise und Lindenmayer Systeme CG-Seminar Vortrag WS 04/05 von Sebastian Limbach."

Ähnliche Präsentationen


Google-Anzeigen