Modello di riflessione di Phong

Da Wikipedia, l'enciclopedia libera.
bussola Disambiguazione – Se stai cercando la quasi omonima applicazione di questo metodo, vedi Phong shading.

Nella computer grafica 3D, il modello di riflessione di Phong è un modello d'illuminazione ed ombreggiatura per calcolare il colore dei punti appartenenti ad una superficie. Venne sviluppato da Bui Tuong Phong durante la sua discussione di dottorato presso l'Università dello Utah. Questa dissertazione prese il nome di "Illumination for Computer Generated Pictures", venne sostenuta nel 1973, insieme ad un metodo che permetteva l'interpolazione di colore per ogni pixel appartenente ad un poligono rasterizzato. La tecnica interpolativa prende il nome di Phong shading, anche nel caso in cui venga utilizzata con modelli di riflessione diversi da quello qui descritto.

Il modello di riflessione di Phong può essere visto come una semplificazione della più generica equazione di rendering; con il vantaggio di semplificare il calcolo del colore di un punto della superficie:

  1. È un modello di riflessione locale, ovvero non considera riflessioni di secondo ordine, a differenza di quanto fatto dal ray tracing e dal radiosity. Al fine di compensare la perdita di parte della luce riflessa, un'ulteriore luce ambiente viene aggiunta alla scena.
  2. Divide la riflessione in tre fattori, riflessione speculare, riflessione diffusiva e riflessione d'ambiente.

Definiamo per prima cosa, per ogni sorgente luminosa, i componenti i_s e i_d, che sono rispettivamente le intensità (spesso misurate in RGB) dei componenti speculare e diffusivo della luce. Una costante i_a controlla la luce ambiente, e viene a volte calcolata come somma dei contributi forniti dalle varie sorgenti.

Se definiamo, per ogni materiale (che solitamente sono assegnati ai materiali con una relazione 1 a 1):

k_s: costante di riflessione speculare, la percentuale di luce entrante che viene riflessa
k_d: costante di riflessione diffusiva, la percentuale di luce entrante che viene diffusa (riflettenza Lambertiana)
k_a: costante di riflessione d'ambiente, percentuale di riflessione della luce ambiente presente in ogni punto della scena
\alpha: costante di lucentezza del materiale in questione, che decide in quale modo la luce viene riflessa.

Definiamo inoltre \mathrm{lights} come insieme di tutte le sorgenti di luce, N è la normale in questo punto, R è la direzione di un raggio perfettamente riflesso (rappresentato con un vettore), e V è la direzione verso chi guarda (ad esempio una camera virtuale).

Il valore di shading per ogni punto della superficie I_p viene calcolato usando questa equazione, che poi sarebbe il Modello di riflessione di Phong:

I_p = k_a i_a + \sum_\mathrm{lights} (k_d (L \cdot N) i_d + k_s (R \cdot V)^{\alpha}i_s).

Il termine diffusivo non utilizza la direzione V, dal momento che è costante in tute le direzioni, inclusa la direzione della camera. Il termine speculare è grande se il vettore R è quasi allineato con V, valore ottenuto misurando con \alpha il coseno dell'angolo formato tra di essi, ovvero il prodotto scalare dei vettori normalizzati R e V. Quando \alpha è grande, la superficie si presenta simile ad uno specchio, e la dimensione della riflessione sarà minima grazie all'alto valore del coseno che tende rapidamente a zero se i due vettori non sono allineati.

Quando i colori sono rappresentati con valori RGB, questa equazione viene calcolata separatamente per ogni valore della terna.

Quello di Phong è un modello di riflessione empirico, non basato sulla descrizione fisica dell'interazione di luce, ma piuttosto sull'osservazione informale. Phong osservò che le superfici altamente riflettenti creavano un riflesso piccolo, mentre l'intensità di quelle opache diminuiva in maniera più graduata.

Questa equazione può essere rappresentata in modo grafico: Spiegazione grafica dell'equazione di Phong

In questa immagine, i colori "ambiente" e "diffuso" sono gli stessi; notare che l'intensità della componente diffusiva varia al variare della direzione della superficie, mentre la luce ambiente è costante. Il colore speculare è bianco, e riflette quasi tutta la luce entrante, ma solo in un limitato fascio di direzioni.

Metodo di interpolazione Phong shading[modifica | modifica wikitesto]

Exquisite-kfind.png Per approfondire, vedi Phong shading.

Insieme a questo modello di riflessione per la computazione del colore di una superficie, Bui Tuong Phong sviluppò anche un metodo per l'interpolazione del colore di ogni pixel appartenente ad un triangolo rasterizzato. Questi due algoritmi vengono a volte trattati all'unisono assegnandogli il nome di Phong shading.

Voci correlate[modifica | modifica wikitesto]

Informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di Informatica