giovedì 28 luglio 2016

Terminologia per Programmazione di Videogiochi #2: Texture e UV Mapping

Continua il glossario per programmatori di videogiochi con la seconda parte! Questa volta vedremo le Texture e come sono applicate.












<- Parte #1: Poligoni e Mesh

Parte #3: AO e Diffuse Map ->




Termini trattati

  • Texture
  • Texture Mapping
  • Rendering
  • UV Mapping
  • UV Unwrapping

La scorsa volta abbiamo visto che per creare una mesh per il nostro gioco si ricorre ai poligoni. Tuttavia la mesh così com'è risulta spoglia e senza colori, mancando di realismo. Certo, si potrebbe assegnare un colore ad ogni poligono manualmente, ma in ogni caso si avrebbe un risultato piatto. Ci viene quindi in aiuto il concetto di Texture.

Una texture non è altro che un'immagine 2D che viene usata per rivestire un modello tridimensionale, in modo che abbia un aspetto realistico (colori, sfumature, dettagli). Il processo in cui si applica la texture all'oggetto "vestendolo" è detto texture mapping.
Quando un modello 3D viene caricato nella scena di gioco, la sua texture viene caricata in memoria assieme ad esso, in modo tale che sia sempre disponibile nel momento in cui si effettua il rendering. Notare, quindi, che anche se un oggetto non è visibile in scena in quel momento perchè magari il suo renderer è disattivo (cioè viene esplicitamente chiesto di non renderizzarlo), la sua texture è in memoria e occupa spazio prezioso!

Come dicevamo, data quindi una texture la si vuole applicare al modello 3D. Questo processo è detto UV mapping e si basa sullo "srotolare" l'oggetto 3D in modo che le sue coordinate corrispondano  su un piano a due dimensioni. Mi spiego meglio. Guardate la seguente immagine:


Come vedete, il cubo 3D viene srotolato su un piano 2D in modo che sia piatto. Questa fase viene detta UV Unwrapping. Ora, l'oggetto srotolato ha delle coordinate a due dimensioni: la U, che corrisponde alla classica X del piano cartesiano, e la V, che corrisponde alla Y. Semplicemente vengono chiamate così per non confonderle con la x e la y del modello 3D.
Avendo quindi l'oggetto su un piano bidimensionale, dato che la nostra texture è a due dimensioni, ci viene facile sovrapporre i le due cose in modo che corrispondano (la mappatura, appunto). Si prende cioè la texture e si fanno corrispondere le sue coordinate con quelle dell'oggetto srotolato.

Quindi ricapitolando: srotolo l'oggetto (unwrap), applico la texture alle nuove coordinate (mapping), ho creato la texture map.

Nessun commento:

Posta un commento