Blender: mattoni del muro con il modificatore displace
In questo tutorial per Blender in italiano (aggiornato a Blender 2.93) continuiamo il minicorso su come realizzare un muro in 3D a partire da una foto. Nel tutorial precedente https://www.graphicsandprogramming.net/ita/tutorial/krita/creare-textures-krita/krita-tutorial-mappa-displacement-height-normal abbiamo creato nel software Krita le varie textures (displacement map, height map, normal map, roughness map, specular map) da usare poi come mappe in un programma di modellazione 3D, nel nostro caso Blender. In particolare ora utilizzeremo la mappa di displacement per dare una forma approssimativa ai mattoni del nostro muro utilizzando il modificatore "Displace". Questo metodo facilita le operazioni di modellazione perché, leggendo i dati contenuti nelle mappe delle textures, il software sposta automaticamente i vertici delle mesh, creando in breve tempo delle strutture complesse.
Essendo un esempio a solo scopo didattico, per mostrare il modificatore displace utilizzeremo come struttura di base un semplice piano, le cui dimensioni e proporzioni coincidono con quelle delle textures. Per realizzare questa corrispondenza avviamo il software Blender e importiamo la foto di partenza del muro, che avevamo chiamato "diffuse_map.jpg", con l'addon "File > Import > Images as Planes"
(se l'addon non è presente, potete attivarlo in "Edit > Preferences > Add-ons")
(Questo addon creerà automaticamente anche una "UVMap" per il piano e collegherà la texture importata ad uno shader "Principled")
Quindi posizioniamo la camera e una lampada di tipo "Sun" in modo da poter vedere obliquamente il muro
Diamo alla lampada "Sun" Strength:4.5
selezioniamo il workspace "Shading" e per adesso scolleghiamo dallo shader Principled la texture contenente l'immagine
il metodo displacement sposta i vertici presenti nella mesh, quindi più vertici sono presenti meglio la mesh potrà rappresentare i dati della texture di displacement però, specie in progetti complessi, questo comporterà un aumento considerevole di memoria.
Potremmo suddividere moltissime volte la mesh, ma questo potrebbe causare dei rallentamenti durante la realizzazione di una scena e non potremo più modificare quanto fatto per diminuire il numero di vertici, quindi creiamo una struttura in due parti:una suddivisione di base e poi sopra una realizzata tramite un modificatore "Subdivision Surface", i cui parametri potranno essere modificati in seguito a piacimento. Selezioniamo quindi il piano e, premendo il tasto TAB, commutiamo la modalità di interazione da "Object Mode" ad "Edit Mode", quindi clicchiamo con il tasto destro del mouse sul piano e, nel menu popup che appare, selezioniamo la funzione "Subdivide"
nella finestrella apparsa in basso a sinistra scegliamo il massimo numero di tagli disponibili, cioè 10
potremmo inserire il valore 100 e creare così una suddivisione già sufficiente
ma per il motivo spiegato prima lasceremo il valore 10.
Nella "Properties Window" cliccando sul tab "Modifier Properties" clicchiamo sul menu a tendina "Add Modifier" associamo il modificatore "Subdivision Surface" (che si trova nel gruppo "Generate").
Per evitare che gli angoli del rettangolo del piano si arrotondino
clicchiamo sul pulsantino "Simple"
premiamo il tasto TAB e torniamo in "Object Mode", quindi premiamo zero sul tastierino numerico per attivare la vista camera
clicchiamo ancora su "Add Modifier" e aggiungiamo il modificatore "Displace" (che si trova nel gruppo "Deform")
premiamo sul tasto "New" per associare una texture, ai cui settaggi possiamo accedere in due modi, o premendo il pulsante a destra o cliccando sul tab delle "Texture Properties"
Lasciamo il genere "Displace", diamo un nuovo nome "Displacement map", con Type:Image or Movie, quindi clicchiamo sul pulsante "Open" per caricare l'immagine "displacement_map.jpg" che avevamo creato nel tutorial precedente
e guardando nella viewport notiamo un risultato un po' strano
notiamo due cose: la risoluzione della mesh è ancora troppo bassa per definire i mattoni e che i mattoni emergono troppo.
Per aumentare la risoluzione aumentiamo il valore di "Levels Viewport" nel modificatore "Subdivision" portandolo a 4, cominciando a vedere così in maniera più definita i mattoni
Per diminuire lo spessore degli effetti della texture di displacement, modifichiamo il valore di "Strength" nel modificatore "Displace" dando valore 0.015
è un valore relativamente piccolo, però non bisogna esagerare, perché la texture diffuse che utilizziamo non copre le parti laterali del singolo mattone e quindi potrebbe risultare troppo stirata in tali punti, perciò controllate sempre fin dove potete arrivare e se in alcuni casi lo strumento displace è quello che fa per voi o no (per piccoli rilievi basta una normal map).
Guardando il muro lateralmente, premendo il tasto 3 del tastierino numerico, vediamo che la mesh è diventata realmente più spessa in corrispondenza dei mattoni.
Premiamo il tasto 0 del tastierino numerico per tornare in vista camera e notiamo che però ci sono meno mattoni rispetto alla texture, in quanto sono più grandi.
Questo succede perché nel modificatore "Displace" abbiamo lasciato il sistema di coordinate "Local" mentre avevamo una UVMap. Cambiamo quindi il sistema di coordinate in "UV"
e otteniamo
dove il numero e la posizione dei mattoni corrispondono ora a quello della diffuse map.
Colleghiamo ora la texture diffuse map allo shader Principled BSDF
e nelle "World Properties" inseriamo l'hdri "neurathen_rock_castle_2k.hdr", scaricata dal sito polyhaven.com/hdris come colore per la luce ambientale
in "Object Mode" clicchiamo con il tasto destro del mouse sul piano e selezioniamo "Shade Smooth" per mostrare le facce più smussate
Se ruotiamo attorno al piano e guardiamo nella preview "Rendered", cominciamo a vedere un risultato interessante, con i mattoni ben in rilievo.
Per adesso i mattoni sono solo accennati,
compito del modificatore "Displace" era però creare solo la forma dei mattoni, mentre i dettagli possiamo aggiungerli in seguito, usando la height e la normal map, ma ne parleremo in un altro tutorial.
Salviamo il file come "displacemodifier.blend".
Potete scaricare qui i files di progetto:
displacement_map.jpg
diffuse_map.jpg
displacemodifier.blend
Per questo tutorial sul displace modifier è tutto, nel prossimo vedremo come è possibile ottimizzare il displacement utilizzando il microdisplacement (o adaptive displacement) https://www.graphicsandprogramming.net/ita/tutorial/blender/modellazione/blender-mattoni-adaptive-subdivision-microdisplacement. Happy blending!
Torna al corso "Da una foto a un muro 3D"