Computergrafik

Beleuchtung und Schattierung

Motivation

3D-Wahrnehmung nur durch Schattierung möglich (shape from shading)

ohne Beleuchtung & Schattierung

mit Beleuchtung & Schattierung

BRDF (bidirectional reflection distribution function​)

Bild: T. Thormählen

f_r(v,l) = \frac{dL_0(v)}{dE(l)}
  • Die BRDF \( f_r \) beschreibt winkelabhängigen spektralen Reflexionsfaktor einer Oberfläche durch das Verhältnis von reflektierter Strahldichte \( L_0 \) zur einfallenden Bestrahlungsstärke \( E \):
  • \( v\): eingehende Richtung
  • \( l\): ausgehende Richtung
  • \( l\): Oberflächennormale

Einfallswinkel = Ausfallswinkel

BRDF (bidirectional reflection distribution function​)

spiegelnd

glänzend

diffus

Bild: T. Thormählen

BRDF (bidirectional reflection distribution function​)

Bild: Yahku le Roux (Blenderkit)

Quelle: AmbientCG 

Wie finde ich
die passenden
Parameter für
mein Objekt?

BSDF (bidirectional scattering distribution function)

  • BSDF fasst BRDF und BTDF (Bidirectional Transmittance Distribution Function) zusammen
    • wird z.B. in Blender genutzt

BSDF (bidirectional scattering distribution function)

Parameter wurden gemessen
MERL dataset

Ziel: Einfache Definition von
Materialeigenschaften (Disney BSDF)

Die meisten Engines haben eigene Material Designer 

BSDF (...​)

Lichtanteile

  • Ambient: beschreibt das globale Umgebungslicht (keine Richtung)
  • Diffuse:  beschreibt Licht, das von einer rauen Oberfläche in alle Richtungen gleichmäßig gestreut wird
    • Entsteht, wenn Licht auf eine matte Oberfläche trifft
    • Hängt vom Einfallswinkel des Lichts ab
  • Specular: beschreibt gerichtete Reflexionen (Glanzlichter)

    • Entsteht auf glatten/glänzenden Oberflächen (z. B. Metall)
    • Abhängig von Blickrichtung und Lichtquelle

Blinn-Phong BRDF

  • Statt des reflektierten Strahls wird die Winkelhalbierende h verwendet:
h = \frac{l+v}{|l+v|}

Bild: T. Thormählen

  • schnelle Berechnung, da da keine Reflexionsvektoren bestimmt werden müssen (teuer, da für jedes Fragment durchgeführt)
  • Modell nutzt ambienten, diffusen und
    spekularen Lichtanteil

Blinn-Phong BRDF (Beispiel)

Beispiel: Link

pencil

live

Microfacetten BRDF

Bild: T. Thormählen

f_s(v,l) = \frac{F(v,h)\,D(h)\,G(l,v)}{4\,|\vec{n}\cdot l|\,|\vec{n}\cdot v|}
  • F: Fresnel Reflexionsgrad
  • D: Rauheitsanteil (Verteilung der Facetten)
  • G: Geometriefaktor (Selbstverschattung)
  • Oberfläche besteht aus Mikrofacetten
    • diese sind deutlich kleiner als Pixel
    • Je rauer die Oberfläche, desto variabler die Orientierung (der Mikrofacetten)
  • Grundlage für Physically-based Rendering
    • wird in aktuellen Engines (u.a. Unreal) genutzt

l: eingehende
Richtung (Licht)

l: ausgehende
Richtung (Licht)

Fresnel

Animation: Shadertoy

  • Verhältnis reflektierter / transmittierter Strahlungs­energie hängt ab von:
    • Einfallswinkel der Lichtstrahlen
    • Brechungsindizes der Materialien
F(v,h)

Bild: T. Thormählen

Fresnel

Bild: T. Thormählen

  • Übergang von optisch dünneren zu optisch dichterem Medium:
    • Strahl wird zur Normalen hin gebrochen
  • Sonst: Strahl wird von der Normalen weg gebrochen
\begin{align*} F_{\mathrm{para}} &= \frac{\eta_2 \cos\theta_1 - \eta_1 \cos\theta_2} {\eta_2 \cos\theta_1 + \eta_1 \cos\theta_2} \\ F_{\mathrm{perp}} &= \frac{\eta_2 \cos\theta_2 - \eta_1 \cos\theta_1} {\eta_2 \cos\theta_2 + \eta_1 \cos\theta_1} \\ F &= \frac{1}{2} \left( F_{\mathrm{para}}^2 + F_{\mathrm{perp}}^2 \right) \end{align*}

η1η1: Brechungsindex (Medium 1)

η2η2: Brechungsindex (Medium 2) 

θ1θ1: Einfallswinkel

θ2θ2: Brechungswinkel 

Polarisation parallel
(zur Einfallsebene)

Polarisation senkrecht
(perpendikular zur Einfallsebene)

Vakuum1
Luft~1
Wasser1.3
Glas1.5
Diamant2.4

Schattierung

Planare Schatten

  • Ansatz: Objekt wird auf planare Ebene projiziert
  • Projektion auf Ebene \( z = 0 \) mit:
T_{\text{shadow}}= \begin{pmatrix} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 1 \end{pmatrix}
\hat{P} = A\, \underbrace{ T_{\mathrm{cam}}^{-1}\, T_{\mathrm{shadow}}\, T_{\mathrm{obj}} }_{T_{\mathrm{modelview}}} \,P

Bild: T. Thormählen

Planare Schatten

  • Ansatz: Objekt wird auf planare Ebene projiziert
  • Projektion auf Ebene \( z = 0 \) mit:
T_{\text{shadow}}= \begin{pmatrix} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 1 \end{pmatrix}
\hat{P} = A\, \underbrace{ T_{\mathrm{cam}}^{-1}\, T_{\mathrm{shadow}}\, T_{\mathrm{obj}} }_{T_{\mathrm{modelview}}} \,P

Bild: T. Thormählen

Planare Schatten

Bild: T. Thormählen

  • Auf Ebene projizierter Teil wird im Schatten schwarz
    diffuser + spekularer Anteil
  • Herausforderung: Ambienter Anteil soll im Schatten erhalten bleiben
    ➔ Lösung: 2x mal Rendern (und Ergebnisse mit Alpha-Blending kombinieren)

Z-Buffer-Algorithmus (Wiederholung)

  • Tiefenspeicherung pro Pixel statt Sortierung
  • Zusätzlicher Depth Buffer speichert z-Werte (=Tiefenwerte)
  • Sichtbar bleibt immer das Fragment mit der geringsten Tiefe

Bild: Zeus (adaptiert)

Eingabe: 3D-Szene

Ausgabe: Z-Buffer (Tiefenbild)

Shadow Mapping (Prinzip)

  1. Kamera wird an Position  (inkl. Orientierung) der Lichtquelle verschoben
  2. Aus Sicht der Lichtquelle wird ein Tiefenbild (➔ Z-Buffer) erzeugt
  3. Aus Original-Kamerasicht wird für jedes Fragment (=Pixel) die Differenz bestimmt aus:
  • euklidische Distanz Lichtquelle <-> Punkt \( z \) 
  • Distanz zum nächsten Objekt in Richtung des Punkts (von Lichtquelle) \( \hat{z} \)
  • Wenn \( \hat{z} < z \) dann liegt Fragment im Schatten (wird verdeckt)

Shadow Mapping (Beispiel)

pencil

live

✅ Zusammenfassung

  • Schattierung ist wichtig für realistische Darstellung in 3D
  • Blinn-Phong als einfaches Reflexionsmodell
  • BRDF, BTDF und Materialieneigenschaften
  • Physically-based rendering
    • Microfacet BRDF
    • Fresnel-Effekt
  • Schattierung mit:
    • einfachen (und effizienten) Verfahren ➔ Planare Schatten
    • komplexeren Verfahren wie ➔ Shadow Mapping

mit Beleuchtung & Schattierung

CG8 Beleuchtung und Schattierung

By blackbill

CG8 Beleuchtung und Schattierung

  • 4