Texture mapping: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
+nota disambigua |
no grassetto nel corpo della voce |
||
Riga 1:
[[File:Texturedm1a2.png|thumb|(1) Modello 3D senza texture<br/>(2) Modello 3D con texture|upright=1.3]]
Il '''texture mapping''' in [[computer grafica]] è una tecnica che permette di proiettare una o più [[texture (grafica)|texture]] sulla superficie di un [[modello 3D]], utilizzando le [[Mappatura UV|coordinate UV]]. Essa rende il modello più dettagliato e realistico, inoltre la sovrapposizione di più texture è utilizzata ad esempio per dare degli effetti speciali ai modelli tridimensionali come luce e nebbia. La tecnica, in particolare nelle [[animazione digitale|animazioni]] 3D, unisce la rapidità di calcolo della grafica poligonale alla ricchezza di dettaglio delle immagini in [[grafica raster]].
Line 19 ⟶ 17:
Si consideri una scena con un pavimento ligneo, e si determini che il colore diffuso del pavimento sia controllato da un'immagine che mostra assi del pavimento con una grana lignea. A prescindere che si stia utilizzando il [[ray tracing]] o la [[rasterizzazione]], il codice dello shading che calcola il colore per un punto di intersezione raggio-superficie o per un frammento generato dal rasterizer, necessita di sapere il colore della texture nello shading point, in modo da usarlo come colore diffuso nel modello di shading lambertiano.
Per ottenere questo colore, lo [[shader]] esegue un
<pre>
Color texture_lookup(Texture t, float u, float v) {
Line 35 ⟶ 33:
</pre>
In questo codice, lo shader chiede alla superficie dove guardare nella texture, e in qualche modo ogni superficie che si desideri ombreggiare usando una texture necessita di essere in grado di rispondere a questa richiesta. Questo porta al primo ingrediente chiave del texture mapping: abbiamo bisogno di una funzione che esegua una [[Mappatura UV|mappatura]] dalla superficie alla texture, che possiamo calcolare facilmente per ogni pixel. Questa è la
<math display="block">\begin{align} \phi & : S \rightarrow T \\ & : (x,y,z) \mapsto (u,v) \\ \end{align}</math>
[[File:Texture mapping space.png|miniatura|upright=1.5|Texture space per (a) texture map 1D, (b) texture map 2D, e (c) texture map 3D]]
L'insieme <math>T</math>, spesso chiamato "
Per il caso del pavimento di legno, se il pavimento si trova a essere a una costante <math>z</math> e allineato agli assi <math>x</math> e <math>y</math>, possiamo semplicemente usare la mappatura<ref name=":1" />
Line 45 ⟶ 43:
<math display="block">u=ax; \quad v=by</math>
per alcuni fattori di scala appropriatamente scelti <math>a</math> e <math>b</math>, per assegnare le texture coordinates <math>(s,t)</math> al punto <math>(x,y,z)_{\text{floor}}</math>, e in seguito utilizzare il valore di un ''texture pixel'', o '''texel'''<ref name=":1" />, il più vicino a <math>(u,v)</math>, come valore della texture in <math>(x,y)</math>.
I [[pixel]] da visualizzare sullo schermo, calcolati a partire dai texel, verranno in seguito governati dal filtro della texture. Il metodo più veloce è quello di usare l'[[Metodo dell'interpolazione lineare|interpolazione lineare]] ([[filtro lineare]]), ma l'[[interpolazione bilineare]] ([[filtro bilineare]]) o l'[[interpolazione trilineare]] ([[filtro trilineare]]) tra [[MIP map]] sono quelle più comunemente utilizzate per ridurre l'[[aliasing]], e quindi per aumentare la qualità complessiva dell'immagine. L'applicazione della texture sul modello tridimensionale è compito della [[scheda video]].
|