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: p(t)=p0+td\mathbf{p}(t) = \mathbf{p}_0 + t\,\mathbf{d}

  • Kugel als Quadric: (pp<em>c)(pp</em>c)r2=0(\mathbf{p} - \mathbf{p}<em>c) \cdot (\mathbf{p} - \mathbf{p}</em>c) - r^2 = 0

  • Ray-Substitution führt zu einer quadratischen Gleichung in t:
    t2(dd)+2t(d(p<em>0p</em>c))+(p<em>0p</em>c)(p<em>0p</em>c)r2=0t^2(\mathbf{d}\cdot\mathbf{d}) + 2t\, (\mathbf{d}\cdot(\mathbf{p}<em>0-\mathbf{p}</em>c)) + (\mathbf{p}<em>0-\mathbf{p}</em>c)\cdot(\mathbf{p}<em>0-\mathbf{p}</em>c) - r^2 = 0

  • 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):
    t2(dd)+2t(d(p<em>0p</em>c))+(p<em>0p</em>c)(p<em>0p</em>c)r2=0t^2 (d \cdot d) + 2 t (d \cdot (p<em>0 - p</em>c)) + (p<em>0 - p</em>c) \cdot (p<em>0 - p</em>c) - r^2 = 0

  • Lösungen existieren, wenn Diskriminante >= 0; sonst kein Schnitt.

Ebenen

  • Ebene: p b7 n + c = 0

  • Strahl: p(t) = p0 + t d

  • Schnittpunkt-Terme: t=p0n+cdnt = -\frac{p_0 \cdot n + c}{d \cdot n}

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: p(t)=p0+td\mathbf{p}(t) = \mathbf{p}_0 + t\,\mathbf{d}

  • Kugel: (pp<em>c)(pp</em>c)r2=0(\mathbf{p} - \mathbf{p}<em>c) \cdot (\mathbf{p} - \mathbf{p}</em>c) - r^2 = 0

  • Kugel-Schnitt: t2(dd)+2t(d(p<em>0p</em>c))+(p<em>0p</em>c)(p<em>0p</em>c)r2=0t^2(\mathbf{d}\cdot\mathbf{d}) + 2t\,(\mathbf{d}\cdot(\mathbf{p}<em>0-\mathbf{p}</em>c)) + (\mathbf{p}<em>0-\mathbf{p}</em>c)\cdot(\mathbf{p}<em>0-\mathbf{p}</em>c) - r^2 = 0

  • Ebene: p(t)=p<em>0+td,t=p</em>0n+cdn\mathbf{p}(t) = \mathbf{p}<em>0 + t\mathbf{d}, \quad t = -\frac{\mathbf{p}</em>0\cdot\mathbf{n} + c}{\mathbf{d}\cdot\mathbf{n}}

  • Implizite Oberflächen: f(p(t))=0f(\mathbf{p}(t)) = 0

  • Allgemeine Quadric: pTAp+bTp+c=0\mathbf{p}^T A \mathbf{p} + \mathbf{b}^T \mathbf{p} + c = 0

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.