Il modello di ombreggiatura (shading) Blinn-Phong in CG 3D
Il modello di shading (o anche "di riflessione") Blinn-Phong è una versione modificata del modello di ombreggiatura Phong.
Tale modello rappresenta lo shader di default in OpenGL. Viene eseguito durante la pipeline di rendering su ciascun vertice da elaborare.
In questo modello entrano in gioco -in una prima versione- tre vettori:
-
R, vettore del raggio riflesso dalla superficie;
-
L, vettore del raggio luminoso incidente;
-
V, vettore che va dalla superficie all'osservatore.
In questo caso bisogna calcolare R·V per ogni superficie (ogni faccia, composta da vertici) e per ogni sorgente luminosa i cui raggi colpiscono tale superficie.
Calcolando invece il vettore "intermedio":
(cliccare sull'immagine per ingrandirla)
si può calcolare, al posto della relazione R·V la relazione N·H, con N che è il vettore normale (e normalizzato) della superficie in esame.
In tutti i casi, il prodotto · tra i vettori è il prodotto scalare, ossia il prodotto dei moduli dei vettori componenti moltiplicato per il coseno dell'angolo formato dai due vettori.
Il vantaggio, rispetto al modello Phong, sta nel fatto che -considerando luce e osservatore come posti "a infinito" (cosa che succede con le luci direzionali)- è possibile calcolare questo valore una volta sola per ciascuna sorgente luminosa ed utilizzarlo per tutto il frame (o per più frame senza doverlo ricalcolare, a patto ovviamente che luce e osservatore restino in posizioni relative uguali), per cui -in certi casi- le implementazioni di tale modello sono più efficienti di quelle del modello Phong.
E' possibile agire sul valore finale (per far avvicinare l'effetto a quello ottenuto col modello Phong o per ottenere altri effetti) elevando il prodotto (N·H) ad un esponente scelto a piacere.
|