The Making Of The Dark Knight
di Christian Ronchi


Il software coinvolto nella realizzazione di questo progetto è stato:
  • [gestione files] Dropbox
  • [retopology, UV mapping] 3ds Max 2014
  • [sculpting, texturing] ZBrush 4R6
  • [texturing] Photoshop CS6
  • [pre-lighting, shading] Marmoset Toolbag 2
  • [rendering] Vray 1.5 SP6
  • [post-processing] After Effects CS6 + Red Giant Particular + Video Copilot Optical Flares
www.dropbox.com
www.autodesk.com/products/autodesk-3ds-max
pixologic.com/
www.adobe.com/it/products/photoshop
www.marmoset.co/toolbag
www.chaosgroup.com/
www.adobe.com/it/products/aftereffects
www.trapcode.com/trapcode-suite/
www.videocopilot.net/products/opticalflares/

Premessa:
Il mio obbiettivo per questo lavoro era di creare un Batman in posa, con una singola inquadratura e senza la necessità di animarlo. Quindi tante delle scelte che ho fatto sono fini a questo scopo. Sia la modellazione che il mapping non sono state fatte con lo scopo di avere un personaggio animabile, quindi non sono scelte ottimali in quel caso.

Gestione dei files:
Ho scelto di lavorare con il sistema cloud Dropbox perché lo trovo particolarmente efficiente, poco invasivo e sopratutto dispone di una indispensabile funzione che uso quotidianamente anche a lavoro chiamata versioning.
Questo sistema tiene traccia di ogni salvataggio che fate sui vostri files (esclusivamente quelli presenti nelle cartelle selezionate) e vi permette di recuperare qualsiasi salvataggio precedente vogliate.
Inoltre è molto comodo se lavorate su computer diversi (esempio il vostro computer di casa e quello al lavoro) perché avrete i dati sempre sincronizzati all’ ultima versione valida e non dovrete preoccuparvi di aggiornarli manualmente.
Se siete interessati l’ iscrizione è gratuita e se usate il mio referral link avrete/emo 500mb di spazio in più: https://db.tt/HcTZR4s
Nella figura sottostante potete vedere la struttura delle cartelle che ho scelto di usare:
MOTDK Fig01
 
Modeling:
Per la modellazione sono partito abbozzando la struttura del personaggio con le ZSpheres, in modo da avere velocemente i volumi giusti e una topologia uniforme.
Ho iniziato a scolpire andando sempre più nel dettaglio fino a quando si è resa necessaria il retopology del modello, che ho realizzato in 3ds Max grazie agli ottimi graphite tools.
Per la maggior parte delle situazioni, il brush che ho usato è stato quasi esclusivamente il ClayBuildUp.
MOTDK Fig02
 
Retopology:
Ho importato in 3ds Max il modello fatto in ZBrush, reso invisibili tutti gli edges (in modo da poter vedere il low-poly in “shade + wireframe” senza essere disturbato dalla mesh highpoly) e assegnato un materiale standard.
Per ritopologizzare sono partito da una primitiva box convertita in edit poly, e tutto il lavoro è stato fatto con le funzioni step build ed extend dei graphite tools.
MOTDK Fig03

Il livello di dettaglio è all incirca omogeneo su tutto il corpo, tranne che ovviamente sul viso, dove la densità di poligoni è all’ incirca doppia rispetto al resto.
MOTDK Fig04

MOTDK Fig05

Ho modellato infine la cintura e il mantello cercando di mantenere il più possibile le facce quadrate per poter in seguito applicare una texture di surface noise e avere omogeneità nel dettaglio.
MOTDK Fig06

MOTDK Fig07

Uv Mapping:
Ho deciso di mappare subito il mio modello, per poter usufruire quanto prima della possibilità di salvare le maschere fatte in ZBrush, in modo da facilitarmi nella successiva creazione delle textures.
L’ unwrap in 3ds Max non è ai livelli di UV Layout ( www.uvlayout.com ), ma è comunque abbastanza efficace.
Applicate Unwrap UVW modifier sulla mesh ritopologizzata, aprite l’ UV editor e iniziate a definire i seams del vostro mapping.
MOTDK Fig08

Si può generare un Unwrap più che sufficiente utilizzando solamente i seams e il quick peel. Se volete avere maggior controllo e flessibilità potete abilitare il peel mode e gestire meglio l’ unwrap utilizzando i Pins per deformare manualmente i clusters.
Quello che funziona peggio per quanto mi riguarda, è il packing delle shell, perché tende a sprecare un sacco di spazio, quindi ho provveduto al riposizionamente manuale delle stesse (un lavoro un pò noioso ma utile per ottimizzare lo spazio).
MOTDK Fig09


Sculpting:
Ho reimportato il mio modello ritopologizzato ed ho trasferito il dettaglio del precedente su di esso, con la funzione Project All ( subtool-project )
Tramite la definizione delle UV, in automatico ho ricavato i polygroups utilissimi sopratutto in questa fase per definire meglio le transizioni dei materiali nel costume e il passaggio costume pelle sul viso.
MOTDK Fig10

Ho proseguito lo sculpting aggiungendo il dettaglio fino al punto che volevo, dopodiché sempre grazie alle UV, ho creato i microdettagli dei tessuti tramite il surface noise utilizzando delle textures che avevo preparato precedentemente.
MOTDK Fig11MOTDK Fig12

MOTDK Fig13

MOTDK Fig14

MOTDK Fig15

Texturing:
Le textures sono state generate senza proiezione di textures gia esistenti, ma utilizzando il dettaglio presente nella scultura come eventuale maschera. Tutto è stato dipinto a mano.
Sono partito creando delle tinte base e utilizzando le ottime funzioni di masking messe a disposizione da ZBrush per creare i dettagli necessari al mio scopo.
MOTDK Fig16

MOTDK Fig17

Oltre alla texture di diffuse ho generato le displacement maps, necessarie per ricreare il dettaglio sulla base mesh in fase di render.
Di seguito i settaggi del multimap exporter per il salvataggio delle displacement maps (un ottimo tutorial sul displacement workflow lo trovate qui: http://www.cggallery.com/tutorials/displacement/ ).
MOTDK Fig18

La creazione delle texture secondarie, come specular, glossiness e emissive, è stato realizzato in Photoshop utilizzando le maschere esportate da ZBrush su dei solidi.
Questo sistema permette un perfezionamento molto veloce perché basta fare doppio click sul solido per avere la possibilità di cambiare colore al volo.
Tutte le textures sono state realizzate alla risoluzione di 8192x8192 in quanto non avevo limiti di memoria da rispettare.
MOTDK Fig19

Contemporaneamente ho impostato la mia scena in Marmoset Toolbag 2 per poter verificare ogni modifica sulle textures velocemente, in quanto serve solo il tempo di ricaricare l’immagine.
MOTDK Fig20

Ho sperimentato varie condizioni di luce per verificare che le textures di specular e glossiness fossero corrette, e ricreassero la diversità di materiali che volevo.
MOTDK Fig21

Rendering:
Il motore di render che ho scelto è Vray, che uso ormai da tantissimi anni. Mi piace molto la sua resa e ormai mi trovo “a mio agio” tra i suoi innumerevoli parametri. La versione è la 1.5SP6 (un pò vecchiotta, ma è quella di cui dispongo una licenza).
Importate le meshes e assegnategli il VRayDisplacementMod, utilizzando questi settaggi e ricordandovi di utilizzare la mappa VrayBmpFilter come contenitore delle vostre Displacement Maps, perché da risultati migliori in quanto non applica nessun filtro di blur all’ immagine.
MOTDK Fig22

Materiali:
Per i materiali useremo solo VrayMaterials, perchè danno risultati più corretti con l’ illuminazione.
Il primo passo è stato assegnare le textures base (sempre tramite VRayBmpFilter) di Diffuse, Reflection, Reflection Glossiness e Hilight Glossiness. Le texture di bump ovviamente non sono neccessarie in quanto ricreaiamo il dettaglio geometrico in fase di render grazie alle Displacement maps

Per implementare l’effetto bagnato ho creato una wetmap con la texture procedurale di 3ds Max chiamata Splat, e l’ ho unita alla texture che uso come Reflection Glossiness e Hilight Glossiness tramite VrayCompTex, il tutto viene poi caricato dentro una mappa di Output per essere calibrata meglio.
MOTDK Fig23

Le gocce d’ acqua sul personaggio sono state create geometricamente, modellando una goccia singola e tramite il compound object Scatter, sparse su tutta la superficie variandone la scala e la rotazione.
MOTDK Fig24

Per mia comodità in fase di lighting, ho preferito creare un mini-rig dell’ effetto bagnato, in modo da poter decidere la quantità di gocce e di lucido sui materiali.
Per fare questo mi sono servito del reaction manager di 3ds Max grazie al quale ho collegato i valori di Threshold della mappa Splat (in comune con tutti i materiali) e di oggetti clonati tramite lo Scatter, a un controller assegnato tramite l’ attribute editor.
MOTDK Fig25

Lighting:
Il setup delle luci è relativamente semplice, la scena doveva ricreare un’ atmosfera notturna, leggermente fumosa, e sopratutto con la pioggia che assieme al character dominasse la scena.
Ho pensato quindi che il soggetto potesse essere illuminato come da un bagliore prodotto da un fulmine, quindi con uno o più colpi di luce molto forti, quasi bruciati.
In totale sono 4 luci più una HDRI specifica per le riflessioni di ambiente (ma che non contribuisce all’ illuminazione della scena).
MOTDK Fig26

Per quanto riguarda la camera, ho usato la Physical Camera di Vray, che permette di usare parametri comuni alla fotografia (apertura, sensibilità, velocità dell’ otturatore ecc…ecc…).
Ho scelto una lunghezza della focale di 100mm in modo da non deformare il soggetto, e ho deciso di non applicare nessun effetto di profondità di campo, in quanto se fosse stato necessario l’avrei aggiunto in post produzione (diminuendo di molto i tempi di render).
MOTDK Fig27

Per non dilungarmi troppo di seguito troverete un immagine con tutti i settaggi di render. L’ ottimizzazione di questi è un passaggio fondamentale quando si utilizza Vray, se no si rischia di avere un immagine con troppo noise, o dei tempi di rendering troppo alti.
MOTDK Fig28

Post Processing
Grazie ai render elements, ho potuto scomporre la mia immagine in più elementi in modo da avere la possibilità, in caso di bisogno, di agire sulle varie componenti in maniera mirata.
I passaggi che ho utilizzato sono stati:
  • Vray DiffuseFilter
  • Vray ZDepth
  • Vray Lighting
  • Vray Reflection
  • Vray Refraction
  • Vray Specular
  • Vray ExtraTex (per l’ Ambient Occlusion)
Tutti questi render pass sono stati salvati in formato .exr a 16bit per avere una profondità colore maggiore, e una precisione più alta per quanto riguarda sopratutto lo ZDepth.
L’immagine che risultava dal render in 3ds Max era abbastanza vicina a quello che volevo come risultato finale. Tuttavia ho preferito avere a disposizione tutti questi elementi separati, per poter apportare delle micromodifiche e bilanciare meglio tutta l’immagine una volta aggiunti anche gli elementi di sfondo e gli effetti.
MOTDK Fig29

Per la creazione del rimbalzo delle goccie sul personaggio, e dell’ increspatura di superficie sul pavimento, ho creato con il PFlow di 3ds Max, due sistemi particellari distinti, anche questi renderizzati separatamente per poi essere usati in compositing.
MOTDK Fig30

MOTDK Fig31

Per quanto riguarda invece la creazione della pioggia vera e propria, ho usato Particular di Trapcode direttamente dentro After Effects. In origine avevo previsto un altro sistema particellare realizzato in 3ds Max, ma ho dovuto trovare un altra soluzione perchè i tempi di render per avere una buona qualità di motion blur e di noise, aumentavano molto.
MOTDK Fig32

Oltre a creare lo sfondo e all’ effetto della pioggia, in After Effects ho fatto anche una leggera color correction dell’immagine, aumentato leggermente l’esposizione, aggiunto un lens flare utilizzando Optical Flares di Video Copilot e una vignettatura.
MOTDK Fig33

MOTDK Fig34

Questo è il risultato finale:
MOTDK Fig35


Conclusione:
Sono stato volutamente generico in alcune parti del tutorial per non dilungarmi troppo, ma se avete domande più specifiche non esitate a contattarmi tramite il mio sito:
www.chricchio.com

Christian.