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

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

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

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

Perlin Noise und

Lindenmayer Systeme

CG-Seminar Vortrag WS 04/05

von Sebastian Limbach

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

Perlin Noise & Lindenmayer Perlin Noise & Lindenmayer SystemeSysteme

Übersicht

ÜbersichtÜbersicht

Teil 1 – Die Perlin Noise FunktionTeil 2 – Lindenmayer Systeme

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

Perlin Noise & Lindenmayer Perlin Noise & Lindenmayer SystemeSysteme

Teil 1 – Die Perlin Noise Funktion

Die Perlin Noise FunktionDie Perlin Noise Funktion

Übersicht:

Ken Perlin, Hintergründe, MotivationAufbau der Perlin Noise FunktionVerwendungszwecke

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

Perlin Noise & Lindenmayer Perlin Noise & Lindenmayer SystemeSysteme

Ken Perlin, Hintergründe

Die Perlin Noise FunktionDie 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).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.

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

Perlin Noise & Lindenmayer Perlin Noise & Lindenmayer SystemeSysteme

Motivation für die Perlin Noise Funktion

Die Perlin Noise FunktionDie 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 BergketteWellen auf einer WasseroberflächeMuster im MarmorWind…

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

Perlin Noise & Lindenmayer SystemePerlin Noise & Lindenmayer Systeme

Motivation für die Perlin Noise Funktion

Die Perlin Noise FunktionDie 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-Funktionenfraktale Struktur durch ähnliche, jedoch unterschiedlich gewichtete und skalierte Grundmusterähnliche Funktionsparameter führen zu ähnlichem Funktionswert

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

Perlin Noise & Lindenmayer SystemePerlin Noise & Lindenmayer Systeme

Aufbau der Perlin Noise Funktion

Die Perlin Noise FunktionDie 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)

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

Perlin Noise & Lindenmayer SystemePerlin Noise & Lindenmayer Systeme

BeispielDie Perlin Noise FunktionDie Perlin Noise Funktion

Dies ist die Funktion noise(i) = ( |( i + 685 )5| mod 7919 ) / 7918 .

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

Perlin Noise & Lindenmayer SystemePerlin Noise & Lindenmayer Systeme

Interpolation

Die Perlin Noise FunktionDie Perlin Noise Funktion

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 InterpolationKosinus-Interpolationkubische Interpolation

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

Perlin Noise & Lindenmayer SystemePerlin Noise & Lindenmayer Systeme

Lineare Interpolation

Die Perlin Noise FunktionDie Perlin Noise Funktion

Der Funktionswert an der Stelle a \ zwischen den ganzen Zahlen l = x und r =xmit x = a – l ergibt sich aus der Formel:

( 1 – x ) * noise( l ) + x * noise( r )

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

Perlin Noise & Lindenmayer SystemePerlin Noise & Lindenmayer Systeme

Beispiel für lineare InterpolationDie Perlin Noise FunktionDie Perlin Noise Funktion

( 1 – x ) * noise( l ) + x * noise( r )

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

Perlin Noise & Lindenmayer SystemePerlin Noise & Lindenmayer Systeme

Kosinus-Interpolation

Die Perlin Noise FunktionDie Perlin Noise Funktion

Der Funktionswert an der Stelle a \ zwischen den ganzen Zahlen l = a und r =amit x = a – l ergibt sich aus der Formel:

( 1 – xc ) * noise( l ) + xc * noise( r )

Dabei ist xc = (1 – cos( x * π )) / 2

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

Perlin Noise & Lindenmayer SystemePerlin Noise & Lindenmayer Systeme

Beispiel für Kosinus-InterpolationDie Perlin Noise FunktionDie Perlin Noise Funktion

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

Perlin Noise & Lindenmayer SystemePerlin Noise & Lindenmayer Systeme

Kubische Interpolation

Die Perlin Noise FunktionDie Perlin Noise Funktion

Der Funktionswert an der Stelle a \ zwischen den ganzen Zahlen l = a und r =amit 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)) – pr = noise(r + 1) – noise(l – 1)s = noise(l)

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

Perlin Noise & Lindenmayer SystemePerlin Noise & Lindenmayer Systeme

Beispiel für kubische InterpolationDie Perlin Noise FunktionDie Perlin Noise Funktion

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

Perlin Noise & Lindenmayer SystemePerlin Noise & Lindenmayer Systeme

Wellenlänge, Frequenz und Amplitude

Die Perlin Noise FunktionDie Perlin Noise Funktion

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.

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

Perlin Noise & Lindenmayer SystemePerlin Noise & Lindenmayer Systeme

Zusammensetzen der Perlin Noise Funktion

Die Perlin Noise FunktionDie 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.

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

Perlin Noise & Lindenmayer SystemePerlin Noise & Lindenmayer Systeme

BeispielDie Perlin Noise FunktionDie Perlin Noise Funktion

Oktave 0, Frequenz = 1, Amplitude = 1

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

Perlin Noise & Lindenmayer SystemePerlin Noise & Lindenmayer Systeme

BeispielDie Perlin Noise FunktionDie Perlin Noise Funktion

Oktave 1, Frequenz = 2, Amplitude = 1/2

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

Perlin Noise & Lindenmayer SystemePerlin Noise & Lindenmayer Systeme

BeispielDie Perlin Noise FunktionDie Perlin Noise Funktion

Oktave 2, Frequenz = 4, Amplitude = 1/4

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

Perlin Noise & Lindenmayer SystemePerlin Noise & Lindenmayer Systeme

BeispielDie Perlin Noise FunktionDie Perlin Noise Funktion

Oktave 3, Frequenz = 8, Amplitude = 1/8

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

Perlin Noise & Lindenmayer SystemePerlin Noise & Lindenmayer Systeme

BeispielDie Perlin Noise FunktionDie Perlin Noise Funktion

Oktave 4, Frequenz = 16, Amplitude = 1/16

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

Perlin Noise & Lindenmayer SystemePerlin Noise & Lindenmayer Systeme

BeispielDie Perlin Noise FunktionDie Perlin Noise Funktion

Perlin Noise Funktion, zusammengesetzt aus 7 Oktaven

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

Perlin Noise & Lindenmayer SystemePerlin Noise & Lindenmayer Systeme

Persistence

Die Perlin Noise FunktionDie 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 ½).

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

Perlin Noise & Lindenmayer SystemePerlin Noise & Lindenmayer Systeme

Höhere Dimensionen

Die Perlin Noise FunktionDie 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.

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

Perlin Noise & Lindenmayer SystemePerlin Noise & Lindenmayer Systeme

Beispiele

Die Perlin Noise FunktionDie Perlin Noise Funktion

2D-Perlin Noise, zusammengesetzt aus 6 Oktaven

+ + + + +

=

Oktave 0 Oktave 1 Oktave 2 Oktave 3 Oktave 4 Oktave 5

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

Perlin Noise & Lindenmayer SystemePerlin Noise & Lindenmayer Systeme

Beispiele

Die Perlin Noise FunktionDie Perlin Noise Funktion

3D-Perlin Noise, zusammengesetzt aus 6 OktavenLoop: z-Koordinate („Zeit“) wird in jeder Oktave modulo der jeweiligen Frequenz gerechnet

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

Perlin Noise & Lindenmayer SystemePerlin Noise & Lindenmayer Systeme

Einsatzmöglichkeiten

Die Perlin Noise FunktionDie Perlin Noise Funktion

Prozedurale Texturen / ShaderWolkenWasseroberflächenFeuerRauch

Modelling Landschaftsgenerierung (Displacement Mapping)Pflanzen (L-Systeme)

Animation natürliche BewegungenPartikelsystemeunterschiedliche Animation vieler einzelner Akteure (Menschenmengen, Fischschwärme etc.)

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

Perlin Noise & Lindenmayer SystemePerlin Noise & Lindenmayer Systeme

Prozedurale Texturen / Shader

Die Perlin Noise FunktionDie 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).

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

Perlin Noise & Lindenmayer SystemePerlin Noise & Lindenmayer Systeme

Beispiel: Wolken

Die Perlin Noise FunktionDie Perlin Noise Funktion

ursprüngliche 2D Perlin Noise FunktionWolkendichte = Perlin Noise

Perlin Noise als Teil der Texturfunktion für realistische WolkenWolkendichte = 1.0 – 0.01(Perlin Noise)

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

Perlin Noise & Lindenmayer SystemePerlin Noise & Lindenmayer Systeme

Beispiel: Fischschwarm

Die Perlin Noise FunktionDie Perlin Noise Funktion

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

Perlin Noise & Lindenmayer Perlin Noise & Lindenmayer SystemeSysteme

Teil 2 – Lindenmayer Systeme

Lindenmayer SystemeLindenmayer Systeme

Übersicht:

GrundlagenVerschiedene Lindenmayer SystemeLindenmayer Systeme und die Perlin Noise Funktion

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

Perlin Noise & Lindenmayer Perlin Noise & Lindenmayer SystemeSysteme

Grundlagen

Lindenmayer SystemeLindenmayer Systeme

Lindenmayer Systeme (kurz L-Systeme) wurden erstmals 1968 von Aristid Lindenmayer (ungarischer(?) Biologe, 1925 - 1989) 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.

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

Perlin Noise & Lindenmayer Perlin Noise & Lindenmayer SystemeSysteme

Einfache L-Systeme

Lindenmayer SystemeLindenmayer Systeme

Die einfachsten L-Systeme sind die D0L-Systeme (deterministische, kontextfreie L-Systeme).

L-System ist ein Tripel (V, ω, P), wobeiV das Alphabet des L-Systems,ω V+ das nicht leere Axiom (Anfangswort) undP 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.

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

Perlin Noise & Lindenmayer Perlin Noise & Lindenmayer SystemeSysteme

Einfache L-Systeme

Lindenmayer SystemeLindenmayer 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.

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

Perlin Noise & Lindenmayer Perlin Noise & Lindenmayer SystemeSysteme

Grafische Interpretation

Lindenmayer SystemeLindenmayer 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.

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

Perlin Noise & Lindenmayer Perlin Noise & Lindenmayer SystemeSysteme

Beispiel: D0L-System mit Turtle-Interpretation

Lindenmayer SystemeLindenmayer Systeme

D0L-System „quadratische Kochinsel“:

ω: F – F – F – Fp: F → F – F + F + FF – F – F + F

δ = 90°

Axiom 1. Ableitung 2. Ableitung 3. Ableitung

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

Perlin Noise & Lindenmayer Perlin Noise & Lindenmayer SystemeSysteme

Geklammerte L-Systeme

Lindenmayer SystemeLindenmayer 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.

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

Perlin Noise & Lindenmayer Perlin Noise & Lindenmayer SystemeSysteme

Beispiel: Geklammertes L-System

Lindenmayer SystemeLindenmayer Systeme

L-System:

ω: Xp: X → F – [[X] + X] + F[+FX] – XF → FF

δ = 22,5°

1. Ableitung 3. Ableitung 5. Ableitung 7. Ableitung

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

Perlin Noise & Lindenmayer Perlin Noise & Lindenmayer SystemeSysteme

Dreidimensionale Interpretation

Lindenmayer SystemeLindenmayer 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 δ.

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

Perlin Noise & Lindenmayer Perlin Noise & Lindenmayer SystemeSysteme

Beispiel

Lindenmayer SystemeLindenmayer Systeme

L-System: δ = 22,5°

ω: Ap: A → [&FL!A]/////‘[&FL!A]///////‘[&FL!A]F → S ///// FS → F LL → [‘‘‘^^{-f+f+f-|-f+f+f}]

7. AbleitungBild: „Three-dimensional bush“ P. Prusinkiewicz (1986)

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

Perlin Noise & Lindenmayer Perlin Noise & Lindenmayer SystemeSysteme

Stochastische L-Systeme

Lindenmayer SystemeLindenmayer 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.

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

Perlin Noise & Lindenmayer Perlin Noise & Lindenmayer SystemeSysteme

Kontextsensitive L-Systeme

Lindenmayer SystemeLindenmayer 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 a l und ar Wörter beliebiger Länge seien dürfen.

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

Perlin Noise & Lindenmayer Perlin Noise & Lindenmayer SystemeSysteme

Parametrische L-Systeme

Lindenmayer SystemeLindenmayer 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.

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

Perlin Noise & Lindenmayer Perlin Noise & Lindenmayer SystemeSysteme

Beispiel eines parametrischen L-Systems

Lindenmayer SystemeLindenmayer 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 → CB(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) ...

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

Perlin Noise & Lindenmayer Perlin Noise & Lindenmayer SystemeSysteme

Beispiel eines parametrischen L-Systems

Lindenmayer SystemeLindenmayer Systeme

ω: !(1)F(200)/(45)Ap: 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“).

Bild: P. Prusinkiewicz

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

Perlin Noise & Lindenmayer Perlin Noise & Lindenmayer SystemeSysteme

Beispiel eines parametrischen L-Systems

Lindenmayer SystemeLindenmayer Systeme

Bild: „Medicine lake“ F. K. Musgrave, C. E. Kolb, P. Prusinkiewicz, B. B. Mandelbrot (1988)

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

Perlin Noise & Lindenmayer Perlin Noise & Lindenmayer SystemeSysteme

Lindenmayer Systeme & Perlin Noise

Lindenmayer SystemeLindenmayer 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,…

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

Perlin Noise & Lindenmayer Perlin Noise & Lindenmayer SystemeSysteme

Vielen Dank für Ihre Aufmerksamkeit!