Ciao a tutti, mi chiamo Ludovico Palmeri e sono un CG generalist. Lavoro come freelance in diversi ambiti, ho iniziato ho iniziato a muovere i primi passi quasi quattro anni fa in ambito Archviz dopo aver frequentato il master in architettura digitale di Venezia (M.A.D.I), per poi imparare e sperimentare anche in campi differenti.

Ho realizzato questa immagine per il madi recipe competition relativo al corso di fotogrammetria del M.A.D.I tenuto da Gabriele Simonetta, guadagnando il primo posto. Per me è stata una fantastica occasione sia per sperimentare e combinare varie tecniche, software e workflow, che per imparare un po' di fotogrammetria. Un doveroso ringraziamento sia all'ottimo insegnante, che mi ha trasmesso buona parte delle tecniche qui adottate, che a 3df flow, sponsor del contest, che ha fornito copie di 3df Zephyr per realizzare tutti i modelli che vedrete. 


Pianificare l'immagine

La pre-produzione di un'immagine credo sia un passaggio essenziale: una volta deciso il tema (ovvero granite e brioches siciliane, preparate e servite alla vecchia maniera), ho subito fatto qualche schizzo per fissare su carta l'idea, la sua composizione e gli elementi necessari, quindi ho iniziato a raccogliere dozzine di references su pureref, semplice ma efficiente strumento. In questa prima fase è fondamentale avere una base per ogni aspetto dell’immagine: inquadratura, camera, oggetti, materiali, palette, illuminazione, etc. Così da iniziare a raccogliere tutto ciò che serve per portarla a termine. Parte degli asset necessari ho dovuto realizzarli tramite fotogrammetria, il resto invece sono frutto di tecniche di modellazione tradizionali.

cc251617379491ac010473c1a6d8cefb.jpg

Impostazione generale della scena

La scena in sè è piuttosto semplice: ho utilizzato 3ds max con corona renderer 7 per calcolarla. Una volta realizzati i vari asset li ho importati e composti nell'inquadratura: ho usato un obiettivo 70 mm con f=10 per l'immagine principale, mentre un f=6 per i closeups. Non volevo una profondità di campo eccessiva nella hero image, per poter dar valore a tutti gli elementi presenti ma focalizzando comunque il soggetto principale, ovvero la granita. La luce la immaginavo il più naturale possibile, pertanto invece di un set ho adottato solo un hdri da https://polyhaven.com/e l'ho rinforzata con una piccola plane light a sinistra, per accentuare un po' le alte luci ed i contrasti e far risaltare il subsurface scattering che, come vedremo, ho generosamente attivato su gran parte dei materiali (grazie Corona).

6b43e2ac6a8433185a3310c5010e8ebb.png

Un piccolo trucco: per rendere al meglio il vetro illuminato dal sole era importante attivare le caustiche in scena e sul materiale vetro, solo che i tempi di calcolo aumentavano in maniera esponenziale, probabilmente a causa dell'interazione con la granita SSS. Così ho preferito calcolare inizialmente la scena senza caustiche, quindi ho rifatto il render con caustiche in modalità “selected” ricalcolate solo per pochi oggetti. Purtroppo questo approccio non sempre funziona benissimo giacchè le caustics in Corona hanno qualche problema sia con le modalità region eselected, ed infatti nel main pass erano quasi invisibili rispetto ai test fatti in interactive oppure ad l'immagine intera. Tuttavia funzionano perfettamente nel pass dedicato, che ho pertanto aggiunto e compositato in post.

La parte più lunga e complessa è stata la creazione dei vari assets, che andrò a dettagliare.


Brioches| rilevamento fotografico e post-processing

Il primo passo è stata la meticolosa ma piacevole ricerca delle  brioches perfette da scansionare tra decine di bar siciliani. Una volta  trovate le mie due protagoniste (più una mandorla) ho iniziato la  sessione di fotogrammetria.

Ho usato una mirrorless Fujifilm XT100 con treppiede e filtro polarizzatore, un piatto rotante ikea su cui posizionare l'oggetto ed una softbox in cui inserire entrambi. Ho riscontrato un problema con la troppo tenue illuminazione della softbox, l’ideale sarebbe stato associarvi una ring light probabilmente. In sua assenza ho dovuto calibrare iso e shutter al prezzo di un certo rumore nell’immagine, sistemato successivamente in lightroom. In totale ho scansionato due brioches, il cocuzzolo (tuppo d'ora in poi) di una di queste ed una mandorla. Per ciascun soggetto ho scattato circa 200 foto in raw:  36 per ogni giro, facendo circa tre giri a diverse altezze della camera, e poi altri tre capovolgendo l’oggetto. 

Terminata la fase di scatto ho iniziato quella di post-produzione:  vogliamo infatti delle immagini il più neutre e piatte possibile, scevre da ombre, luce diretta o forti riflessi. Il filtro polarizzatore da solo non basta, riduce ma non elimina le highlights. Ho fatto ricorso lightroom per questo processo, perchè permette di modificare interi pacchetti di foto. Aprendo lightroom, dalla tab library e quindi import  ho importato l'intero batch di foto in RAW. 

3941ec3137647d73a22547c10b96b368.jpg

Selezionata una singola foto, dalla tab develop ho aumentato shadows e diminuito highlights, quasi al massimo degli slider. Dalla stessa sezione, ho eliminato chromatic aberration e dal parametro luminance ho diminuito il noise per quanto possibile.

Questo procedimento è sufficiente farlo solo la prima volta. Dopodichè basta cliccare col tasto destro del mouse sulla foto modificata ed opzionare develop settings – copy settings,  quindi selezionare le rimanenti foto con ctrl+A ed ancora una volte fare clic destro e scegliere develop settings-paste settings per trasferire le stesse impostazioni. Terminata questa procedura, posso tornare alla library e cliccare su export, scegliendo formato .png o .jpg.

Brioches| Elaborazione fotogrammetrica in 3df Zephyr

Per processare e la ricostruzione fotogrammetrica ho usato 3df Zephyr. In precedenza avevo provato solo Metashape, al cui confronto Zephyr mi è parso estremamente intuitivo e versatile,  con risultati eccellenti. Il workflow è davvero lineare e semplice, e suggerirei a chiunque voglia impararne i rudimenti di approfondire sul sito ufficiale , ci sono ottimi tutorial che coprono molto più dei due o tre trick che ho utilizzato in questo mio primo tentativo. 

Ad ogni modo descriverò rapidamente l’approccio utilizzato: una volta aperto 3df Zephyr cliccare in alto su workflow e new project. Spuntare mask images e check online for precomputed cam calibration e nella successiva finestra che si aprirà cliccare su add directories ed indicare la cartella contenente le foto esportate da lightroom.

9da166deae48705b056c4da5e5ec48d0.jpg

Nella successiva schermata scelgo launch maquerade. Il prossimo passo sarà creare una maschera attorno al soggetto per ogni scatto: è importante farlo perché ho scattato le foto usando un turntable, di fatto barando rispetto alle regole della fotogrammetria. Dobbiamo quindi indurre il software ad ignorare lo sfondo uniforme e comportarsi come se a ruotare fosse la camera e non l’oggetto.

Una funzione utilissima in tale frangente è il turntable mode, attivabile nella toolbar inferiore, permette di far calcolare buona parte delle maschere automaticamente, con piccole correzioni manuali ogni tanto.

Per creare la prima maschera inizio dalla prima foto, nella toolbar si seleziona il pennello rosso e  si dipinge un tratto sull’oggetto da scontornare, quindi un secondo tratto con il pennello blu sullo sfondo. Il software campionerà i colori intersecati dalle pennellate per decidere cosa è sfondo e cosa soggetto. L’accuratezza di tale campionamento dipende dalla dimensione del tratto, ma anche dal numero di pennellate. La maschera che verrà a crearsi automaticamente, potrà essere aggiustata in seguito con vari strumenti di selezione poligonale. Nell'immagine in basso ho indicato con le freccette verdi la turntable mode e l'autorefreshing mode, da attivare.

dd3aed1d87e6583968a51359697dade5.jpg

Fatta la prima maschera, invece di ripetere il processo per le rimanenti foto, si può semplicemente cliccare sulla piccola ruota dentata in basso (oppure dalla tab tools), e lasciare calcolare a zephyr le restanti basandosi sulla maschera già in suo possesso. Si può sia far calcolare tutte le restanti immagini che far calcolare solo la successiva, perfezionarla ed iterare tale procedimento fino alla fine. L'opzione di calcolo automatico su tutte le foto è allettante ma decisamente poco precisa, meglio procedere una foto alla volta. È un lavoro meno tedioso di quanto sembri e particolarmente importante per la buona riuscita della scansione. Un suggerimento: bene essere attenti ma non chirurgici, il software comunque farà un’interpolazione tra tutte le foto, ignorando le aree più confuse.

Terminata questa fase si chiude la masquerade, e dalla tendina workflow si procede a generare in ordine la nuvola sparsa, densa ed infine la mesh. Ci sono svariati parametri che si possono impostare per un risultato migliore, ma personalmente ho trovato i preset più che buoni per il mio scopo, e li ho utilizzati sia per la nuvola sparsa che per la densa, solo al momento di creare la mesh ho incrementato manualmente alcuni parametri. In generale se molte foto del batch non venissero riconosciute nella generazione della nuvola sparsa, provare deep come preset, e se continuasse a non funzionare aumentare manualmente i vari parametri. Ma di base se è stato fatto un lavoro preciso in fase di scatto e mascheratura, non ci dovrebbero essere grossi problemi. 

c26cf3a08e3af467467f1726c8a36151.jpg

Una volta ottenuta la mesh, prima di finalizzare la scansione generando la texture, l'ho scalata e ruotata. L'oggetto appena creato infatti avrà una scala generica ed un orientamento casuale. Per fare ciò selezionare la mesh e cliccare nella toolbar superiore sull'icona di tranformazione, da qui si aprirà un pop up. Si ruota la mesh mettendosi in vista ortogonale ed una volta soddisfatti cliccare su applica per chiudere il popup e confermare la transformazione.

Per scalarle in maniera esatta invece, si deve prima misurare l' oggetto reale lungo una direzione, nel mio caso il diametro della brioche, e prendere nota della misura ( nel mio caso 12 cm). Quindi dalla tab GCP ho selezionato add control point e picke cliccando sull’oggetto si creano due punti, più o meno gli stessi estremi di cui ho misurato la distanza reale.

810dbe618e21c13ecf7a8fb4422254a9.jpg

Nella tabella measurements clicco su distancesed inserisco questi control point appena creati,  infine da scale model with control distances ho inserito la mia misura reale (12cm).  Abbiamo ora una mesh scalata e ruotata correttamente, ttuttavia mancano delle coordinate di mappatura utilizzabili ed una topologia più pulita. Infatti per poter utilizzare la scansione nel migliore dei modi, non solo per immagini still ma anche in real time engine o in animazione, ho bisogno di topologia ed uv migliori di quelle create automaticamente da Zephyr, come da qualsiasi altro software di elaborazione fotogrammetrica. 

Brioches | Topologia ed UV in Zbrush

Ho innanzitutto esportato la mesh dalla tendina export di Zephyr e l'ho importata in zbrush. Il formato .obj è probabilmente il migliore, ma personalmente ho usato .ply perchè preserva i colori assegnati ad ogni pixel da Zephyr facendoli leggere a zbrush come una sorta di polypaint, cosa utilissima a mio avviso per rifinire certi dettagli. La mesh originale era senza buchi o aberrazioni da correggere, così ho impiegato subito zremesher per convertire la topologia in quad, e quindi proiettare i dettagli dall'high poly mesh. Per fare questo:

  • duplicare la mesh high poly e rinominarla
  • posizionarla in cima alla stack dei subtools
  • usare zremesher nel duplicato, con un numero di poligoni sufficientemente basso. Sarà il numero di poligoni del modello finale. Nel mio caso circa 65k poligoni. Possono essere molti di meno a seconda dell'utilizzo pianificato.
  • Ora suddividere più volte il modello ritopologizzato fino ad avere una conta poligonale affine al modello high poly (più di un 1mln se non ricordo male).
  • dal pannello dei subtool c'è la sezione project all da cui proietare dettagli e polypaint dalla mesh in cima alla stack sul subtool su cui eseguiamo il comando.
  • Una volta completati i passaggi, si sistema la mesh con pennelli come smooth, move e standard per correggere, levigare o rifinire certe aree. Si può eseguire tale operazione sulla mesh highpoly prima di proiettarla, o dopo su quella ritopologizzata

9893c23e3573066a7517dcc724d07904.jpg

cb59c413949b9f8d2c945c8f3b9285dd.jpg

Infine ci servono delle coordinate uv. Il plugin uv master, integrato in zbrush permette di ottenere unwrap abbastanza buoni pur non essendo super preciso. Per utilizzarlo basta andare nella tab plugin e quindi uv master, attivare la spunta su by polygroup se la mia mesh è stata divisa in questa maniera oppure utilizzare le opzioni di pittura, ad esempio per attrarre le cuciture o proteggere certe aree. Ho usato il metodo a polygroup sia per la brioche aperta che per il tuppo: per far questo devo prima dividere in polygroup la mesh, così zbrush separerà ciascun gruppo in un chunk. Per dividere in polygroup mascherare la parte da dividere con ctrl+clic e poi dalla tab polygroup scegliere masked. L'unwrap va eseguito sulla mesh con meno suddivisioni, oppure lavorando su un clone per poi trasferirne le uv, altrimenti rallenterà incredibilmente il calcolo. Completate le uv posso esportare la mesh in due  versioni,  una alla massima risoluzione ed un'altra ad una risoluzione ragionevolmente inferiore. Useremo quest'ultima come mesh finale, mentre l'highpoly ci servirà per fare il bake dei dettagli in substance painter, recuperando informazioni come AO, curvature e bump. 

Quindi tornando a 3df Zephyr, cliccare su importe poi import mesh with uv map ed otterremo la mesh finale. Finalmente da Workflow scelgo textured mesh generation ed 3df Zpehyr proietterà una bellissima texture hires che sarà il nostro basecolor. 

680d049280447355b3ecce81c338e9c4.png

Brioches| Texturizzazione in Substance Painter

Il lavoro non è ancora terminato: adesso che abbiamo il base color,  dobbiamo recuperare i dettagli dalla mesh ad alta risoluzione con una mappa normal, oltre a servirci una mappa roughness per definire un materiale PBR realistico. Ho usato Substance Painter per la texturizzazione, che ci permetterà sia di fare quanto detto, che di correggere alcune imprecisioni. Ho semplicemente importato la mesh lowpoly ed ho fatto il bake della mesh high poly per avere ao, normal e curvature. Quindi ho composto e stratificato svariati layer di mappe grunge e noise per ricreare la giusta riflessione della reference. In pratica la riflessione è composta tanto dalla roughness che dal bump (sono la medesima cosa a scala differente), allora per replicare un dato look si dovrà agire su entrambi questi canali. Ho incontrato solo due problemi in questa fase:

  • Nel basecolor creato dalle foto era lievemente visibile l'illuminazione proveniente dall'alto, data dalla softbox. Pertanto ho effettuato una color correction e l'ho mascherata con un generator light. Questo crea una maschera direzionale, analoga ad una fonte di luce, che  intercetta ed isola porzioni della mesh esposte su una direzione.
  • La riflessione era notevole nella parte superiore della brioche (perchè spennellata d'uovo e poi infornata, e questo crea una patina molto lucida e riflettente), pertanto l'ho separata con una maschera dipinta a mano per lavorare individualmente nell'area in questione.

228d79e448129b3c85ddbc90d2bb2ef2.png

2ff2343de67c9feb31247ae071de1e39.jpg

Brioches | Renderizzazione in 3ds Max

Sono passato infine a 3ds max per finalizzare l'asset. Ho importato la mesh low poly ed applicato le textures create in substance painter ad un sss corona skin material. Il materiale è davvero basico, con lo skin shader che fa quasi tutto il lavoro in realtà. Ho sperimentato anche il normale physical material con sss attivo, ma nelle aree molto sottili è risultato essere meno preciso e “soffice” dello skin shader.

4f106fe21f0015ed472c5a94929c3279.png

Un'eccezione notabile è il tuppo della brioche, che risultava ancora più soffice con un diverso approccio, anche perché alcuni filamenti di mollica erano così sottili che l'SSS non riusciva a schiarirli: ho creato un physical material con refraction attiva (ovvero trasparente), con un piccolissimo valore di assorbimento (inferiore al mm) e la texture l'ho collegata allo scattering color ed all'assorbimento: questo approccio sebbene non fosse fisicamente corretto, restituiva il risultato migliore. Ho inserito tale materiale in un multi/sub-object material per assegnarlo alla sola mollica del pezzo di brioche.


136d1ab221c9b022359cc4d2685b02df.png

1cb89c93e6b59265beb2f6758d2183c9.jpg

Tessuti | marvelous designer + zbrush + substance painter

I panni visibili nell'immagine li ho simulati in marvelous designers per poi essere dettagliati in zbrush. 

Il primo è un panno dentro una cesta: per realizzarlo ho importato una versione semplificata e lowpoly della cesta in Marvelous, simulato la caduta del panno ed in zbrush ho sostituito la cesta con la sua versione reale highpoly, quindi con il pennello move ho aggiustato il panno laddove necessario. 

b0a270129b1cd88a37af8167bb17f4a8.jpg

Le frange le ho realizzate con il  plugin torn https://www.artstation.com/marketplace/p/1eYd/torn-it-zbrush-pluginma : essenzialmente sono delle fibermeshes, quindi creabili anche manualmente mascherando gli edges e sistemando dalle fibermesh option; il plugin velocizza molto la loro generazione ma non automatizza tutto il resto. Ho infatti usato pennelli groom come tosse - lenghten per allungare, pettinare ed aggiustare le fibre lungo il perimetro. Infine ho esportato il tessuto e le frange, queste ultime come geometria 3d invece che come guide 2d: questa scelta sarebbe suicida in molti contesti a causa del peso, ma nel caso specifico erano così poche le frange e la scena così modesta, da non creare il minimo problema di fluidità. Ecco un brevissimo video che ho registrato sull'utilizzo del plugin.

Il panno piegato in primo piano è realizzabile tramite fold arrangement in marvelous designer, che  permette di piegare lungo una linea qualsiasi panno, oppure – come ho fatto io – piegando manualmente la stoffa con l'ausilio di pins. Anche qui allego un breve video con il procedimento.

Ho allora importato il tovagliolo in zbrush, l'ho suddiviso un paio di volte ed ho dato spessore con dynamic thickness, mentre con il pennello dam standard e lazy mouse attivo ho rifinito le cuciture. Quindi ho impiegato degli alpha personalizzati per aggiungere le pieghe e increspature tipiche di qualsiasi panno, le bombature punzonate agli estremi, etc. Nessuna stoffa è esente da queste imperfezioni nemmeno troppo sottili,  e sono una delle chiavi per  dei tessuti realistici.

In susbtance painter ho applicato un materiale cotton comprato su substance source, l'ho modificato aggiungendo altre pieghe ed ho dipinto le righe colorate.

b11eb868f2efa9f99515b09b32fdb53d.jpg

Per il materiale ho voluto testare le nuove opzioni del physical material di Corona renderer per simulare il comportamento del tessuto. Sebbene non sia ancora abbastanza flessibile per materiali tessuto più complessi, l'ho trovato soddisfacente e rapido per cose semplici come il cotone di cui avevo bisogno. Basta regolare il nuovo parametro sheen per distribuire una riflessione sottile e diffusa,  in genere ottenibile con una mappa falloff sul diffuse calibrata a mano. Ho aggiunto un pelo di SSS e considerata terminata quest'altra parte. 

27b18c3793caeb96a631413cdc8052e0.jpg

Coppa | 3ds max

Ho disegnato il profilo low poly con una spline, poi ho inserito un lathe modifier per avere la rivoluzione,  attenzione a fare check su generate mapping coordinates, e quindi un turbosmooth. Ho ripetuto la procedura per le facce interne della coppa, controllando che la curvatura aumentasse verso il fondo della forma. Ho unito le due mesh, rifinito alcuni dettagli e sistemate le uv con unwrap modifier.

77fdde415f8115bf7426a5c448855557.png

Il materiale vetro ha solo una piccola absorption ed un bump sumbliminale ottenuto con una mappa noise. Una mappa grunge con varie colature è stata aggiunta nella roughness, l'ho mescolata con un cellular noise per le bollicine ed un altro grunge adatto allo scopo, il tutto è poi mixato con la roughness nativa del materiale ed influisce per non più del 10%.

0a4dc6c50382db92f2f7bb9ee5cadc05.png

Rattan basket | 3ds max

A questo link ho registrato un esempio di come l'ho realizzato. L'idea alla base del metodo utilizzato è di modellare un cilindro ed estrarne degli edges su cui usare uno sweep modifier. Ci sono svariate possibilità: si potrebbe modellare il cilindro e deformarlo per poi estrarre gli edges già corretti per numero e curvatura, oppure estrarne un singolo, ricreare il cilindro da quello e quindi deformare con taper modificatore, o altro ancora. Il mio workflow sebbene deformi lievemente i profili l'ho trovato affidabile come bilanciamento qualità/rapidità. Ricordarsi in sweep di attivare generate uv coordinates e poi  usare un unwrap per regolarizzarle.

Si potrebbe comunque risparmiare un sacco di tempo con questo script free:  http://www.scriptspot.com/3ds-max/mcg/mcg-cane-basket  , che nel 90% dei casi va probabilmente più che bene. Una volta realizzato il corpo principale del cesto, restano da fare il bordo superiore ed inferiore, una sorta di coronamento di vimini a spirale: ho perciò creato un fascio di linee, su cui ho applicato prima uno sweep modifier e quindi un twist per torcerle, e quindi un WSC path modifier per conformare la mia forma sul percorso circolare.

091026d775c262a7bf86f099e26f890f.jpg

Spoon | 3ds max

Ho semplicemente fotograto un cucchiaino che avevo a casa in vista top e side ed applicato le foto su due planes  in 3ds max come fossero blueprint. Ho modellato su di esse a partire da una spline, una volta impostata la topologia di base è piuttosto semplice procedere, basta muovere pochi vertici e controllare che turbosmooth faccia il suo lavoro. Il materiale è un semplicissimo cromo (preset di corona) con una mappa scratches sulla roughness.

38dbcf4900252deb61335369c00b4262.jpg

Mandorla |  Fotogrammetria worfklow 3ds Max + Tyflow

La mandorla l'ho scansionata seguendo il workflow già descritto per la brioche, ma in questo caso la scarsa illuminazione della softbox mi ha creato qualche problema di definizione. Le crepe ed i rilievi erano di per se già molto piccoli, su un oggetto (la mandorla) lungo appena 1,2 cm, ed in generale la superficie era piuttosto grezza. Tutto questo dettaglio è andato perduto quando ho eliminato il forte noise della foto in lightroom, noise a sua volta dovuto alla necessità di alzare ISO ed abbassare shutter speed per compensare la luce. Pertanto ho scolpito manualmente in zbrush le scanalature perse, aggiunto un primo strato di ruvidità ed ho ulteriormente implementato delle mappe di microbump in substance painter per finire.

36b99dc34e1c05462d5e6381597eca41.jpg

Una volta ricreatq la mesh finale, l'ho importata in max e quindi distribuita nella ciotola con un emettitore tyflow: un semplice disk emitter, una ciotola con attivate la mesh collision (physx shape) ed una piccola forza wind per randomizzare la distribuzione .

38328c7b254ab806b7d3043db369ddf5.png

46e201549be1623c51d6a724128e0237.jpg

Moka | Substance Painter

La mesh originale è del vol.9 di model+model. Ho curato sia unwrapping che texturing per ricreare un diverso feeling. Volevo una caffettiera vissuta e casalinga. Dunque ho speso la maggior parte del tempo ad osservare le references per poi replicare strato dopo strato la “storia” della moka nei suoi piccoli dettagli: un angolo sbeccato, macchie di caffè, fondo ossidato e annerito, residui di schizzi d'acqua e calcare, ossidazione, graffi sugli spigoli, etc, tutto ciò che racconta il percorso di quell'oggetto e lo rende credibile.

05b3ed4cbc53285e9893d94b2ced6f7f.png

Granita | Zbrush + 3ds max + substance painter

Innanzitutto ho modellato una forma base partendo dalle facce interne della coppa lowpoly, ne ho clonato una copia e su questa ho rapidamente modellato un volume che rispettasse la stessa coppa. Ho quindi importato questo volume in zbrush dove ho suddiviso più volte ed iniziato a scolpire dettagli. Non volevo raggiungere un'estrema conta poligonale, perché contavo di appoggiarmi a mappe procedurali di displacement per le micro imperfezioni, ma quantomeno le forme principali e secondarie dovevano essere incluse nella mesh. Ho usato i pennelli clay buildup, smooth e standard, quindi ho creato una alpha personalizzato da usare per le “bolle” nella facce interne, usandolo come maschera e su questa ho “scavato” con move e claybuildup. Per sincerarmi di non star scolpendo contro il vetro della coppa ho importato anche questa in zbrush come subtool per poi lavorare in ghost mode e controllare eventuali sovrapposizioni. Infine ho realizzato in substance painter una maschera per dividere la granita dentro la coppa da quella in cima, per poi in 3ds max poter applicare il displacement solo a quest'ultima. Sempre in painter ho anche creato la texture del caffè filtrato attraverso la mandorla. Questa texture ho avuto buon gioco nel proiettarla a partire da una foto, con la funzione stencil.

ea9e553b4433c5a7ab89c9527fa71b9c.jpg

Infine, l’ultimo tocco di realismo è stato ottenuto grazie all nuovo canale coat del physical material di corona renderer: Il material ha ovviamente SSS scattering attivo, mentre un layer di clearcoat è usato per dare l’effetto bagnato in maniera granulare. Infatti la granita è sempre servita lievemente sciolta, a differenza del gelato, con granuli ancora solidi ed altri liquefatti. Ho ulteriormente accentuato la rugosità con diversi noise compositati nel displacement. Per chiudere il tutto ho aggiunto una pozzetta di caffè liquido: un semplicissimo plane con materiale caffè, su cui ho poi usato una coronadistance map per tingere la granita di marrone nei pressi di questo plane, per simulare l’assorbimento del caffè versato.


Immagine finale

Spero che queste righe possano essere d'aiuto o ispirazione a qualcuno. Grazie a treddi.com per lo spazio dedicatomi e Buon render a tutti.

 c135964a4021019a1e137548069fa088.jpg

PS: se vi steste chiedendo il perchè del caffè sulla granita, bisogna sapere la granita che avevo in mente è quella della mia infanzia: un solo gusto, la mandorla, con del caffè freddo versato sopra, così come mio nonno la prendeva.