Grafica – Normal e AO Maps

Come già detto è possibile creare le varie Textures usando programmi creati adhoc o plugin di programmi di grafica, se non sai a cosa servono le Textures in questione rileggi l’articolo specifico sui tipi di Textures usate nei video giochi. Di sicuro usare uno dei metodi sopracitati è facile e veloce, ma non sempre il risultato è quello voluto, cioè le Textures mancano di realismo, anche se il gioco che stai realizzando non lo richiede; la soluzione migliore per creare delle Textures (o mappe che dir si voglia) è usare una versione high poly del modello che vuoi texturizzare e fare il bake delle mappe su un modello low poly. Ti ricordo che quando si creano i modelli per un gioco è buona norma avere il minor numero di poligoni possibili, perché il motore di gioco (non solo Blender) renderizzi i frame più velocemente. In questo tutorial vedrai come è possibile con Blender (quindi senza usare nessun programma esterno) fare il bake della Normal Map e dell’Ambient Occlusion, che sono due delle Textures principali che si trovano oramai in tutti i giochi. Per velocizzare il lavoro ho preparato un file che puoi scaricare QUA, se hai un tuo file la procedura è uguale, l’importante è che tu abbia due mesh modellate, una low poly e una high poly.

Normal Map

Cos’è una Normal Map ? La parola stessa dovrebbe farti venire in mente le normali dei poligoni che compongono una mesh, in effetti è proprio quello, Blender (come altri programmi) calcola le normali dei poligoni del modello high poly e le trasferisce su una Texture (quindi un’immagine bidimensionale) usando i colori RGB (rosso, verde e blu), dove il blu definisce la profondità, il rosso e il verde la direzione destra e sinistra, sopra e sotto. Detto questo passiamo alla pratica. Apri il file che hai scaricato, trovi una sorta di muro a mattoni ed un piano, quello che voglio fare è creare una Normal Map per poi applicarla ad un piano semplice. Quindi come prima cosa inserisci un piano e scalalo di 2 unità (Shift+A -> Plane e S2), se scali il piano in Object Mode devi applicare lo scaling CTRL+A; sposta il piano leggermente più in alto in modo che si trovi quasi a contatto con le mesh sottostanti. Vai in Edit Mode (tasto TAB, quello vicino alla Q) ed esegui un’unwrap semplice (oramai dovresti sapere come si fa), apri l’UV/Image Editor e crea una nuova Texture, rinominala Normal e premi ok, lascia pure il settaggio di default non importa per questo tutorial. Hai ora una Texture su cui Blender può imprimere le informazioni dei poligoni della mesh sottostante, vai sulla finestra delle proprietà con l’icona della macchina fotografica, in basso c’è la tab del bake (l’hai già vista nell’articolo precedente), prima di premere il pulsante e fare partire il bake c’è bisogno di selezionare le mesh in modo che il piano low poly, quello appena inserito, sia l’oggetto attivo, quindi seleziona prima i due oggetti sottostanti e poi per ultimo il piano. Come puoi notare i due oggetti sono arancioni mentre il piano è giallo, quindi è l’oggetto attivo, se non dovesse essere così rifai la selezione in modo che sia l’oggetto attivo. Altra cosa che sicuramente avrai notate è che la mesh high poly non ha nessuna Texture, questo perché a noi non interessa fare il bake di una Texture o di un Materiale particolare ma dei poligoni stessi. Ultimo accorgimento è di mettere la spunta su Select to Active nella tab del Bake, come da figura 

Lascia tutto com’è e clicca il tasto Bake. A questo punto dovresti avere la Normal Map già pronta, bisogna attivarla. Inserisci un materiale e sulla finestra delle Textures scegli l’unica che c’è come immagine, ti ricordo inoltre che devi visualizzare il tutto in modalità GLSL e in Texture mode. Se hai fatto tutto come da manuale dovresti vedere il piano con i colori della Normal, questo perché c’è un’altro passaggio da effettuare, quello di dire a Blender che questa Texture è una Normal map. Scrollando verso il basso la finestra delle Textures trovi la tab Image Sampling, spunta la casella Normal Map, di default è impostata su Tanget, che è il tipo di Bake che abbiamo fatto, infatti se torni nella tab del bake puoi notare che c’è un menù a tendina per diversi tipi di bake. Come seconda cosa devi cambiare il tipo di influenza sulla tab appunto Influence leva la spunta su Color e mettila su Normal, puoi anche cambiare il valore della barra a seconda di quanto vuoi la Normal faccia capolino (anche invertirla verso il basso se è caso). Ho fatto uno screenshot per farti vedere gli ultimi passaggi

Spostando il piano semplice su un lato puoi notare guardando dall’alto (Tn7) come non c’è molta differenza tra le due mesh, soltanto che una è in alta risoluzione e una ha solo una Normal map, eccoti il mio screen

Naturalmente essendo una Texture non può simulare alla perfezione le geometrie di una mesh e quindi è facilmente individuabile se si guarda da un’angolatura quasi piatta, ma per molti casi è un buon espediente per risparmiare poligoni e per dare un certo realismo al gioco.

Ambient Occlusion

In accoppiata con la Normal Map è di uso comune inserire un’altra Texture che si chiama Ambient Occlusion (sempre spiegata nella pagina citata all’inizio dell’articolo), detta anche semplicemente AO. La procedura è la stessa per la creazione della Normal, ovvero

  • Crea una nuova Texture, dandogli come nome AO o Ambient Occlusion fai tu.
  • Seleziona gli oggetti in modo da tenere come oggetto attivo il piano semplice.
  • Cambia sulle opzioni del Bake da Normal ad Ambient Occlusion.

Prima però di fare partire il bake c’è una piccola opzione da cambiare per rendere questa Texture più precisa e con meno distorsioni. Vai sulla finestra delle World Properties (quella col mondo per intenderci) e attiva la tab Ambient Occlusion, in realtà non servirebbe perché il bake lo esegue lo stesso, mentre un’opzione importante da cambiare sono i Sample nella tab Gather intorno ai 10-12, se non trovi queste opzioni ti ricordo che sto adoperando il motore di render interno di Blender, come per l’articolo precedente, inserisco un’immagine.

Adesso puoi fare il bake della Texture. Puoi aggiungere sotto la Normal questa nuova Texture e cambiando il valore dell’opzione Color nella tab Influence modificarne l’aspetto. 

Certo questo esempio non è il massimo, ma penso che rende perfettamente l’idea di come fare il bake di queste due Textures che sono una buona base di partenza per realizzare un gioco graficamente accattivante. Come sempre, e non mi stancherò di scriverlo, fai molta pratica e ripeti più volte i passaggi in modo da memorizzarli bene. Un consiglio che posso darti è di modellare le mesh iniziando da una versione low poly, per poi copiarla e aggiungergli dettagli che poi verranno impressi in una Normal Map e AO.