Specular highlight

Ognuna di queste sfere mostra due punti luce bianchi

Per specular highlight o più brevemente highlight, si intende la macchia luminosa che appare su un oggetto lucido quando viene illuminato. In italiano tale termine viene tradotto, nella forma più letterale, con alta luce[1], oppure con punto luce[2] o lumeggiatura[3]. Gli specular highlight sono importanti nella computer grafica 3D, in quanto forniscono un segno visivo forte che suggerisce la forma di un oggetto e la sua posizione rispetto a una sorgente luminosa nella scena.

La riflessione speculare

Figura 1 - L'intensità della riflessione speculare è relativa all'angolo fra la direzione dell'osservatore V e il vettore di riflessione diretta R, corrispondente alla direzione del vettore della luce L

La figura 1 mostra il vettore normale N {\displaystyle {\text{N}}} in un punto Q {\displaystyle {\text{Q}}} su una superficie, il vettore di direzione verso l'osservatore V {\displaystyle {\text{V}}} , il vettore di direzione della luce L {\displaystyle {\text{L}}} , e il vettore di riflessione diretta R {\displaystyle {\text{R}}} calcolato usando l'equazione[4]

R = L 2 N L = L 2 [ L ( N L ) N ] = 2 ( N L ) N L {\displaystyle {\begin{aligned}{\text{R}}&={\text{L}}-2\perp _{\text{N}}{\text{L}}\\&={\text{L}}-2[{\text{L}}-({\text{N}}\cdot {\text{L}}){\text{N}}]\\&=2({\text{N}}\cdot {\text{L}}){\text{N}}-{\text{L}}\end{aligned}}}

I punti luce sono più intensi quando la direzione di riflessione R {\displaystyle {\text{R}}} punta verso l'osservatore, e decresce di intensità quando aumenta l'angolo fra R {\displaystyle {\text{R}}} e la direzione dell'osservatore V {\displaystyle {\text{V}}} . Un modello che produce una resa credibile dei punti luce (ma che non ha alcuna base fisica reale), usa l'espressione[4]

S C max { R V , 0 } m ( N L > 0 ) {\displaystyle SC\max\{{\text{R}}\cdot {\text{V}},0\}^{m}\quad ({\text{N}}\cdot {\text{L}}>0)}

per calcolare il contributo speculare da una singola sorgente luminosa, dove S {\displaystyle S} è il colore di riflessione speculare della superficie, C {\displaystyle C} è l'intensità della luce incidente, e m {\displaystyle m} è detto esponente speculare. L'espressione ( N L > 0 ) {\displaystyle ({\text{N}}\cdot {\text{L}}>0)} è un'espressione booleana che calcola 1 se vera, o altrimenti 0. Questo previene che i punti luce si mostrino su punti della superficie che guardano lontano dalla sorgente luminosa.

L'esponente speculare controlla la nettezza dei punti luce. Un piccolo valore di m {\displaystyle m} produce un punto luce netto che si dissolve per una distanza relativamente larga, invece un grande valore di m {\displaystyle m} produce un punto luce che si dissolve velocemente quando i vettori V {\displaystyle {\text{V}}} e R {\displaystyle {\text{R}}} divergono (figura 2).

Figura 2 - L'esponente speculare m controlla la nettezza del punto luce visibile sulla superficie. Da sinistra a destra, gli esponenti speculari usati per ombreggiare i toroidi sono 2, 10, 50, 100. Il colore della riflessione speculare S è bianco. Rendering realizzato con Blender, con shader diffuso Lambert; shader speculare Blinn; parametri di hardness 2, 10, 50, 100; IOR a 10.000

Le microsfaccettature

Il termine speculare significa che la luce è perfettamente riflessa, in un modo simile allo specchio, dalla sorgente luminosa all'osservatore. La riflessione speculare è visibile solo quando la normale della superficie è orientata precisamente a metà strada fra la direzione della luce incidente e la direzione dell'osservatore; questa è chiamata direzione ad angolo mediano perché biseziona (divide a metà) l'angolo fra la luce incidente e l'osservatore. Perciò una superficie specularmente riflettente mostrerà un punto luce come immagine perfettamente netta e riflessa di una sorgente luminosa. Tuttavia, molti oggetti lucidi mostrano punti luce sfocati. Questo può essere spiegato con l'esistenza di microsfaccettature[5]. Assumiamo che le superfici che non sono perfettamente lisce siano composte da molte sfaccettature davvero piccole, ognuna rappresentato un perfetto riflettore speculare.

Figura 3 - L'angolo fra il vettore normale N e l'halfway vector H può essere anche usato per determinare l'intensità speculare

Dato un halfway vector H {\displaystyle {\text{H}}} (il vettore che giace esattamente a metà strada fra il vettore di direzione dell'osservatore V {\displaystyle {\text{V}}} e il vettore di direzione della luce L {\displaystyle {\text{L}}} [4], vedi figura 3) , la funzione di distribuzione delle microsfaccettature (microfacet distribution function) restituisce la frazione di microsfaccettature il cui vettore normale punta lungo la direzione H {\displaystyle {\text{H}}} . Per superfici ruvide, la funzione di distribuzione di Beckmann[6] è data da

D m ( V,L ) = 1 4 m 2 ( N H ) 4 exp ( ( N H ) 2 1 m 2 ( N H ) 2 ) {\displaystyle D_{m}({\text{V,L}})={\frac {1}{4m^{2}({\text{N}}\cdot {\text{H}})^{4}}}\exp \left({\frac {({\text{N}}\cdot {\text{H}})^{2}-1}{m^{2}({\text{N}}\cdot {\text{H}})^{2}}}\right)}

che descrive la distribuzione dell'orientamento delle microsfaccettature in termini di inclinazione della media di radice quadrata m {\displaystyle m} . Valori grandi di m {\displaystyle m} corrispondono a superfici ruvide che perciò producono un'ampia distribuzione di orientamenti delle microsfaccettature. Valori più piccoli di m {\displaystyle m} corrispondono a superfici più lisce e producono relativamente distribuzioni esigue, che presentano una specularità più netta.

I punti luce sono più intensi quando H {\displaystyle {\text{H}}} punta nella direzione del vettore normale N {\displaystyle {\text{N}}} .[4]

La funzione data dall'equazione sopra è isotropica, ciò che è invariante sotto la rotazione attorno al vettore normale N {\displaystyle {\text{N}}} .[4] Purché l'angolo fra la direzione dell'osservatore V {\displaystyle {\text{V}}} e la direzione della luce L {\displaystyle {\text{L}}} rimanga costante, e l'angolo fra ognuno di questi vettori e il vettore normale rimanga anch'esso costante, la distribuzione delle microsfaccettature rimane allora costante. Molte superfici, tuttavia, possiedono differenti gradi di ruvidità per differenti direzioni. Queste superfici sono dette riflettori anisotropici e includono materiali come per esempio metallo spazzolato, capelli, e alcuni tipi di tessuto.[4]

Possiamo modificare la funzione di distribuzione delle microsfaccettature per fornire la spiegazione della ruvidità delle superfici anisotropiche, cambiando l'equazione soprascritta in

D m ( V,L ) = 1 4 m x m y ( N H ) 4 exp [ ( ( T P ) 2 m x 2 + 1 ( T P ) 2 m y 2 ) ( N H ) 2 1 ( N H ) 2 ] {\displaystyle D_{\text{m}}({\text{V,L}})={\frac {1}{4m_{x}m_{y}({\text{N}}\cdot {\text{H}})^{4}}}\exp \left[\left({\frac {({\text{T}}\cdot {\text{P}})^{2}}{m_{x}^{2}}}+{\frac {1-({\text{T}}\cdot {\text{P}})^{2}}{m_{y}^{2}}}\right){\frac {({\text{N}}\cdot {\text{H}})^{2}-1}{({\text{N}}\cdot {\text{H}})^{2}}}\right]}

dove m {\displaystyle {\text{m}}} è un vettore bidimensionale di ruvidità, T {\displaystyle {\text{T}}} è la tangente alla superficie allineata alla direzione nella quale la ruvidità è m x {\displaystyle m_{x}} , e P {\displaystyle {\text{P}}} è la proiezione normalizzata dell'halfway vector H {\displaystyle {\text{H}}} sul piano tangente:

P = H ( N H ) N H ( N H ) N {\displaystyle {\text{P}}={\frac {{\text{H}}-({\text{N}}\cdot {\text{H}}){\text{N}}}{\|{\text{H}}-({\text{N}}\cdot {\text{H}}){\text{N}}\|}}}

Note

  1. ^ Francesco Siddi, Grafica 3D con Blender.
  2. ^ Dizionario Online Wordreference.com, su wordreference.com.
  3. ^ Dizionario ilRagazzini 2017, Zanichelli.
  4. ^ a b c d e f Eric Lengyel, Mathematics for 3D Game Programming and Computer Graphics, 3ª ed..
  5. ^ Pagina sugli Specular Shaders del Blender Reference Manual [collegamento interrotto], su docs.blender.org.
  6. ^ Petr Beckmann, André Spizzichino, The Scattering of Electromagnetic Waves from Rough Surfaces, 1963.

Bibliografia

  • Bruce Walter, Stephen R. Marschner, Hongsong Li, Kenneth E. Torrance, Microfacet Models for Refraction through Rough Surfaces, 2007

Voci correlate

  • Riflessione (computer grafica)
  • Ombreggiatura
  • Shader
  • Computer grafica 3D