Daniele Marini, Maurizio Rossi Shading e Smoothing Daniele Marini, Maurizio Rossi
Shading e smoothing Shading: raffigurare poliedri assegnando alle facce una luminosità proporzionale alla luce che ricevono Smoothing: simulare superfici curve descritte da poliedri, mediante tecniche di interpolazione
Shading e somoothing (cont) La luminosità che giunge su una faccia dipende dal suo orientamento verso la sorgente di luce (legge di Lambert) È essenziale conoscere la normale di una faccia Vari metodi di calcolo del vettore n normale ad una superficie
Calcoli sui vettori Vettore normale equazione del piano: ax+by+cz+d=0; si può anche scrivere come luogo: e p è un qualunque punto nel piano; il vettore n è dato da:
In generale possiamo partire da tre punti non allineati: p0, p1, p2 con i quali determiniamo il piano (superfici approssimate con poliedri triangolarizzati). Le differenze p2 - p0 e p1 - p0 sono coplanari e il loro prodotto vettoriale dà la normale: n = (p2 - p0) x (p1 - p0) L’ordine è rilevante
Il calcolo delle normali di superfici curve dipende da come la superficie è rappresentata, ma in generale si stima un gradiente. Es. sfera - equazione f(x,y,z): x2 + y2 + z2 -1=0 In forma vettoriale: f(p): p·p -1 = 0 Il vettore gradiente è dato da:
Se la sfera è rappresentata in forma parametrica il metodo di calcolo cambia: La normale si può ricavare dal piano tangente in p:
Individuano due vettori tangenti il cui prodotto vettore individua la normale - poiché ci interessa solo la direzione si può dividere per cos(u) ottenendo un vettore unitario
Quando calcolare le normali? L’architettura a pipe line dei sistemi di rendering prevede che la normale di una faccia sia nota a priori (viene elaborato un vertice per volta e non tutta l’informazione è disponibile) In generale è compito del programma applicativo calcolare la normale. Le librerie grafiche come OpenGL o linguaggi come VRML permettono di associare a ogni vertice o faccia una normale (che dobbiamo calcolare noi nel programma applicativo) BlueMoon esegue il calcolo delle normali partendo dai dati di geometria
Ancora sulle normali Il calcolo delle normali ha anche interesse per simulare effetti di trasparenza (che non fanno parte del problema base dello shading ...) per poter simulare correttamente il fenomeno della rifrazione
Trasmissione: legge di Snell La luce che colpisce un materiale può essere: Assorbita (trasformata in un’altra forma di energia: calore….) Riflessa (diffusamente e/o specularmente) Trasmessa (diffusamente e/o specularmente) Trasmissione speculare: Rifrazione, governata dalla legge di Snell: 1 2 n1 n2 - denso n1 < n2 + denso
Rifrazione: TIR Fenomeno: riflessione interna totale (TIR) La luce che proviene da un mezzo più denso ad uno meno denso con direzione quasi parallela alla superficie viene riflessa Es. fibre ottiche 90° TIR n1 n2 denso + denso 1 > 90° comporta 2 > TIR con TIR = arcsen(n1 / n2)
La geometria della riflessione P punto campione sulla sup. N normale alla sup. in P V direzione da P a COP L direzione da P a sorgente di luce (se estesa è un punto campione su essa) R direzione di riflessione speculare della sorgente calcolata da N e L
Shading di poligoni (Flat shading) N, V ed L variano su ogni poligono Se si assume osservatore “distante” e sorgente di luce distante V e L sono costanti Anche N è quindi costante sull’intero poligono Il calcolo di shading viene fatto per l’intero poligono una sola volta
Flat shading Flat shading: i poligoni vengono colorati uniformemente indipendentemente dalla posizione dell’osservatore La luminosità del colore del poligono è determinata dall’angolo tra la direzione della normale al poligono e la direzione da cui proviene la luce È molto veloce e consente animazioni real time
Flat shading di poliedri È importante sfruttare informazioni già calcolate nel passare da una faccia alla successiva Si possono organizzare i triangoli di un poliedro in triangle strip, il che permette di risparmiare informazioni sulle normali, ad es. OGL usa la normale del terzo vertice per il primo triangolo, la normale del quarto per il secondo e così via
Triangle strip
Effetti di flat shading Bande di Mach
Smooth shading (interpolato) Ci sono due tecniche di interpolazione: Interpolazione di Gouraud Implementata a livello hardware su tutte le recenti schede grafiche 3D Interpolazione con modello di Phong Implementata a livello hardware solo sulle più recenti e costose schede grafiche 3D
Gouraud Gouraud shading: i poligoni vengono colorati indipendentemente dalla posizione dell’osservatore Si considerano le normali alla superficie nei vertici del poligono e per ognuno dei vertici si calcola l’intensità Nei punti interni al poligono l’intensità non è costante ma determinata dalla interpolazione bilineare di quella nei vertici La continuità cromatica è garantita tra poligoni adiacenti
Gouraud Gouraud shading: attenzione! Sebbene la continuità cromatica tra poligoni adiacenti renda l’aspetto di una superficie curva, questa è sempre e solo poligonale! Si vede dai contorni!
Interpolazione bilineare Interpoliamo lungo Una linea di scansione del poligono Descriviamo i lati in forma parametrica, a è il parametro
Phong Smoothing Basato sull’interpolazione delle normali Il colore si calcola alla fine sul singolo pixel
Gouraud vs. Phong shading hardware veloce continuo fino al I ordine effetti lucentezza limitati (migliorano se si aumenta la triangolazione) Software (hw sulle nuove sch. 3D) Più lento continuo fino al II ordine si può applicare modello di Phong per lucentezza
Confronti Confronto tra Flat, Gouraud e Phong per un modello poligonale (triangoli) a bassa risoluzione Flat Gouraud Phong
Le luci nelle librerie Spesso nelle librerie grafiche (es. OGL) la definizione delle sorgenti è più complessa: In OGL i parametri sono: Posizione (direzione) della sorgente Livelli di Ambiente Diffusa Speculare Associati alla sorgente Ovvero in OGL ogni sorgente produce un contributo di luce ambiente, diffusiva e/o speculare la specularità e diffusività dovrebbero essere viceversa proprietà delle superfici!
Caratterizzare i materiali Occorre assegnare alle superfici caratteristiche di riflettività: diffusiva speculare Rispettando il modello di illuminazione scelto Nei modelli locali la riflettività non ha riferimento colorimetrici o fotometrici, occorrono modelli più avanzati (BRDF BSSRDF ecc.)