Graphische Datenverarbeitung IV Dr. Markus Heitz.

22
Graphische Datenverarbeitung IV Dr. Markus Heitz

Transcript of Graphische Datenverarbeitung IV Dr. Markus Heitz.

Page 1: Graphische Datenverarbeitung IV Dr. Markus Heitz.

Graphische Datenverarbeitung IV

Dr. Markus Heitz

Page 2: Graphische Datenverarbeitung IV Dr. Markus Heitz.

Beleuchtungsmodelle

• Lokales Beleuchtungsmodell: Shading (z.B. OpenGl)– Wechselwirkung zwischen Objekten wird nicht berücksichtigt

– Keine Spiegelung

– Kein Schatten

– Relativ niedrige Rechenzeit

• Globales Modell: Ray Tracing (z.B. Povray)

• Globales Modell: Radiosity

Page 3: Graphische Datenverarbeitung IV Dr. Markus Heitz.

Ray Tracing

• Globales Modell• Rückverfolgung des Lichtstrahls vom Auge ausgehend für jedes

Bildpixel.• Trifft der Lichtstrahl auf eine Fläche, wird er gebrochen und/oder

gespiegelt: Strahlaufteilung• Von jedem getroffenen Punkt wird ein Strahl zu allen Lichtquellen

berechnet (Verdeckung durch andere Objekte): Berechnung des Shading-Anteils

• Baumstruktur der Strahlverfolgung• Nur Reflektion und Brechung, keine Streuung• Realitätsnahe Bilder mit Schatten, Spiegelbildern etc.• Blickwinkelabhängiges Verfahren• Hohe Rechenzeit

Page 4: Graphische Datenverarbeitung IV Dr. Markus Heitz.

Ray TracingLicht

undurchsichtiges Objekt

halbtransparentes Objekt

Auge

Pixel

Bild

Page 5: Graphische Datenverarbeitung IV Dr. Markus Heitz.
Page 6: Graphische Datenverarbeitung IV Dr. Markus Heitz.
Page 7: Graphische Datenverarbeitung IV Dr. Markus Heitz.

Radiosity

• Basiert auf der Theorie der Wärmeübertragung

• Lichtenergie wird auf Flächen der Szene verteilt

• Diffuse Wechselwirkung zwischen den Flächen

• Keine Reflexionen

• Iteratives Verfahren

• Verdeckungsberechnung

• Sehr hohe Rechenzeit

• Blickwinkelunabhängiges Verfahren

Page 8: Graphische Datenverarbeitung IV Dr. Markus Heitz.

Povray

• Persistence of Vision Ray-Tracer

• Einfache Szenenbeschreibungssprache

• Bibliothek mit vordefinierten Materialen, Texturen, Farben

• Platformunabhängig

• Public Domain

• Beispieldateien mit vorgefertigten Szenen

• Parallel Processing auf mehreren vernetzten Rechnern (Rendering Farm)

Page 9: Graphische Datenverarbeitung IV Dr. Markus Heitz.

Beispieldatei: Skyvase.pov

Page 10: Graphische Datenverarbeitung IV Dr. Markus Heitz.

Scene Description Language

• Linkshändiges Koordinatensystem

• Include Dateien:#include "colors.inc" // Farben#include "stones.inc" // Materialien

• Betrachter:camera {

location <0, 2, -3>look_at <0, 1, 2>

}

Page 11: Graphische Datenverarbeitung IV Dr. Markus Heitz.

Objekte

• Kugel:sphere {

<0, 1, 2>, 2texture {

pigment { color Yellow }}

}• Definition von Mittelpunkt und Radius.• texture gibt die Materialeigenschaften an.

Page 12: Graphische Datenverarbeitung IV Dr. Markus Heitz.

Beleuchtung

• Lichtquelle mit Position und Farbe:light_source { <2, 4, -3> color White}

Page 13: Graphische Datenverarbeitung IV Dr. Markus Heitz.

Beispiel

• Beispieldatei: #include "colors.inc” background { color Cyan } camera { location <0, 2, -3> look_at <0, 1, 2> } sphere { <0, 1, 2>, 2 texture { pigment { color Yellow } } } light_source { <2, 4, -3> color White}

Page 14: Graphische Datenverarbeitung IV Dr. Markus Heitz.

Beispiel

Page 15: Graphische Datenverarbeitung IV Dr. Markus Heitz.

Quader

box {

<-1, 0, -1>, // Near lower left corner

< 1, 0.5, 3> // Far upper right corner

texture {

T_Stone25 // Pre-defined from stones.inc

scale 4 // Scale by the same amount in all

// directions

}

rotate y*20 // Equivalent to "rotate <0,20,0>"

}

Page 16: Graphische Datenverarbeitung IV Dr. Markus Heitz.

Zylinder

cylinder {

<0, 1, 0>, // Center of one end

<1, 2, 3>, // Center of other end

0.5 // Radius

open // Remove end caps

texture { T_Stone25 scale 4 }

}

Page 17: Graphische Datenverarbeitung IV Dr. Markus Heitz.

Ebene

plane { <0, 1, 0>, -1

pigment {

checker color Red, color Blue

}

}• Richtungsvektor

• Abstand vom Ursprung

Page 18: Graphische Datenverarbeitung IV Dr. Markus Heitz.

Constructive Solid Geometry

• Vereinigung:

union {

}• Schnittmenge:intersection {

}• Differenz

difference {

}• Merge:

merge {

}

Page 19: Graphische Datenverarbeitung IV Dr. Markus Heitz.

CSG: Beispiel

#declare Lens_With_Hole = difference {

intersection {

sphere { <0, 0, 0>, 1

translate -0.5*x

}

sphere { <0, 0, 0>, 1

translate 0.5*x

}

rotate 90*y

}

cylinder { <0, 0, -1> <0, 0, 1>, .35 }

}

Page 20: Graphische Datenverarbeitung IV Dr. Markus Heitz.

CSG: Beispiel, Fortsetzung

merge {

object { Lens_With_Hole translate <-.65, .65, 0> }

object { Lens_With_Hole translate <.65, .65, 0> }

object { Lens_With_Hole translate <-.65, -.65, 0> }

object { Lens_With_Hole translate <.65, -.65, 0> }

pigment { Red filter .5 }

}

Page 21: Graphische Datenverarbeitung IV Dr. Markus Heitz.

CSG: Beispiel

mit union

mit merge

Page 22: Graphische Datenverarbeitung IV Dr. Markus Heitz.

Differenz: Achtung bei Flächenkoninzidenz

• Falsch:difference {

box { -1, 1 pigment { Red } }

cylinder { -z, z, 0.5 pigment { Green } }

}

Richtig:difference {

box { -1, 1 pigment { Red } }

cylinder { -z*1.01, z*1.01, 0.5 pigment { Green } }

}