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
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
Ray Tracing Licht undurchsichtiges Objekt halbtransparentes Objekt Auge Pixel Bild
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
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)
Beispieldatei: Skyvase.pov
Scene Description Language Linkshändiges Koordinatensystem Include Dateien: #include "colors.inc" // Farben #include "stones.inc" // Materialien Betrachter: camera { location look_at }
Objekte Kugel: sphere {, 2 texture { pigment { color Yellow } } } Definition von Mittelpunkt und Radius. texture gibt die Materialeigenschaften an.
Beleuchtung Lichtquelle mit Position und Farbe: light_source { color White}
Beispiel Beispieldatei: #include "colors.inc background { color Cyan } camera { location look_at } sphere {, 2 texture { pigment { color Yellow } } } light_source { color White}
Beispiel
Quader box {, // Near lower left corner // 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 " }
Zylinder cylinder {, // Center of one end, // Center of other end 0.5 // Radius open // Remove end caps texture { T_Stone25 scale 4 } }
Ebene plane {, -1 pigment { checker color Red, color Blue } Richtungsvektor Abstand vom Ursprung
Constructive Solid Geometry Vereinigung: union { } Schnittmenge: intersection { } Differenz difference { } Merge: merge { }
CSG: Beispiel #declare Lens_With_Hole = difference { intersection { sphere {, 1 translate -0.5*x } sphere {, 1 translate 0.5*x } rotate 90*y } cylinder {,.35 } }
CSG: Beispiel, Fortsetzung merge { object { Lens_With_Hole translate } pigment { Red filter.5 } }
CSG: Beispiel mit union mit merge
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 } } }