Come creare una roccia parte 2 – retopology e baking

Nel precedente tutorial , ho spiegato come modellare una roccia con il solo utilizzo del modificatore displace unito all’utilizzo del subdivision surface. E’ possibile rileggerlo a questo link.
Ovviamente il modello così come è stato creato ha un numero spropositato di vertici e quindi , per essere utilizzato in un qualsiasi motore di gioco , deve essere sottoposto a retopology.
Il retopology è quella tecnica che punta alla riduzione delle facce di una mesh, altrimenti modellata e dettagliata utilizzando un alto numero di poligoni (High Poly vs Low Poly).
Ci tengo a precisare che il motore di rendering utilizzato è upBGE ovvero blender game engine internal modificato così da ampliarne la resa in tempo reale e basato sulla versione 2.79b di blender.
UpBGE è gratuito e scaricabile a questo link 

Apriamo il file con il modello di roccia in high poly , deselezioniamo la mesh e creiamo un nuovo cubo. Proprio come nel tutorial precedente , Aggiungiamo un modificatore di subdivision surface con parametro di subdivision view a 2 .
Aggiungiamo un modificatore Shrinkwrap e nel parametro target selezioniamo la mesh della roccia high poly. Vediamo che il cubo cambia forma e si adatta in qualche modo alla mesh high poly di riferimento. Come parametro mode selezioniamo project , come parametro di cull face selezioniamo off  e come direction spuntiamo sia positive che negative .

Se provate ad aumentare il valore di view del subdivision surface , vediamo che più suddivisioni aggiungiamo , più la mesh low poly si adatterà al target.
Con questa tecnica , potremmo creare anche più livelli di LOD (level of detail) salvando la mesh con un numero crescente di suddivisioni in base al livello di dettaglio che vogliamo raggiungere.
In questo caso , io ho preferito mantenermi sul leggero impostando il valore di subdivision a 3 così da rispettare più o meno la forma del target senza eccedere nei vertici.

 

Non appena siamo convinti del risultato , applichiamo prima il subdivision surface e poi lo shrinkwrap ed ora che abbiamo ridotto il numero di poligoni della roccia , andiamo a fare il bake dei dettagli senza i quali, la nostra mesh low poly sembrerebbe solo una palla informe.
Sempre in questo sito , è stato dedicato un articolo al bake delle texture, quindi se non sapete di cosa stiamo parlando , è il caso che andiate a dargli un’occhiata.

In breve , il bake è quella tecnica che permette di riportare le informazioni di diffuse color , Normal map , Derivate map , Ambient Occlusion , Displace e Specular (ce ne sono molte altre ma a noi servono principalmente queste) partendo da un modello ad alto numero di poligoni all’interno di una immagine che sarà poi riportata sul modello low poly. Vediamo come :

Prima di tutto , per alleggerire la scena , spostiamo la mesh high poly su un altro livello così da avere solo la mesh low poly.
Avendo selezionato la mesh low poly , deselezioniamo tutti i vertici e poi selezioniamo un edge loop che taglia a metà la geometria. per poi cliccare mark seam

    

a questo punto, selezioniamo tutti i vertici e generiamo la uv map tramite unwrap. Se andiamo all’interno dell’uv editor , dovremmo avere una situazione simile a questa.

Disponiamo la uv map come più ci aggrada e poi aggiungiamo una nuova immagine cliccando sul pulsante new in basso.

Andiamo nel pannello delle proprietà di rendering e scorriamo in basso fino a trovare la sezione bake

Selezioniamo prima la mesh high poly , poi la mesh low poly. Come bake mode selezioniamo Normal e poi spuntiamo l’ opzione select to active senza la quale il bake che dobbiamo fare non avrebbe effetto. a questo punto clicchiamo su bake e vediamo come , dopo un poco , all’interno dell’immagine associata alla uv map del modello low poly , compare la normal map generata dal modello high poly

Se il risultato è quello desiderato , salviamo l’immagine così da poterla riutilizzare successivamente all’interno del materiale.
Possiamo salvare la normal map tramite lo shortcut F3 , oppure tramite il menu image , save as file.

Ripetiamo questo passaggio per Derivate map , Ambient occlusion e Displacement map ricordando ovviamente di salvare ogni volta l’immagine generata. Potremmo farlo anche per color ma in questo caso il mio modello non ha un materiale che ne da la colorazione quindi ,ometterò questo passaggio.
Ho preferito fare questa operazione in blender internal perchè non conosco molto bene cycles come motore di rendering però , ovviamente , è possibile fare queste stesse operazione anche utilizzando cycles.
Sapendo creare un materiale roccia in cycles , potreste fare il bake della color map e saltare a più pari la parte riguardante il texturing che affronteremo nel prossimo tutorial.

Torniamo a parcheggiare il modello high poly in un secondo livello e creiamo un nuovo materiale per il modello low poly.
Portiamo il valore di specular intensity a 0 e diffuse intensity ad 1 ed andiamo nella scheda texture aggiungendo le immagini create in precedenza.

Normal map :
  

Ambient Occlusion :

Derivate Map :

Displacement Map :

Volendo dare anche un effetto lucido alla roccia , dovremmo avere bisogno anche della specular map. in mancanza di questo , possiamo duplicare la displacement map (che in questo caso ho utilizzato come bump map) e spuntare le opzioni di specular (intensity , color , hardness) dove ,nella scala di grigi , il nero significa assorbimento totale della luce ed il bianco riflessione totale della luce. Successivamente settare il blend da mix ad add oppure multiply (a seconda dei gusti). 

Giocando un po con l’illuminazione ambientale , la vostra roccia low poly adesso ha le stesse fattezze della roccia high poly (con qualche vertice in meno)