3D Artist: Francesco Furneri
Making Of: Texturing crocodile skin in Substance Painter (prima parte)
Software: Maya,  Zbrush, Substance Painter, Arnold e Marmoset Toolbag

Project Link: https://www.artstation.com/artwork/oA006W

Salve a tutti, mi chiamo Francesco Furneri e sono un 3D Artist con più di 10 anni di esperienza nell'ambito della computer graphics e specializzato in modellazione e texturing.
Ho lavorato in aziende come modeler, rivestendo in alcuni casi il ruolo di technical artist e mi occupo di texturing e rendering presso l'azienda dove attualmente lavoro.
In parallelo, svolgo l'attività da freelancer per aziende negli States, principalmente in merito alla modellazione organica di 3D characters e di texturizzazione di props.

In questa prima parte dell'articolo vorrei illustrare alcune tecniche adottate in ambito texturing per il mio ultimo progetto (Crocodile Project).
Vorrei quindi condividere con voi alcuni aspetti di Substance Painter che in genere sfrutto nella creazione dei materiali e delle mappe per poi procedere, nel prossimo articolo, a parlare di Lighting e Rendering.

Ringrazio il reparto tecnico di Treddi.com per avermi dato la possibilità di condividere con voi questo articolo e spero che troviate la mia spiegazione utile per i vostri progetti.

Analisi del progetto


Il progetto nasce con l'intento di ricreare il modello di un coccodrillo  (nella fattispecie Crocodylus porosus) con le caratteristiche organiche che lo rendono distinguibile dalle altre specie. 

Ho voluto produrre un modello ex novo, partendo dalla modellazione in Maya e creando i micro dettagli con Zbrush.
In questa sede non parlerò del modeling e dello sculpting che seguono essenzialmente un workflow abbastanza standard ma mi concentrerò sull'aspetto del texturing, andando a descrivere, in forma generale lo schema adottato in questo progetto.

Inoltre il modello è stato riggato per poter essere animato in Autodesk Maya.
Per chi fosse interessato, ho realizzato un video tutorial dove presento le caratteristiche del rig:  https://vimeo.com/471736270


3d crocodile

32cf723dab96fe4e013ff7604cae933c.jpg

a312650ed05baa96896ced7a500b4f52.jpg


Substance Painter


Come molti sapranno, Substance Painter rappresenta ad oggi uno strumento utilizzato in moltissimi ambiti professionali per la creazione digitale di 3D materials e textures. In questo progetto ho voluto sfruttare le potenzialità di questo software per poter dettagliare al meglio il mio modello 3D.

Perché Substance Painter?
Innanzitutto occorre fare una breve ma importante premessa sulle feature principali che questo stupendo strumento ci offre:

  • Un approccio al texturing intuitivo da utilizzare, orientato ai livelli (ricordando vagamente photoshop come struttura ) e con un workflow non distruttivo: per non distruttivo si intende la possibilità di disfare alcune azioni, senza comprometterne altre. Un po' nella filosofia di Substance Designer o Houdini, che grazie a tecniche procedurali e a reti a nodi, permettono di variare degli input propagando le modifiche nell'intera struttura.
  • Un'ampia gamma di Pennelli (brushes) per ogni esigenza e anche di pennelli che reagiscono in maniera fisica (es. spray e vernice che cola).
  • Una vasta libreria di mappe procedurali tra cui dirt, grunge maps, per citarne alcune.
  • Un baker integrato con funzionalità di generazione di mappe di output ma anche di mappe intermedie, che potranno essere sfruttate durante il processo di texturing. Anche su questa parte tornerò più avanti con un caso pratico.
  • L'uso delle smart masks che producono maschere al volo, basandosi su texture generate durante il processo di baking.
  • L'uso di materials e smart materials. 

.. per non citare poi l'uso di Alpha, stencils  e molti altri interessanti aspetti.

Ovviamente non andrò a parlare di tutte queste funzionalità, dal momento che non si tratta di un corso di Substance Painter,  ma ne descriverò alcuni nello specifico del mio progetto.

Questa è l'interfaccia principale del progetto su cui ho lavorato:

a0c052964f1544314b3db5f57ae7d599.jpg

A destra la sezione dedicata ai Layers, che sarà quella che guarderemo in linea generale.

Solitamente, nel mio workflow, inizio con un Fill Layer di riempimento e su di esso costruisco le variazioni di colore che ritengo opportune. Per il coccodrillo ho sfruttato diverse reference, individuando i colori chiave: nello specifico,  ho utilizzato un colore più giallino e marroncino( le sue varianti più sature)  per la parte inferiore del corpo, mentre per quella alta sono rimasto su tinte più fredde, partendo da un colore base tendente al grigio / blu scuro, per poi produrre un colore come quello mostrato nei render.
Ho inoltre deciso di contemplare anche delle tonalità tendenti al verde, sfruttate più che altro per aggiungere piccoli dettagli (e.g. alghe e dirt passes intorno alle scaglie).
Quindi, partendo da una palette di colori ben definita si ha già un'idea di base da cui iniziare: a volte si tende erroneamente a colorare subito i dettagli senza pianificare una palette di base.

blob

 Ho cercato di strutturare al meglio i miei livelli. Nei miei Layer ho organizzato le parti in cartelle nel seguente modo:

  • Head Details
  • Tail Details
  • Upper Part
  • Yellow Part

e sopra di essi, alcuni Adjustment Layers generali, per poter apportare degli aggiustamenti finali al modello.

Come ultimo step, ho lavorato sulla roughness che verrà descritta come ultima parte dell'articolo.
Ciascuna cartella citata, contiene un certo numeri di livelli tra cui: livelli di riempimento ma anche paint layers, che sono stati generati a mano attraverso il tradizionale painting sul modello.

Andrò ora a dettagliare un po' il contenuto delle cartelle con la spiegazione delle tecniche impiegate.


Esplorazione dei livelli (parte inferiore)


Iniziamo con il modello privo di texture ma con la normal map applicata ed esportata direttamente da Zbrush.
Come accennato in precedenza, Substance Painter è anche un baker, ossia è in grado di produrre diverse mappe utili nel texturing e il processo di preparazione delle mappe prende il nome di baking.
Prima di iniziare il texturing ho generato alcune mappe tra cui:

  • Curvature Map: mappa che tiene conto delle aree concave e convesse del modello e utile per inserire dettagli come elementi intra scaglie (dirtiness ad esempio).
  • Thickness Map: mappa che misura lo spessore della mesh ed indicata principalmente per produrre effetti di SSS (Sub Surface Scattering).
  • Ambient Occlusion Map: mappa per indicare le soft shadow in aree occluse del modello. Anch'essa utilizzata per arricchire tali aree di dettagli.
  • Position Map: mappa che memorizza la posizione delle parti del modello e utile principalmente per arricchire il texturing con effetto in una certa direzione (tipicamente quella verticale).

Se per ora non è molto evidente l'utilità pratica delle mappe descritte, sicuramente la capirete meglio nel proseguo dell'articolo.
Per ora basti sapere che si tratta di Utility Maps, che semplificano il processo di texturing, andando ad individuare aree del modello dove meglio applicare certi dettagli.


7a96e50baf01026ac94c60de7cc6d3d2.jpg

Consideriamo ora la cartella Yellow Part.
Espandendo i livelli e leggendoli dal basso verso l'alto troviamo:

  • YellowBase: il colore base da applicare al modello 
  • Brown Occlusion: un livello per gestire delle aree più scure in zone occluse del modello
  • Cavities: un layer per inserire una variazione di colore e un po' di dirt tra scaglie in aree concave
  • Dark Cavities: un layer per rafforzare il dettaglio nelle aree concave con l'aggiunta di variazioni per render più interessante il base color

Il tutto viene poi successivamente filtrato per creare un effetto più smooth di transizione tra aree concave e non.

Di seguito l'aggiunta dei diversi layer, fino ad una prima fase di completamento.
Si osserva come ogni layer sia a sua volta suddiviso in sotto parti che includono filtri, paint layers, generators, mappe procedurali, etc.. e questi effetti vengono applicati per produrre una maschera di livello.

Ad esempio, il livello BrownOcclusion che ho costruito (nel riquadro blu) è responsabile dell'inserimento di tinte marroni in aree occluse. Come primo passo, carico l'ambient Occlusion Map e questa viene mostrata nello slot vicino al colore ed associata al sottolivello Fill, successivamente aggiungo un effetto che mi permette di modificare l'istogramma dell'ambient occlusion (Levels) e infine, sul risultato, applico un Paint Layer per modificare manualmente le aree dove non voglio vedere l'effetto applicato. 

Ora è chiaro il significato del livello BrownOcclusion e della mappa Ambient Occlusion (usata come maschera): scelgo un colore e lo vado a mostrare solamente nelle aree chiare della mappa. Questa mappa è il risultato di un intervento sull'istogramma e del painting manuale su determinate parti della maschera.

Nelle aree scure viene preso il colore definito nel livello sottostante, ossia YellowBase: come blending mode ho usato un normal, che altro non è che un alpha blending tra layers, come avviene in Photoshop.

PS. Occorre sempre interpretare i livelli dal basso verso l'alto.

L'aggiunta di dettagli nelle cavità (e.g. layer Cavities), segue lo stesso principio spiegato: si parte da un colore, si aggiunge la Curvature Map  come maschera, generata nel baking. La maschera viene ulteriormente trattata con filtri, istogrammi, generatori per produrne una più personalizzata.
Alla fine le aree chiare prenderanno il colore del layer attuale brown, mentre quelle scure andranno a fondersi con i livelli sottostanti in base al blending mode applicato.

Solo per la cronaca, i generators modificano la texture (es. una maschera) prendendo in genere come input alcune delle mappe create nel baking e con degli slider permettono di definire l'influenza che ha ciascuna di queste mappe per produrre la texture finale.
Si possono anche combinare delle mappe procedurali (e.g. grunge maps) e far blending per definire delle maschere altamente personalizzate.

0c4f15c200aab46dac17faeee12df084.jpg


4691abb79117a0ade89644e051751a3a.jpg


557a17c48580f1cb00b241d562b6662f.jpg

1819397b597c150da77de625eefd37a6.jpg

Ho voluto quindi caratterizzare al meglio le aree tra le scaglie, dove tipicamente si accumula più sporco e residuo di materia.
Per gli altri layers, il processo spiegato è abbastanza analogo, ma vedremo comunque alcune tecniche impiegate per l'aggiunta di dettagli.

Esplorando i livelli (parte superiore)


Per la parte superiore del modello, ho osservato diverse reference per ricercare i dettagli da aggiungere.
Occorre tenere in mente che i coccodrilli vivono la maggior parte del loro tempo in terreni paludosi ed è facile ritrovare una coloritura  più verde in alcune parti, per via della presenza di alghe e di altri elementi naturali.
Per questo motivo ho voluto riprodurre queste caratteristiche in Substance Painter, senza esagerare ma rendendole evidenti in determinate aree.

c5c4300887dc7b32be09e8293ecbedbb.jpg


25a29e05cdff54dc61d3cc102fbb8bdb.jpg

Sono presenti alghe tra una scaglia e l'altra, così come in aree cave e in prossimità dei bordi.
Alcune scaglie, da un'osservazione più accurata riportano pattern irregolari tendenti al bianco / crema che sfumano sul colore bluastro creando un breakup interessante. Inoltre, alcune aree sono deteriorate da agenti di diversa natura e alcune parti di sporco rimangono fisse alla superficie.
Infine, su alcune scaglie sono presenti pattern più puntinati (es. gamba), che differenziano inoltre questa specie da quella di un alligatore.

f4f7b3e678d35c0a167d88db282229a4.jpg


Sono partito da un BaseColor tendente al blu scuro e ho aggiunto poco a poco dettagli nelle cavità, lavorando come spiegato precedentemente su custom masks e generators.
Successivamente ho inserito degli elementi tendenti al verde per caratterizzare di più il modello, costruendo alcune maschere custom che riporto qui sotto: le aree bianche indicano la presenza di verde e sono per lo più presenti tra scaglie, in aree occluse e più verso la parte bassa del coccodrillo, dove il corpo è a contatto con il suolo.

Da notare la creazione della maschera come mix in blending di mappe procedurali (grunge, baked maps, etc..) e paint layer di aggiustamento, per rimuovere o aggiungere manualmente alcune parti.

fd7918e2502b5816cd037f8386ad90d2.jpg

aca5095d58bc70c18fed680fa9919671.jpg

Per i white dots sono stati inoltre impiegati pennelli che ricordano pattern più organici per rompere la monotonia del base color: ricordano in parte il mottling pass che si applica agli elementi organici, introducendo delle linee di rottura

c11f8c8f255ae495ab17530c44b8772c.jpg

Occorre tenere in mente che il processo di texturing è legato per lo più al blending tra i livelli e una buona creazione di maschere facilita la sovrapposizione di parti, senza incorrere in ripetizioni di trame che renderebbero il modello più industriale e meno organico.

Infine, per aggiungere ulteriore breaking up alle parti chiare (Breaking up white) ho creato una maschera partendo da un pattern procedurale (ratio_crystal_1) , a cui ho fatto blend con un'altra mappa (ratio_grunge_map_014), applicato una modifica all'istogramma dei livelli di luminosità ed escluso manualmente alcune parti con un Paint Layer di aggiustamento. Il pattern della maschera riprende in parte gli elementi a chiazze molto pallidi, presenti in alcune specie di coccodrillo.

04dc2a03773a585103948dc2343b0f89.jpg


Tail Details


Per la coda, la tecnica impiegata è molto simile a quella descritta precedentemente: si parte da una colore base generale e si applicano una serie di generators, livelli di aggiustamento, paint layers, etc... per modificare alcune caratteristiche del colore.

15d5c8f7e1702be5f5fe40f32ce0fe40.jpg

Come si può osservare, è stato mantenuto il layer Yellow Part, mascherando però delle strisce verticali random, a cui ho aggiunto elementi come dirtiness ,qualche coloritura verde in basso (sempre per ricordare il verde delle alghe) e ho enfatizzato ulteriormente le cavities tra una scaglia e un'altra.
Da notare che lo sporco presente sopra le scaglie gialle segue una certa direzionalità verticale, quasi come fosse un effetto di leaking che ho osservato in alcune reference reali.
Un consiglio importante, a parte l'osservazione di foto reference, è quello di abituarsi ad immaginare le creature, così in genere gli oggetti non organici, come elementi che vivono in un ambiente, portandosi dietro il risultato della loro interazione con esso: citando il caso del verde, così come della dirtiness, questi colori suggeriscono che il coccodrillo fa parte di un ambiente di palude,  a contatto con il terreno e tutto questo lo rende più vivo e reale.

L'errore che si fa spesso all'inizio è quello di trascurare alcuni dettagli, come quelli citati, procedendo con un colore generale e applicando semplici livelli in overlay.
Il processo spiegato è più lungo, strutturato e richiede pazienza ma alla fine i dettagli fanno sempre la differenza!


Head Details


Insieme alla parte alta, la testa ha richiesto parecchio tempo.
Questo tipo di coccodrillo ha la caratteristica di avere alcune scaglie abbastanza evidenti ed irregolari nella parte inferiore della bocca: inoltre presenta una o più puntinature scure per ogni scaglia e un po' di verde di alga accumulato: ho osservato questo tipo di pattern nella mia specie di coccodrillo (Crocodylus porosus) ma non tutte seguono questo schema.

e86580f763b068f7334df6a8a1bb73e4.jpg


Per la parte inferiore (lower mouth) questi sono i livelli creati:

acb850c833170ab6724f54b3cbb2853a.jpg

Mouth Lines viene realizzato partendo da un Fill Layer, creato dalla mia curvature map.
Aggiungo poi un modificatore dell'istogramma (Levels) per invertire la selezione e selezionare le aree concave tra le scaglie
Aggiungo un filtro di blur  per ammorbidire la maschera.
Infine uso un Paint layer di aggiustamento, per rimuovere le parti di maschera residue che sono rimaste sulla superficie delle scaglie: questo perchè la mia curvature map seleziona in parte alcune aree irregolari sulla superficie ma in questo caso mi serve solamente la parte vicina al bordo della scaglia.

Alla fine la mia maschera di selezione sarà la seguente:

e9d786f6113b1c186bce9c1d7e6217ed.jpg

A questa maschera applico un color marrone per enfatizzare le aree concave.

Aggiungo un layer denominato Algae che altro non fa che sfruttare dei generators per individuare i contorni delle scaglie e aggiungere una certa randomness nella distribuzione.
Infine rimuovo manualmente parti della maschera che non conterranno il verde per affinare il risultato e renderlo più realistico.

82ed1011443471a1e1ebbcdd5dcf7ee7.jpg

Un ultimo semplice livello, chiamato Black dots, aggiunge puntinature scure sopra le scaglie: tutto questo è realizzato pennellando con dei puntini la maschera di livello. Anche in questo caso, le parti bianche rivelano il colore dei puntini.
Da notare come sarebbe stato possibile pennellare direttamente i black dots sulla mascella inferiore, senza ricorrere all'utilizzo di una maschera.
Il motivo per cui in genere preferisco inserire una maschera, anche in questa circostanza, è semplicemente per avere un workflow non distruttivo: nel caso, in un secondo momento, decidessi di cambiare il colore dei dots, oppure di aggiungere un valore di roughness diverso, con la maschera il gioco è semplice, mentre con un semplice Paint Layer non sarebbe fattibile a meno di rimuovere i dots e ricrearli ex novo.

3f4d5b7acbac76b94e62dd3fab62c9d2.jpg


Per la parte interna della bocca (Inner Mouth Details) ho creato i seguenti livelli:

b89da9128a77b9253984e1cac0d2d474.jpg

Senza entrare troppo nei dettagli, ho cercato di isolare la parte interna della bocca creando una maschera custom.
Studiando l'interno della bocca del coccodrillo, ho notato che sono presenti colori tendenti al marroncino con sfumature di giallino pallido e un rosato soft / arancione, realizzati attraverso I livelli Soft Brown e Soft Orange.
Diversamente da quanto si può credere, l'interno della bocca non presenta tonalità molto vivaci, in alcune specie addirittura, il colore dominante è quello di un giallo pallido e spento.
Inserendo un livello Concave, come dice il nome, ho voluto enfatizzare di più le aree concave dell'interno bocca, inserendo un rosso un po' più organico che si può notare tra le pieghe e le membrane.
Infine, un blu (Bluish Contrast) al 38% in multiply blending mode, mi è servito per smorzare alcune parti più sature e per introdurre in generale un contrasto più interessante in alcune zone della bocca.

f6ecdb6615e257903158c686393c3e1c.jpg

9e1d1d05ef1e305dbbcc5322d885c57f.jpg

In prossimità della base dei denti è presente un livello di dirtiness per rendere più realistico e naturale l'attacco con la gengiva: è facile che alla base del dente siano presenti dettagli come l'accumulo di elementi negli interstizi dentali.
Inoltre per la texture della dentatura, così come per quello delle unghie (di cui non parlerò in questo articolo), è stato impiegato un approccio simile a quello descritto sino ad ora, con l'aggiunta di livelli in overlay e generators.

Un dettaglio interessante che ho voluto aggiungere sulla parte superiore della bocca, è la presenza di macchioline gialle (stains) che accompagnano la transizione di colore verso le parti più scure (testa).
Alcune specie presentano questo pattern anche in altre aree del corpo; altre specie, addirittura, hanno l'intera struttura ricoperta di queste macchioline.
Ad esempio ho replicato questo stesso motivo in alcuni segmenti delle zampe posteriori.

5a432b3bc91eb952df8a7340e87db4c7.jpg

Per la resa di queste macchioline ho ricercato un pattern procedurale con controllo della distribuzione attraverso semplici parametri e senza avere ripetitività.
Dopo una ricerca, ho riscontrato che il ratio_crystal_1 di Substance Painter faceva a caso mio e quindi ho applicato questa mappa sull'intera mesh.
Il vantaggio di lavorare per livelli è quello di poter decidere come e dove applicare le proprie textures ma anche di modificare la distribuzione, in un secondo momento, limitandola a particolari aree.


351bb019f02094d630fc2a8a8ea88cf5.jpg

Di seguito la rappresentazione globale della mappa ratio_crystal_1 sul coccodrillo

9909db8ac1468cb1a225ae78820ee52c.jpg

Con la sola mappa applicata si può subito notare come, a parte il risultato inizialmente caotico, le forme del pattern presentino una certa ripetitività (cosa che non si vuole avere) e inoltre l'effetto di intensità della maschera è troppo marcato.

Come nota aggiuntiva, ricordo che l'uso di mappe procedurali deve essere pensata con attenzione, in quanto senza l'utilizzo dell'opzione di triplanar projection e facile incorrere in tagli bruschi di trama non voluti, nei punti dove si presentano dei seams nelle UV maps.
In fase di modellazione è comunque buona prassi localizzare questi seams in aree nascoste del modello: Substance Painter ci corre in aiuto con questa proiezione ma il consiglio è quello di nasconderli il più possibile.
Un'altra tecnica impiegata per la rimozione di seams in forma manuale è quella di aggiungere alla maschera un paint layer di aggiustamento e pennellare rendendo invisibile la transizione tra una UV island e un'altra.

Tornando al discorso delle macchioline, come secondo passo ho applicato una modifica all'istogramma (Levels) per variare alcune aree chiare e scure e ho applicato un Fill Layer con la solita curvature map per limitare l'applicazione delle macchioline, questa volta. unicamente alla superficie e non alle aree concave.
Il risultato è decisamente migliore.

58e932d4c74660d5ec2352f26df5da9e.jpg

Ora ho una distribuzione più interessante, meno invasiva e con aree non solo bianche o nere ma con luminosità intermedia.

Infine, ho applicato un Fill Layer di aggiustamento per scegliere manualmente dove inserire queste forme, per ammorbidere l'intesità delle stesse, con il vantaggio di cancellarne alcune parti e di rendere ancora più naturale la distribuzione.

fb7db849ae0cd1a8502659bf84ee906c.jpg

Il risultato in blending con il resto dei miei livelli, mostra una leggera ma interessante presenza di queste macchioline.

Inoltre si può osservare come queste macchioline siano presenti anche su altre parti del corpo del coccodrillo, grazie al fatto che il livello agisce globalmente sull'intera mesh.

5ecd0031d0cca71d7f7e421825f79b9f.jpg

Ultima nota, sulla gestione delle maschere in generale, riguarda la possibilità di ripristinare il pattern appena creato su determinate aree.
Nell'esempio di queste macchioline, se per sbaglio cancellassi manualmente una parte di maschera, è sempre possibile ripristinarla grazie allo strumento Eraser di Substance Painter: è sufficiente posizionarsi sul paint layer di aggiustamento e attivare l'eraser, per poi passare il pennello nell'area desiderata.

Con questa parte si conclude la spiegazione del making of relativo alla texturizzazione.

Prima di passare alle note finali, apro una breve parentesi sulla generazione della roughness map.

La roughness map


Come spiegato nel libro "PBR Guide" di Wes McDermott (che raccomando vivamente di leggere per imparare i principi fondamentale del PBR), la generazione della mappa di roughness è un processo senza troppi vincoli ed è possibile usare la propria creatività nel produrla.
Non sempre è facile immaginare come un oggetto reagisca alla riflessione speculare: in parte perchè la resa dipende dalla fonte o dalle fonti che interagiscono con esso e d'altro canto non è sempre possibile avere l'oggetto fisico tra le mani, provando ad esporlo a determinate condizioni di luce.

Qui rientra il coccodrillo che, in quanto creatura non presente sul nostro territorio, non è stato possibile osservare dal vivo.

In queste circostanze tornano sicuramente utili le reference fotografiche ma molto di più i video o footage che ritraggono l'animale compiere azioni in movimento.

Il coccodrillo, inoltre, essendo un animale che passa dall'acqua alla terra e viceversa, avrebbe una variazione di roughness evidente dovuta alle goccioline e all'umidità presente sul corpo.

Nel mio caso specifico ho voluto testare diversi tipi di roughness, trovando infine quello che meglio si adattava ai miei renders e alla realtà.

Da sottolineare, inoltre, che per enfatizzare meglio alcuni dettagli di render e averne di interessanti da mostrare, talvolta la roughness  è stata accentuata maggiormente sulle riprese più drammatiche (parleremo del render in dettaglio nel prossimo articolo).

Vi illustro ora il mio workflow utilizzato per la roughness in Substance Painter.

7df4e3e7769001b7b4316f9c556ce3a8.jpg

Esistono diversi modi per generare una mappa roughness.
Se si guardano reference reali si può facilmente osservare che in aree occluse, e nel mio caso tra una scaglia e l'altra, è facile supporre che la riflessione abbia un valore di roughness più alto (immaginando la natura del materiale con presenza di dirt e altro), e che le aree concave abbiano una riflessione più attenuata per la presenza di fenomeni di self occlusion.
Quindi, da questa ipotesi, è facile dedurre che la superficie delle scaglie, invece, presenti una roughness più bassa (e quindi con una concentrazione di energia riflessa maggiore), seguendo sempre il modello teorico delle Microfacets proposto da Cook Torrance (per citare un esempio).

Da questa premessa si può capire come il primo livello creato, che ho rinominato no reflection in cavities tenga in conto dell'ipotesi appena descritta.

Ho utilizzato la solita curvature map  per mascherare le aree concave e applicato un filtro di blur per rendere meno sharp il risultato.

d65e400e0e8249b1e0a4d2d53faab1cf.jpg

Notare che le zone tra le scaglie presentano alti valori di roughness (tendenti al bianco) e quindi riflettono meno rispetto alle aree sopra le scaglie stesse.

Già questa mappa permette di avere una buon range di valori distribuiti ma in genere, per avere un ulteriore break up della texture, ci aggiungo un layer con una mappa procedurale (Cloud Breakup), che in questo caso è Cloud 3 e la metto sovrapposta a quella appena descritta. Posso poi aggiungere sempre sotto la Cloud Breakup un paint layer di aggiustamento, dove a mano vario i valori della maschera.

Infine, inserisco un semplice livello (freehand roughness) per dare ulteriormente un tocco di creatività alla maschera usando il semplice pennello.

47971d41ce8e5ef9366bd875aab283ff.jpg

Notare come la leggera riflessione sia condizionata dai valori di roughness prodotti e sia presente con una certa variabilità e distribuzione.

Ripeto, la scelta della roughness è molto relativa e deve rispecchiare i propri gusti in abbinamento ad osservazioni reali.
Nei miei render ho anche testato valori più alti di roughness per un appeal più dry e sarebbe interessante produrre in futuro anche una roughness con valori più tendenti allo scure, per una rappresentazione del coccodrillo appena uscito dall'acqua.

Ecco infine la roughness completa e rappresentata nello spazio UV

deac5b04ebdbcb3343714e7d00ce2be2.jpg

Prima di chiudere l'articolo vorrei lasciarvi con alcuni consigli pratici, più che altro per chi si affaccia al mondo del texturing e a Substance Painter.

Consigli Pratici


  • Prima di mettersi all'opera, dedicate parte del vostro tempo a raccogliere una serie di reference fotografiche: in prima battuta selezionate più reference possibili, studiatele e successivamente fate leva su quelle che più sembrano adatte ai vostri scopi;
  • Il texturing non è solo saper usare i livelli ma è principalmente sperimentare, smontare, rimontare e affinare il risultato fino ad ottenere qualcosa che è in linea con le vostre aspettative;
  • Non fatevi intimorire dal numero di mappe procedurali, pennelli, maschere, etc presenti in Substance Painter. Con una selezione di pochi pennelli ma procedendo con idee chiare, si riescono ad ottenere ottimi risultati;
  • Durante la fase di texturing, in generale, impostate un environment map con un'illuminazione il più possibile neutra, in pratica evitando delle luci con temperatura di colore diverse, troppo sature e con dominanti cromatiche presenti nella scena. Più e neutra la scena, più il vostro base color (albedo) sarà fedele a quello che vedrete in una scena reale;
  • Come avrete visto, le maschere giocano un ruolo importante nella generazione di textures e del rapporto tra livelli. Imparate a produrne di nuove, sperimentando con generators, paint layer, etc... Non limitatevi a caricare una maschera e ad applicarla;
  • In alcune circostanze può essere comodo iniziare da alcuni Smart Materials,  che sono materiali già preconfezionati con livelli e che sfruttano le vostre texture bakate per produrre le caratteristiche peculiari del materiale. Talvolta può essere utile iniziare da questi come base e variare i parametri  per ottenere in fretta un buon risultato;
  • Substance Painter ha anche tutta una serie di filtri da poter utilizzare sia sulle maschere che sulle texture, potendo ad esempio applicare effetti di Blur, modificare la saturazione e la luminosità di una texture e molto altro ancora. Sperimentare per credere!
  • Substance Painter è anche provvisto di pennelli (particle brushes) che reagiscono alla fisica considerando la gravità, l'influenza delle normal maps, i life span delle particelle e molti altri parametri. In alcune circostanze può tornar utile utilizzarli! Oltre ad essere efficaci sono anche molto divertenti da utilizzare.

Con questo si chiude la prima parte dell'articolo, dove abbiamo ripercorso alcuni punti del processo di texturing.
Nella prossima puntata andremo a parlare del render e di come creare dei mood per dare un senso alla nostra scena.

Per ogni domanda fate riferimento al mio indirizzo mail: jackfurneri1984@gmail.com

Vi aspetto nella prossima lettura!!