3D Artist: Francesco Furneri
Project: Making Of: Procedural rocks with details in Substance Designer
Software: Substance Designer, Marmoset Toolbag
Project Link: https://www.artstation.com/artwork/JlP4km
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 da un po' di tempo mi occupo di texturing 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.
Senza dilungarmi troppo nei dettagli, il mio background è un mix di competenze tecnico e artistiche, che sono il risultato dei miei precedenti studi in Computer Science (presso l'Università degli studi di Torino) e in 3D Computer Animation (Master ottenuto presso la University of Kent in Inghilterra).
In questa sede vorrei condividere con voi alcuni aspetti del mio ultimo progetto che ho realizzato in Substance Designer, con la descrizione del workflow adottato e il breakdown delle varie parti.
Ringrazio il reparto tecnico di treddi.com per darmi la possibilità di condividere con voi questo articolo e spero che troviate la mia spiegazione utile per i vostri lavori in cantiere.
Prima di tutto lo strumento di lavoro!
Substance Designer: ebbene sì! Un fantastico software che in prima battuta può apparire ostico e poco amichevole ma che in realtà nasconde infinite possibilità nell'ambito della creazione di materiali.
Tra i diversi workflow, quello che adotto sempre nei miei lavori è il PBR metal/roughness che mi offre completa libertà e semplicità nel definire i miei materiali.
Per farla breve, Substance Designer è un tool basato su nodi, dove ciascun nodo può accettare 1 o più valori in ingresso, svolgere un'elaborazione specifica e restituire un output che può essere usato come input per altri nodi; così via fino al risultato finale.
Nei miei lavori, suddivido sempre gli elementi in blocchi in modo da rendere chiara la visualizzazione e lasciando uno o più commenti per capire quello che sto realizzando. Nel seguente caso, ho riportato un esempio di rete per la produzione di alcuni semplici detriti di base.
Reference, reference e ancora reference!
Prima di iniziare a lavorare su designer, spendo sempre del tempo per collezionare più reference possibili e, pur spendendo anche 1 ora, riesco ad avere una chiara idea di quello che voglio ottenere.
Di norma scarico immagini d'insieme e diversi close up, per poter studiare nei dettagli l'oggetto da realizzare.
Molte volte, se trovo interessanti alcuni elementi in reference diverse, cerco di condensarli assieme nel mio lavoro per dare anche un tocco di creatività.
Per il progetto che vi illustrerò, l'idea è stata quella di ricreare una singola patch da utilizzare come portfolio, con diversi dettagli tra cui:
- Rocce di primo ordine
- Rocce di media dimensione
- Rocce piccole
- Foglioline e detriti
- Mozziconi di sigaretta
- Terreno
Trovate un'immagine ad alta risoluzione al seguente indirizzo: https://www.artstation.com/artwork/JlP4km
Il risultato finale, mappato su un cilindro è il seguente:
Rocce di primo ordine
L'intento, per le rocce più grandi è stato quello di dare importanza alla morfologia e agli effetti di erosione che si possono notare nel tempo. Mentre in presenza di pavimentazioni più tassellate (es. ciottoli), preferisco usare un tile sampler per distribuire gli elementi, in questo caso, ho preferito modellare roccia per roccia, in modo da dare a ciascuna un diverso look e una posizione custom nello spazio. Ciascuna roccia ha le sue proprie caratteristiche e una sua specifica posizione: tutto quello che sta attorno a loro viene disposto secondo tecnica di random scattering, utilizzando il tile sampler di Substance Designer.
Vi descrivo concettualmente il grafo per la costruzione della seguente roccia procedurale in foreground.
- Si inizia da una semplice shape quadrata a cui viene applicato uno slope blur, che serve per creare un effetto irregolare ai bordi della forma
- A questo punto vengono applicate diverse trasformazioni della geometria per ottenere una forma più verticale. Questo grazie all'uso di un nodo definito Directional Warp, che altro non fa che plasmare la forma lungo una certa direzione. A questi nodi si aggiunge Transformation 2D che consente di manipolare direttamente la shape in 2D. Altri effetti di erosione sui bordi vengono realizzati attraverso tecniche matematiche di blending (Subtract / Add+ e Sub- / Overlay, etc..)
- Per i dettagli di erosione, ho sfruttato una cloud map a cui ho applicato un warping direzionale per ricreare il seguente pattern. Il risultato è stato poi moltiplicato in blending sulla roccia e a questo è stato applicato un fractal sum noise per i dettagli ad alta frequenza
- Dopo una serie di operazioni simili a quelle descritte si ottiene la roccia finale. Ho voluto anche realizzare un po' di varianti (alcune di queste non utilizzate nel progetto ma raccolte nella mia libreria per eventuali usi futuri). Vi illustro rapidamente alcuni risultati ottenuti dalla roccia appena descritta
Rocce di media / piccola dimensione e foglioline
Per questa tipologia di elementi, sono state impiegate tecniche diverse mirate a distribuire le quantità in maniera naturale e randomizzata attorno alle rocce principali.
In Substance Designer entra in gioco il Tile Sampler: uno strumento di distribuzione di elementi nello spazio sulla base di parametrizzazioni definite dall'utente.
Grazie ad esso è possibile:
- definire la quantità di elementi da distribuire
- definire la scala degli elementi
- randomizzare la distribuzione e la trasformazione dei singoli elementi
- definire un flusso di distribuzione utilizzando delle vector maps
- mascherare opportune aree dove non distribuire gli elementi
e molto altro ancora!
Per le rocce, così come per le foglioline, si è cercato, attraverso diversi tentativi, di creare una distribuzione il più naturale possibile, con aree di concentrazione contrapposte ad aree più "spoglie".
Il consiglio è quello di provare e riprovare a creare distribuzioni interessanti e mai accettare il primo risultato che si ottiene.
Per creare degli agglomerati di elementi in posizione circolare (es. pagliuzze, foglie, etc..) è utile sfruttare il nodo chiamato Splatter Circular che, condividendo in parte alcuni parametri del tile sampler, permette di posizionare in forma circolare gli elementi di scena (anche molto utili per creare ad esempio i vari petali di un fiore).
Mozziconi di sigaretta
Questa è la parte più divertente e curiosa che ho potuto sperimentare in designer.
Tutto è partito dall'osservazione di ulteriori reference e di quello che si trova nell'ambiente di ogni giorno.
Sapevo di dover integrare ancora qualche piccolo elemento per completare il progetto e l'idea dei mozziconi di sigaretta mi è subito venuta alla mente.
Come per le foglioline, anche in questo caso la distribuzione è stata realizzata attraverso il Tile Sampler ma la costruzione della sigaretta ha coinvolto l'utilizzo di alcuni interessanti nodi.
Elenco quelli usati con più frequenza:
- Directional warp: utilizzato per modificare la forma del mozzicone
- Non Uniform Blur e Slope Blur: utilizzati per creare dettagli e irregolarità nel pattern della cenere di sigaretta
- Gradient nodes: serie di nodi che definiscono un gradiente per il taglio della sigaretta alle estremità. I tagli possono essere netti o leggermente graduali
- Histogram scan: utilizzato principalmente per la costruzione di maschere (utile per colorare le varie parti di sigaretta), oppure per regolare la luminosità e il contrasto delle noise maps usate nei dettagli della cenere
- Histogram range e auto levels: utili per lavorare sulla distribuzione dei livelli di luminanza sull'istogramma. Nel caso specifico sono tornati sfruttati nelle height map nel definire l'altezza dei mozziconi
- Bevel: nodo utile per smussare i bordi di un oggetto. Utilizzata per rendere più smooth alcune parti della sigaretta
Un consiglio di base, per poter creare in forma procedurale oggetti di diverso tipo, è quello di sfruttare ampiamente il binomio Gradient + curve node, dove con il primo si imposta un range di base di valori di luminanza, mentre con il secondo si fa un remapping dei valori del gradiente, definendo un nuovo output: molto utile per creare delle height map personalizzate.
Un altro consiglio per poter integrare in maniera smooth un oggetto su di una superficie già creata è quello di impiegare il nodo Non Uniform Blur sul terreno e regolare lo smoothing collegando al nodo l'input dell'oggetto (in questo caso la sigaretta). Si crea praticamente un area dove poter accomodare in forma smooth qualsiasi tipo di geometria su di un terreno e un overlay preciso con una successiva operazione di blending (add).
Terreno
Per quanto riguarda il terreno ho voluto sperimentare diverse soluzioni:
- una più dry
- l'altra più wet
La creazione procedurale prende come base una mappa cloud, opportunamente trattata e condita con diverse imperfezioni ricreate da reference varie.
Per dare più effetto e rendere più interessante l'integrazione tra il terreno e gli altri elementi ho sfruttato un interessante nodo di Substance Designer chiamato Height Blend.
Si tratta di una recente aggiunta al programma, dove si collegano 2 input (heightmap del terrreno e heightmap globale con tutti i dettagli citati sopra) e si regola il blending tra i 2; viene prodotto un mix delle 2 parti dove il terreno, in alcuni casi sovrasta leggermente le rocce, creando un naturale effetto di integrazione tra le parti. Per il progetto non ho voluto esagerare ad applicare la funzione di blending ma il giusto per far apparire unite le 2 parti.
Notare ad esempio come la roccia squadrata in alto viene ricoperta in parte da una porzione di suolo e il terreno e gli altri elementi appaiono ben integrati assieme.
Tornando al discorso sulle varietà di terreno, come dicevo all'inizio, ho voluto sperimentare un look più dry e un altro con la presenza di acqua e riflessioni.
Anche qui Designer ci viene in aiuto grazie ad un nodo aggiunto di recente (Water Level), che come dice il nome analizza le informazioni sulle height maps del terreno e dei dettagli per definire, sulla base di parametro "livello dell'acqua", come instanziare le pozze e le parti umide. Fantastico, non trovate!
Inoltre, si tratta di un nodo con diversi parametri come la possibilità di regolare l'effetto di trasmittanza e quindi rendere più o meno opaco o trasparente ciò che sembra apparire sott'acqua.
Notare, nelle area indicate, come il livello dell'acqua dia un lieve effetto di immersione delle rocce (es. la pietruzza in basso).
In questo progetto ho voluto testare le potenzialità del nodo Water Level ma è sempre possibile creare un effetto ad hoc di dettagli che sembrano sommersi, semplicemente facendo skip nel calcolo delle normals nelle aree wet, computando una bassa roughness sempre in quelle aree e magari inserendo un effetto di caustiche e wave, con dettagli disegnati che rimandano alla presenza di elementi profondi.
Diamo colore!
Una volta conclusa la creazione procedurale del terreno è tempo di impostare l'albedo da dare alle diverse parti.
Un comune errore che avviene in fase di texturing, a mio avviso, è quello di sottovalutare le micro variazioni di tonalità che qualsiasi elemento in natura può avere: anche un oggetto per quanto possa sembrare di un solo colore, in realtà ha tutta una serie di leggere variazioni di tinte che dovrebbero essere prese in considerazione, a meno di utilizzare uno stile molto cartoon.
Per chi è abituato a lavorare con la tavoletta grafica, saprà benissimo che nel texturizzare un oggetto e renderlo credibile ed interessante è fondamentale lavorare in layers e definire micro variazioni e imperfezioni (es. mottling pass nella pelle dei characters).
Lo stesso concetto applicato nel digital painting avviene in Substance Designer.
Le immagini che seguono, relative al colore, semplificano i diversi passi di costruzione dell'albedo map e rappresentano concettualmente l'idea che sta dietro il processo, pertando sono rapide catture non alla massima risoluzione.
Parlando del texturing delle rocce di primo ordine, il mio approccio si basa fondamentalmente sui seguenti passaggi:
- Primo passo. Applicazione di un random greyscale color sulle singole rocce, dove ogni roccia ha un unico valore di grigio
- Utilizzo del nodo Gradient Map per rimappare il grigio con un colore uniforme su ogni singola roccia. Il colore può essere definito dalla classica palette oppure campionato da un'immagine di riferimento. Solitamente preferisco questo secondo metodo per ottenere più realismo
- Secondo passo. Creazione di una mappa in scala di grigi che può essere il risultato di dell'ambient occlusion map combinata con qualche altra mappa (es. dirt map), per rompere la monotonia e aggiungere più variazioni. Uso del Gradient Map sulla nuova mappa generata, campionando sempre i risultati da immagine di riferimento
- Terzo passo. Creazione di una curvature map per catturare le aree di concavità e convessità delle rocce da utilizzare successivamente con blending multiply per accentuare il contrasto della mappa albedo
- Blending. Unione del passo 1,2,3 per ottenere il risultato finale (immagine seguente riporta anche altri elementi del terreno)
In sostanza, si possono seguire questi passaggi ed eventualmente aggiungere passi custom tra uno e l'altro. L'importante è ottenere una variazione interessante di toni per creare un certo livello di realismo.
A seguire è possibile applicare nodi quali HSL per gestire la saturazione o la luminosità globale della patch.
Nei render riportati sono state create diverse versioni dell'albedo e l'illuminazione HDR ha contribuito ad ambientare al meglio le rocce nel background.
Render e mood
Molti 3D artist prediligono Marmoset Toolbag, per la presentazione finale dei propri progetti in Substance Designer e devo dire che anche io, nel mio workflow, ho voluto adottare questa scelta che si rivela pratica e con ottimi risultati in breve tempo.
Nei miei lavori amo sperimentare diverse soluzioni di resa e gestire cambiamenti di luce per definire un certo mood, che spesso pianifico da in partenza, con l'intento di affinare progressivamente il risultato.
Inoltre, nei miei render solitamente inserisco un'immagine iniziale che rappresenta il materiale mappato su di una sfera o un cilindro e cerco di creare aree di luce e aree in penombra per valutare al meglio come gli elementi reagisco all'illuminazione della scena.
Successivamente inserisco immagini ravvicinate per catturare alcuni dettagli e vario l'illuminazione per creare alcuni mood che più mi interessano.
Tutte le seguenti immagini possono essere consultate ad alta risoluzione al seguente indirizzo: https://www.artstation.com/artwork/JlP4km
Nel progetto ho voluto ricreare:
- un terreno asciutto, con una dominanza del key color marrone, per dare ancora di più il senso di secco
- un terreno più umido (tipo sottobosco) dove l'introduzione di una gobo light, che proietta l'ombra di un albero e la presenza di verde e acqua suggerisce la vicinanza ad un ruscello
- un'atmosfera completamente diversa, notturna, con la presenza di una key light volumetrica e molto pronunciata come per indicare la presenza dei fari di un auto o di una luce artificiale
- un'atmosfera più gloomy, incentrata nella cattura dell'umidità del terreno
- infine un'atmosfera diurna senza una visibile key light ma con colori naturalistici come in una giornata a cielo coperto
Il mio consiglio è quello di provare a sperimentare diverse soluzioni e selezionare quelle che vi piacciono di più da inserire nel vostro portfolio.
Considerazioni finali
Questo paragrafo chiude l'articolo che spero abbiate trovato interessante e nell'intento di fornirvi ulteriori spunti per i vostri lavori, vorrei concludere con una serie di brevi consigli
- Partite da un'idea chiara in mente su cosa volete realizzare basandovi su diverse foto reference. Spendete tempo prima di mettervi all'opera: meglio iniziare bene con un concept / visual, piuttosto che partire subito ma senza sapere poi come procedere, rischiando di compromettere il lavoro e non produrre un risultato soddisfacente.
- Una volta acquisita padronanza di base con Substance Designer, cercate di migliorarvi con i nodi e le funzioni che già utilizzate e sperimentate come esercizio diversi materiali. Nuovi nodi e funzioni si apprendono con il tempo e contestualmente al materiale che volete produrre. Non preoccupatevi perciò di imparare a memoria troppi nodi, esiste una guida ben documentata sul sito di Allegorithmic a cui fornisco il rimando (Documentazione) . Per capirci e per fare un parallelo con il digital sculpting, esistono artisti in Zbrush che usano un set limitato di pennelli per produrre vere e proprie opere d'arte!
- Non preoccupatevi di smontare e rimontare i grafi più volte: Substance Designer nasce proprio per permettervi di modificare con facilità alcune parti e ci penserà lui a riadattare il resto di conseguenza, a patto di costruire una rete robusta. Inoltre, potrete testare diversi input nella rete per produrre rapidamente varianti o risultati completamente diversi.
- Non preoccupatevi di produrre texture tileable: Substance Designer penserà a tutto e manterrà una certa continuità negli edge delle vostre texture. Gli unici nodi che rompono la continuità sono i Transform 2D node ma con l'uso di safe Transform node è possibile ripristinare la continuità.
- Abituatevi a costruire reti modulari: questo semplifica l'organizzazione del tutto e permette anche di costruire delle proprie librerie che potrete riciclare in progetti futuri. A titolo di esempio, nel lavoro di cui vi ho parlato, la rete è costituita da sottoreti che vengono instanziate in una rete globale che ho riportato sul profilo Artstation: ad esempio i mozziconi di sigaretta, così come le foglioline costituiscono sotto reti separate che vengono richiamate nella rete principale.
Se questo articolo vi è piaciuto e vi ha aiutato a comprendere alcuni aspetti del mio workflow in Designer mettete un like e seguitemi sul mio profilo Artstation:
https://www.artstation.com/jackfurneri
Per qualsiasi consiglio o curiosità che vi è nata leggendo questo articolo contattatemi senza problema alla mia email personale
jackfurneri1984[at]gmail.com
Grazie!
Francesco Furneri.
Recommended Comments
Accedi per commentare
Sarai in grado di lasciare un commento dopo l'accesso
Accedi ora