Vai al contenuto
Home » Notes » Appunti Texture Mapping

Appunti Texture Mapping

Cos’è il texture mapping?

Il texture mapping è una tecnica della rasterizzazione, e in particolare fa riferimento al processo di applicazione di una o più immagini sulla superficie di un modello 3D.

Idea di base: se la geometria del mio modello 3D è costituita da faccette triangolari 3D, devo sapere applicare una porzione dell’immagine ad ogni triangolo.

Input:

– un modello 3D
– una immagine piana

Output:

– il modello 3D con l’immagine applicata

Vogliamo quindi fare un processo di rasterizzazione non “a colori” ma “con texture”.

Il problema quindi si riduce ad un problema di rasterizzazione a colori in cui dobbiamo scegliere il colore corretto da assegnare ad ogni pixel, recuperando l’informazione dall’immagine.

Trasformazioni Immagini Texture

Consideriamo un punto P’ di un triangolo da rasterizzare.

Vogliamo sapere a quale punto P dell’immagine definita da ABCD corrisponde, così da assegnargli lo stesso colore.

Dobbiamo passare da coordinare floating point dell’immagine in coordinate intere sul triangolo.

Tecniche per fare questo:

– Nearest Neighbour
– Bilinear Interpolation
– Bicubic Interpolation

Nearest Neighbour

Idea di base: prendiamo il pixel più vicino a P corrispondente a P’ semplicemente trasformato nelle coordinate immagine.

Bilinear Interpolation

Interpolazione bilineare in breve: andiamo a calcolare il colore medio (un colore interpolato) dei 4 pixel più vicini al punto P trasformato da P’.

Bicubic Interpolation

L’ultima tecnica accennata è la bicubic interpolation (interpolazione bicubica). Si tratta di una tecnica più costosa ma che può dare risultati più di qualità (inteso di qualità resa del triangolo texturizzato).

Si considerano i colori dei 16 pixel più vicini al punto P trasformato a partire da P’.

Questo algoritmo è quello che viene sfruttato da software di disegno grafico come Photoshop e Gimp.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *