Traditio et Innovatio – Computergraphik
Einführung und Kontext
Universität Rostock – Vorlesung Computergraphik, Traditio et Innovatio; Lehrstuhl für Visual Computing; Prof. Dr. Oliver Staadt.
3. Ray Tracing als alternatives Rendering-Verfahren zu den traditionellen OpenGL-Pipelines.
OpenGL ist basierend auf einem Pipeline-Modell, in dem Primitives nacheinander gerendert werden; keine echten Schatten (außer durch Tricks oder Mehrfachrenderings); keine Mehrfachreflexionen; Fokus auf globale Ansätze; Rendering-Gleichung, Ray Tracing, Radiosity als globale Illuminationen.
OpenGL-Pipeline und globale Illuminationen
Pipeline-Modell: Primitive werden sequentiell verarbeitet.
Schatten und Reflexionen in OpenGL: fehlen oder werden durch Tricks/Mehrfachrenderings erzielt.
Globale Ansätze vs. lokale Beleuchtung: Ray Tracing und Radiosity als Beispiele für globale Beleuchtung.
Rendering-Gleichung als theoretischer Rahmen für Beleuchtung.
Ray Tracing – Grundprinzip
Ray Tracing verfolgt Lichtstrahlen von einer Punktquelle aus oder vom Auge aus (Ray Casting als Sonderfall).
Kann Reflexion und Transmission (Durchlass von Materialien) berücksichtigen.
Ziel: Realistische Abbildung von Schatten, Spiegelungen, Transparenzen.
Ray Casting vs. Ray Tracing
Ray Casting: Nur Strahlen, die das Auge erreichen, sind relevant; Strahlrichtung umgekehrt; mind. ein Strahl pro Pixel.
Ray Tracing: Erfasst zusätzlich Reflexionen und Transmissionen über rekursive Abbildung.
Ray Tracing ist grundsätzlich rechenintensiv, da Scatterings unendliche neue Strahlen erzeugen kann.
Alternative: Ray Casting reduziert Rechenaufwand, aber geringere Realismusgrad.
Ray Casting – Quadrics
Ray Casting hat sich als Standardmethode zur Visualisierung von Quadric-Objekten (implizite Oberflächen in CSG-Systemen) etabliert.
Constructive Solid Geometry (CSG): Primitive als feste Objekte; Objekte werden durch Mengenoperationen aufgebaut (Vereinigung ∪, Schnitt ∩, Differenz −).
Ray Casting einer Kugel – Grundformel
Ray ist parametrisch:
Kugel als Quadric:
Ray-Substitution führt zu einer quadratischen Gleichung in t:
Diskriminante entscheidet über 0,1 oder 2 Schnittpunkte; Entdeckung von Eintritts- und Austrittspunkten oder kein Schnitt.
Schattenstrahlen
Selbst wenn ein Punkt sichtbar ist, ist er nicht lit, wenn die Lichtquelle vom Punkt aus nicht sichtbar ist.
Schatten- oder Feeler-Strahlen werden ausgeschickt, um zu prüfen, ob eine Lichtquelle erreichbar ist.
Reflexion
Reflexionspfad folgt den Schattenstrahlen von reflektierenden Oberflächen.
Prozess ist rekursiv: reflektierte Strahlen erzeugen weitere Interaktionen.
Reflexion und Transmission
Reflexion und Transmission werden zusammen mit lokalen Beleuchtungsergebnissen kombiniert.
lokale Beleuchtung wird zumeist durch Phong-Modell oder ähnliches bestimmt; Reflexionen und Transmissionspfade additiv integriert.
Ray Trees
Strukturierte Visualisierung von Pfaden durch die Szene; Baumstruktur, in der jeder Abstieg einem Reflexions- oder Transmissionspfad entspricht.
Dienen der Analyse von Rekursionstiefe und Pfadverarbeitung.
Diffuse Oberflächen
Theoretisch erzeugt jede Intersektion unendlich viele neue Strahlen durch Streuung; in Praxis werden häufig nur reflektierte und transmittierte Strahlen verfolgt.
Phong-Modell wird verwendet, um den localen Shade am Intersektionpunkt zu berechnen.
Radiosity eignet sich besonders gut für perfekte diffuses (Lambert'sche) Oberflächen.
Aufbau eines Ray Tracers
Am besten rekursiv ausdrückbar; Rekursion ggf. später entfernt.
Bildbasierter Ansatz: Für jeden Strahl …
Nächsten Schnitt mit der nächstgelegenen Oberfläche finden.
Gesamte Objektdatenbank muss verfügbar sein.
Komplexität der Berechnung limitiert Objekttypen.
Beleuchtung an der Oberflache berechnen.
Verfolgt reflektierte und transmittierte Strahlen.
Wann stoppen? Abbruchkriterien
Bei jedem Schnitt wird ein Teil des Lichts absorbiert; noch verbleibende Helligkeit verfolgen.
Strahlen, die ins Unendliche gehen, ignorieren.
Eine große Sphäre um das Problem herum setzen, um unendliche Wege zu verhindern.
Zähle die Schritte, um eine maximale Rekursionstiefe zu erzwingen.
Rekursiver Ray Tracer – Grundstruktur
Pseudocode-Skizze (gekürzt):
color c = trace(point p, vector d, int step) {
// lokale Beleuchtung, reflektiert, transmittiert
point q; normal n;
if(step > max) return(background_color);
// Schnitt, Normalenberechnung, Reflexion, Transmission
}
Rekursiver Ray Tracer – Details
Intersections-Logik:
Falls Status == light_source: Rückgabe der Lichtquellfarbe.
Falls Status == no_intersection: Rückgabe Hintergrundfarbe.
Normalenvektor: n = normal(q).
Reflexionsrichtung: r = reflect(q, n).
Transmissionsrichtung: t = transmit(q, n).
Farbbeiträge:
local = phong(q, n, r);
reflected = trace(q, r, step+1);
transmitted = trace(q, t, step+1);
Rückgabe: local + reflected + transmitted.
Schnittpunkte – Objekte und Oberflächen
Schnittpunkte-Berechnung für folgende Typen:
Implizite Oberflächen
Quadrics
Ebenen
Polyeder
Parametrische Flächen
Signed-distance-Felder
Implizite Oberflächen
Strahl p0 + t d; p(t) = p0 + t d
Allgemeine implizite Oberfläche f(p) = 0
Schnittpunkte lösen durch f(p(t)) = 0; Allgemeiner Fall erfordert numerische Verfahren.
Quadrics – Allgemeine Form
Allgemeine Quadric: p^T A p + b^T p + c = 0
Substitution der Strahlform p(t) = p0 + t d ergibt eine quadratische Gleichung in t.
Lösung durch Mitführen von Koeffizienten und Diskriminante.
Kugel
Gleichung: (p - pc) b7 (p - pc) - r^2 = 0
Strahl p(t) = p0 + t d
Koeffizienten-Rechnung (Standardform):
Lösungen existieren, wenn Diskriminante >= 0; sonst kein Schnitt.
Ebenen
Ebene: p b7 n + c = 0
Strahl: p(t) = p0 + t d
Schnittpunkt-Terme:
Polyhedra
Abgeleitet aus geschlossener Oberfläche aus Polygonen/Polyhedronen.
Innen/Außen-Tests wichtig; für konvexe Objekte schnelle Tests möglich.
Ray Tracing Polyhedra
Falls Strahl in ein Objekt eintritt, muss er durch eine Vorderflächen-Polygon (front facing) eintreten und durch eine Rückflächen-Polygon (back facing) austreten.
Polyeder entsteht durch Schnitt von Ebenen.
Strahl tritt am weitesten Eintritt mit Front-facing-Ebenen ein und verlässt am nächsten Austritt mit Back-facing-Ebenen.
Falls der Eintritt weiter entfernt ist als der Austritt, verpasst der Strahl das Polyeder.
Ray Tracing eines Polygons
Seitliche Abbildung von Schnittpunkten mit Polygonen; Details im Slider (Seiten 28–29).
Grundidee: Schnittpunkt eines Strahls mit der Polygon-Ebene prüfen, danach ggf. Zugehörigkeits- und Orientierungsprüfungen durchführen.
Ausblick – Nächste Themen
Nächste Vorlesung: Grafik-Pipeline und WebGL.
Verknüpfungen zu Grundlagen und Realwelt
Ray Tracing ergänzt Rasterisierung durch akkurate Modellierung von Lichttransport, Shadowing, Reflexionen und Transparenz.
Unterschiede zu OpenGL-basiertem Rendering: Rechenaufwand, Lösung von globalen Beleuchtungsproblemen, Abhängigkeiten von Rekursionstiefen und Pfad- bzw. Strahl-Verfolgungsstrategien.
Wichtige Begriffe und Modelle
Ray Tracing, Ray Casting, Radiosity
Phong-Beleuchtung, Lambertian (diffuse) Oberflächen
Implicit Surfaces, Quadrics, Planes, Polyhedra, Parametric Surfaces, Signed Distance Fields
Front-facing vs. Back-facing Flächen
Rekursionstiefe, Abbruchkriterien, Hintergrundfarbe
Formeln und Beispiele in Kürze
Strahl:
Kugel:
Kugel-Schnitt:
Ebene:
Implizite Oberflächen:
Allgemeine Quadric:
Diese Notizen geben eine umfassende Übersicht über die im Transkript behandelten Konzepte des Ray Tracings, von den Grundlagen bis zu konkreten Schnittpunkten und Datenstrukturen für die Implementierung eines Ray Tracers.