◩ Grafica e immagini

Illuminazione nel 3D: Lambert, Phong e materiali PBR spiegati

Come si calcola la luce su una superficie 3D: riflessione diffusa di Lambert, riflessi di Phong e Blinn-Phong, interpolazione e materiali fisici PBR.

Una sfera senza illuminazione è un cerchio piatto. È la luce a rivelarne la forma: il lato rivolto alla sorgente è chiaro, quello opposto scuro, e su una sfera lucida compare un piccolo riflesso brillante. I modelli di illuminazione sono le formule che calcolano questi effetti per ogni punto di una superficie. Dalle più semplici alle più realistiche, si basano su pochi vettori e su qualche idea fisica.

I vettori in gioco

Per ogni punto della superficie si considerano:

  • N: la normale, perpendicolare alla superficie;
  • L: la direzione verso la sorgente di luce;
  • V: la direzione verso l'osservatore;
  • R: la direzione in cui la luce verrebbe riflessa come da uno specchio.

Tutti normalizzati, cioè di lunghezza 1. Il prodotto scalare tra due vettori normalizzati dà il coseno dell'angolo tra loro: 1 se sono allineati, 0 se perpendicolari, negativo se opposti. Quasi tutta l'illuminazione classica si riduce a prodotti scalari.

La riflessione diffusa di Lambert

Una superficie opaca e ruvida, come la carta o il gesso, diffonde la luce in tutte le direzioni in modo uniforme. La sua luminosità non dipende da dove la si guarda, ma solo dall'angolo con cui la luce la colpisce:

diffusa = colore_superficie × colore_luce × max(0, N · L)

Quando la luce arriva perpendicolare (N · L = 1) la superficie è al massimo; quando arriva radente, l'energia si distribuisce su un'area più grande e la superficie appare più scura. Il max(0, …) evita valori negativi per le facce rivolte dalla parte opposta.

I riflessi speculari: Phong e Blinn-Phong

Le superfici lucide mostrano un riflesso che dipende dal punto di vista. Il modello di Phong lo calcola così:

speculare = colore_luce × max(0, R · V) ^ lucentezza

L'esponente lucentezza controlla la dimensione del riflesso: valori bassi danno un alone ampio e morbido, tipico della plastica opaca; valori alti un punto piccolo e netto, come su una superficie laccata.

La variante Blinn-Phong sostituisce R con il vettore intermedio H, a metà strada tra L e V, e usa N · H. È più economica da calcolare e produce riflessi più credibili quando la luce è radente. Per molti anni è stata il modello standard delle schede video.

La luce ambientale

Nella realtà le zone in ombra non sono mai completamente nere, perché ricevono luce rimbalzata dalle altre superfici. I modelli classici approssimano questo effetto con un termine ambientale costante, sommato a diffusa e speculare. È un'approssimazione grossolana, che rende le ombre piatte; tecniche come l'occlusione ambientale e l'illuminazione globale servono proprio a migliorarla.

Dove si calcola: Gouraud e Phong shading

Un dettaglio che genera confusione: "Phong" indica due cose diverse.

Tecnica Dove si calcola la luce Risultato
Flat shading una volta per faccia aspetto sfaccettato
Gouraud shading ai vertici, poi si interpolano i colori liscio, ma riflessi deformati o persi su mesh poco dense
Phong shading per ogni pixel, interpolando le normali riflessi corretti, costo maggiore

Il modello di illuminazione di Phong (la formula) e lo shading di Phong (l'interpolazione delle normali) sono indipendenti. Oggi, con le GPU moderne, il calcolo per pixel è la norma.

Il passaggio ai materiali fisici (PBR)

I modelli classici hanno un difetto: i parametri non hanno un significato fisico preciso, e un materiale che sembra corretto con una luce appare sbagliato con un'altra. Il rendering basato sulla fisica (PBR) introduce alcuni principi:

  1. Conservazione dell'energia: una superficie non può riflettere più luce di quella che riceve. Un riflesso più ampio è anche meno intenso.
  2. Microsfaccettature: una superficie è modellata come un insieme di minuscoli specchi orientati in modo più o meno disordinato. La rugosità (roughness) descrive quanto sono disordinati.
  3. Effetto Fresnel: ogni superficie diventa più riflettente quando la si guarda di taglio. È il motivo per cui un lago riflette il paesaggio verso l'orizzonte ma è trasparente ai nostri piedi.
  4. Metalli e non metalli: nei metalli il riflesso assume il colore del materiale e non c'è componente diffusa; nei non metalli il riflesso è neutro e il colore viene dalla diffusione.

Il flusso di lavoro più diffuso, detto metalness/roughness, descrive un materiale con poche mappe:

  • colore di base (albedo), senza ombre né luci dipinte;
  • metallicità, di solito 0 o 1;
  • rugosità, da 0 (specchio) a 1 (completamente opaco);
  • mappa delle normali, per i dettagli fini della superficie.

Il vantaggio pratico è enorme: lo stesso materiale appare credibile in qualunque condizione di luce, e le texture possono passare da un programma all'altro con risultati coerenti.

Errori comuni

  • Ombre e riflessi dipinti nella texture di colore: con il PBR vanno evitati, perché la luce è calcolata dal motore.
  • Calcoli in spazio gamma: l'illuminazione va calcolata in luce lineare, altrimenti i passaggi tra luce e ombra risultano troppo duri.
  • Normali non normalizzate dopo l'interpolazione: i riflessi appaiono irregolari.
  • Rugosità zero ovunque: nessun materiale reale è uno specchio perfetto; un po' di rugosità rende tutto più credibile.

In sintesi

  • L'illuminazione classica si basa su prodotti scalari tra normale, luce, vista e riflessione.
  • Lambert descrive la luce diffusa, che dipende solo dall'angolo di incidenza.
  • Phong e Blinn-Phong aggiungono riflessi speculari che dipendono dal punto di vista.
  • Gouraud interpola colori, lo shading di Phong interpola normali.
  • Il PBR introduce conservazione dell'energia, rugosità, Fresnel e distinzione tra metalli e non metalli.
MM
Marco Marzaduri

Marco Marzaduri si occupa di cybersecurity, informatica forense e sviluppo web. Laureato in informatica, unisce il rigore dell'analisi tecnica all'attenzione per le persone che usano la tecnologia.

Leggi anche