Utente:Davi.trip/Sandbox: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Davi.trip (discussione | contributi)
Nessun oggetto della modifica
Davi.trip (discussione | contributi)
Nessun oggetto della modifica
Riga 28:
=== Shading costante ===
[[File:Dolphin triangle mesh.svg|miniatura|Esempio di shading costante]]
La tecnica più semplice di ombreggiatura è il flat shading o shading costante dove, per prima cosa, un vertice di ciascun triangolo della mesh poligonale viene scelto come vertice chiave per quel triangolo.<ref name=":7">{{Cita|Hughes|pp. 127-128}}</ref> L'equazione di illuminazione viene eseguita per calcolare il valore di illuminazione per quel vertice, e l'intero triangolo viene riempito con una copia di quel valore.<ref name=":7" /> Questa tecnica può risultare appropriata per le piramidi, ma quando una mesh di triangoli approssima una superficie curva, risulta evidente che è necessaria una tecnica più sofisticata.<ref name=":7" /> Incrementare il numero di facce aiuta a migliorare il risultato, ma l'approssimazione resterà ancora apparente.<ref name=":7" /> Tentare di risolvere il problema con un mero incremento della risoluzione della mesh è sia costoso (in termini di memoria/elaborazione), sia inefficace<ref name=":7" />, perché la differenza percepita nell'ombreggiatura che coinvolge sfaccettature adiacenti viene accentuata dall'effetto Mach banding (scoperto da Mach nel 1865), il quale esagera il cambiamento di intensità in ogni spigolo dove vi è una discontinuità in termini di variazione di luminosità.<ref name=":13">{{Cita|Foley|pp. 735-736}}, «The simple solution of using a finer mesh turns out be surprisingly ineffective, because the perceived difference in shading between adjacent facets is accentuated by the Mach band effect (discovered by Mach in 1865), which exaggerates the intensity change at any edge where there is a discontinuity in magnitude or slope of intensity. At the border between two facets, the dark facet looks darker and the light facet look lighter.»</ref> Vicino al bordo tra due bande, la banda scura sembra più scura e quella chiara più chiara.<ref name=":13" />
 
«The simple solution of using a finer mesh turns out be surprisingly ineffective, because the perceived difference in shading between adjacent facets is accentuated by the Mach band effect (discovered by Mach in 1865), which exaggerates the intensity change at any edge where there is a discontinuity in magnitude or slope of intensity. At the border between two facets, the dark facet looks darker and the light facet look lighter.»</ref> Vicino al bordo tra due bande, la banda scura sembra più scura e quella chiara più chiara.<ref name=":13" />
 
=== Gouraud shading ===
Line 43 ⟶ 41:
 
Per calcolare l'intensità in <math>I_a</math>, <math>I_p</math> e <math>I_b</math>, conoscendo l'ordinata <math>y_s</math> di una ''scan line'' e le intensità ai vertici <math>I_1</math>, <math>I_2</math>, <math>I_3</math>, si possono usare le seguenti formule:<ref name=":8" />
 
[[File:Gouraud-interpolation.png|miniatura|Interpolazione dell'intensità lungo gli spigoli di un poligono e le scan line]]
<math>I_a=I_1-(I_1-I_2)\frac{y_1-y_s}{y_1-y_2}</math>
 
<math>I_b=I_1-(I_1-I_3)\frac{y_1-y_s}{y_1-y_3}</math>
 
<math>I_p=I_b-(I_b-I_a)\frac{x_b-x_p}{x_b-x_a}</math>[[File:Gouraud-interpolation.png|miniatura|Interpolazione dell'intensità lungo gli spigoli di un poligono e le scan line]]
 
=== Phong shading ===
Nel Phong shading, invece di interpolare le intensità di colore ottenute nei vertici, si interpolano le normali ottenute sui vertici di ciascun poligono per determinare la normale associata a ciascun pixel.<ref>{{Cita|Zingaretti|pp. 138-139}}</ref> L'equazione di illuminazione non è calcolata nei soli vertici, ma si calcola in tutti i pixel interni al triangolo usando, pixel per pixel, il vettore normale calcolato interpolando linearmente e rinormalizzando le normali nei vertici.<ref>{{Cita|Scateni|pp. 166-168}}</ref>[[File:Phong shading.svg|miniatura|alt=|Schema del Phong shading]]Gli step del Phong shading sono quindi:<ref>{{Cita pubblicazione|autore=|titolo=Illumination Models and Shading|rivista=|editore=Brandeis University|volume=|numero=|lingua=en|accesso=21 dicembre 2018|url=http://www.cs.brandeis.edu/~cs155/Lecture_16.pdf}}</ref><ref>{{Cita|Phong|p. 315}}</ref>
Line 75 ⟶ 72:
*<math>\mathrm{L}_i</math> è il versore che punta verso la sorgente luminosa
*<math>\mathcal{S}</math> è il colore della riflessione speculare della superficie
*<math>\mathrm{H}_i</math> è il versore, detto ''halfway vector''<ref>{{Cita|Scateni|p. 176}}, «La sua presenza è dovuta a una modifica di Blinn dell'equazione di illuminazione di Phong. Si sostituisce al prodotto scalare R·V il prodotto scalare N·H dove H è il vettore, normalizzato, sulla bisettrice dell'angolo formato dai vettori L e V. R è la direzione di riflessione ideale.»</ref> (che giace esattamente a metà strada tra il versore all'osservatore <math>\mathrm{V}</math> e il versore alla sorgente luminosa <math>\mathrm{L}</math>), per l'''i''-esima sorgente luminosa, dato da <math>\mathrm{H}_i=\frac{\mathrm{L}_i+\mathrm{V}}{\|\mathrm{L}_i+\mathrm{V}\|}</math>
*<math>\mathrm{H}_i</math> è il versore, detto ''halfway vector''<ref>{{Cita|Scateni|p. 176}}
 
«La sua presenza è dovuta a una modifica di Blinn dell'equazione di illuminazione di Phong. Si sostituisce al prodotto scalare R·V il prodotto scalare N·H dove H è il vettore, normalizzato, sulla bisettrice dell'angolo formato dai vettori L e V. R è la direzione di riflessione ideale.»</ref> (che giace esattamente a metà strada tra il versore all'osservatore <math>\mathrm{V}</math> e il versore alla sorgente luminosa <math>\mathrm{L}</math>), per l'''i''-esima sorgente luminosa, dato da <math>\mathrm{H}_i=\frac{\mathrm{L}_i+\mathrm{V}}{\|\mathrm{L}_i+\mathrm{V}\|}</math>
*<nowiki/><math>m</math> è detto ''esponente speculare'', e controlla la nettezza del punto luce (''specular highlight'')
*<math>(\mathrm{N\cdot\mathrm{L}}_i>0)</math> è un'espressione booleana che restituisce 1 se vera e 0 se falsa, la cui funzione è prevenire la comparsa di punti luce sulla superficie in punti distanti dalla sorgente luminosa