« Hic sunt leones! | Home | App[render] il render… »

Texture Baking e Ambient Occlusion con 3DStudio Max Design

Scritto da Silicon_Simon.
Lunedì 03 Febbraio 2014, 12:43 pm. Tag usati: , , ,

 

Introduzione

La moderna rappresentazione d'architettura si affida in misura sempre maggiore alla visualizzazione digitale: alcune tecniche “tradizionali” infatti, come il disegno al tratto o il disegno tecnico (drafting), non sempre sono sufficienti per la corretta trasmissione delle informazioni spaziali che descrivono luoghi, scene e geometrie.

Texture baking in ambient occlusion

Ecco quindi che alcuni algoritmi pertinenti la computer graphics possono essere combinati per raggiungere questa finalità espressiva, utilizzando i modellatori digitali per la generazione di immagini in grado di “raccontare” i pieni e i vuoti al pari del disegno classico, attraverso modelli tridimensionali.
In questo post verranno esposte alcune tecniche per il baking delle tessiture di occlusione ambientale su modelli tridimensionali complessi, specificatamente preparati per poter essere esportati da 3D Studio Max Design verso altri programmi di modellazione/visualizzazione, senza perdere l’informazione dei materiali.

Il significato di Texture Baking

Il Texture Baking è un processo algoritmico che recupera le informazioni dalla scena, come il colore o l'illuminamento delle superfici, per poi mapparle sullo spazio UV delle superfici dell’oggetto stesso.
In sostanza, si tratta di eseguire un render il cui risultato, poligono per poligono, è applicato ai poligoni stessi; questo principio consente di eseguire onerosi calcoli di render solamente una volta dal momento che i risultati possono essere riutilizzati graficamente evitando, ad ogni movimento del modello, la necessità di ricalcolare l'illuminazione e la superficie ombreggiata.
Prima di procedere tuttavia, sono necessari alcuni controlli da effettuare sul modello 3D e sulla sua corretta topologia.

 

Preparazione del modello 3D

Prima di ogni altra operazione, accertarsi di lavorare su una copia del modello originale. In questo workflow si genereranno nuove mappe di tessitura quindi non è un problema se il modello non è stato precedentemente mappato.
A tal fine, sul file di copia, rimuovere tutte le coordinate di mappatura e le textures eventualmente impostate.
2014-02/1_1.jpg Per ottenere questo risultato, selezionare tutto il modello e:

  • attivare dal menu Utilities (icona con il martelletto) l’opzione More… poi selezionare UVW Remove.
  • dopo aver confermato con OK, selezionare dalla voce Remove sia UVW che Materials e spuntare Set Gray.


E’ ora necessario lavorare con un modello composto solamente da poligoni (quindi nessun gruppo, nessuna Symmetry, nessun modificatore aggiunto allo storico delle geometrie). Per ottenere questo risultato si possono percorrere diverse strade:

  • si può modellare sin dall'inizio della lavorazione in box modeling;
  • si può esportare il modello generato canonicamente in formato FBX, mantenendo la geometria ma non le luci, le camere, le animazioni, i vari media  e i materiali (il modello può poi essere re-importato in 3D Studio e verificato nella sua correttezza geometrica - è normale che una nuova importazione faccia aumentare di molto le dimensioni del file);
  • si possono aprire singolarmente tutti i gruppi creati e si può collassare ogni oggetto in poligoni (attraverso il noto tasto destro del mouse); 2014-02/2.jpg
  • oppure è possibile utilizzare un MAX Script, ovvero un pezzetto di codice che permette di aprire automaticamente tutti i gruppi e i sottogruppi esistenti nella scena, purchè non lasciati aperti. Per usare lo script, selezionare il menu a discesa MAXScript -> Run Script… e selezionare il file ungroup.ms, scaricabile a questo link. Giunti a questo punto, si possono selezionare tutti gli oggetti e tramutare in poligoni collassandoli con il tasto destro del mouse.

 

Il significato di Ambient Occlusion

Nella letteratura scientifica, il procedimento matematico che porta all’applicazione dell’ambient occlusion (in seguito AO) è molto ben documentato. Di solito questo metodo di rappresentazione, nato per simulare effetti di illuminazione diffusa, viene utilizzato da solo o in combinazione con altri shaders più complessi, nei render statici. In estrema sintesi, si tratta di una tecnica in grado di simulare l’ombreggiamento delle superfici, riproducendo un effetto di occlusione ambientale che simula l'illuminazione globale; se si immagina la luce diffusa che popola una scena, gli spigoli più o meno acuti tra i piani geometrici degli oggetti sono quelli meno investiti dal flusso luminoso. In altre parole la luce risente dell’occlusione (cioè dell’ombra di prossimità) degli elementi nell’ambiente, da cui il nome della tecnica. L’algoritmo grafico pertanto illumina in maniera differenziale le superfici, tenendo gradualmente in ombra le parti occluse (quelle dove arriva meno luce).
Per un approfondimento più esaustivo e per la descrizione di alcuni metodi applicativi per render statici con differenti software (non oggetto di questo tutorial) si rimanda al post specifico di qualche tempo fa.

 

Combinazione di Ambient Occlusion e Texture Baking in 3DStudio MAX Design

Scopo di questo brevissimo tutorial è quindi combinare le due tecniche per ottenere un modello poligonale semplice, per il quale sia calcolata l’occlusione ambientale delle singole faccette, trasformata in mappature specifiche, automaticamente applicate al modello stesso.
In questo modo la rappresentazione tridimensionale verrà “arricchita”, con la possibilità di esportare successivamente il modello in ambienti di visualizzazione come Google Earth, applicativi real time, player web, ecc…
2014-02/3.jpgIn 3D Studio Max Design è possibile attivare il processo di texture baking a partire dal menu Rendering -> Render to Texture (oppure premendo il tasto “0”).
Ancora una volta, accertarsi di lavorare su una copia del modello originale.
Il processo che si sta per avviare può richiedere anche molto tempo di calcolo, in funzione della complessità del modello da trattare. In una prima fase verranno generati i nuovi parametri UV di mappatura, con conseguente impiego di memoria RAM, mentre nella seconda fase verrà calcolato il render per i poligoni, con impiego massiccio delle risorse di CPU.
Una volta specificato il percorso di output dei file da generare, si selezionino tutti i componenti geometrici del modello (appariranno in lista nel campo Objects to Bake). Si può aumentare il padding a 10 (tale valore eviterà in rendering la presenza di seams evidenti, come verrà esposto più oltre, anche se si tratta solo di una soluzione di massima del problema).
In Output, tramite il pulsante Add, si selezioni Ambient Occlusion dalla lista che apparirà a video.
Successivamente si indirizzi il risultato del calcolo di AO nella Target Map Slot -> Diffuse color (è lo stesso principio che assegna una mappa di diffusione a un nuovo materiale standard).
In Selected Elements Unique Settings, portare inizialmente i Samples a 50. Tale valore influenza la “granulosità” dell’AO: più è alto, più l'AO sarà di qualità, ma più richiederà tempo per essere calcolata.
Il baking di 3D Studio di solito pone le mappe calcolate sopra quelle eventualmente originali, conservandole. Per fare questo, utilizza un materiale Shell che le ospita entrambe. Nel caso di questo tutorial invece, si vuole sostituire il materiale originale con quello di AO calcolato. Si selezionerà quindi Output into source.
Alla voce Automatic Mapping, nel menu Automatic Unwrap Mapping, si porti lo Spacing a valori prossimi allo 0,0. In tal modo verrà risparmiato spazio nella mappatura, evitando difformità e texture bleedings.
Accertarsi anche di aver selezionato Rotate Clusters e Fill Holes per ottimizzare la mappatura finale, salvando ancora spazio UV. I risultati del texture baking con ambient occlusion si vogliono visualizzare sia in viewport che in render, quindi si spunteranno entrambe le opzioni a bordo finestra.

N.B.: In alternativa, soprattutto quando si prevede di esportare il modello verso altri applicativi non Autodesk, in Baked Material Settings è possibile attivare la generazione di un nuovo materiale Shell, specificando un Create New Baked -> Standard:Blinn.
Questo materiale, pur non consentendo successive modifiche complesse allo shader, garantirà una buona compatibilità di esportazione.

 

Il ben noto problema dei seams

Il texture baking con ambient occlusion in Mental Ray genera spesso (anzi quasi sempre) un noto problema, vale a dire la visualizzazione di seams presenti nella tessitura e corrispondenti al bordo di interruzione delle mappe.
2014-02/6.jpgErroneamente, uno dei metodi più gettonati per risolvere il problema di eliminazione dei seams è quello di alzare il valore di padding nel menu Selected Object Settings in un range che va da 15 a 20 (il massimo è 64). Infatti la visualizzazione del frame render buffer durante il calcolo del baking non risente ancora di questo effetto, che viene aggiunto successivamente, frastagliando i bordi degli oggetti sulle immagini raster delle mappature, per "coprire" l'effetto dei seams. Tuttavia, selezionando molti elementi da calcolare, il padding non serve proprio a nulla e i seams continuano a far bella mostra di sè nei render finali!

Curiosamente, il motore Mental Ray in 3D Studio Max Design però funziona bene e senza seams se gli oggetti vengoro renderizzati uno alla volta.

Così, se la scena risulta composta da molte centinaia di oggetti, è possibile inserire le variabili nella finestra di Render to Texture, come visto in precedenza ed attivare uno script che possa ciclicamente realizzare un texture baking singolo. In alternativa esistono anche script commerciali in grado di ottenere gli stessi risultati, come RTTAssist, che però non viene più aggiornato da un po' di tempo.

Prossimamente su questa pagina verrà pubblicato un breve script per ottenere questo risultato.

 

L'esportazione del modello in formato .OBJ con mappature corrette

Il formato .OBJ di Wavefront è il formato più utilizzato per lo scambio di geometrie con relative texture mappate tra modellatori tridimensionali. Tuttavia ogni software in commercio parla una sorta di "dialetto" OBJ, rendendo talvolta la trasformazione difficoltosa. Il plugin di esportazione per 3D Studio poi, inserito nel pacchetto dalla versione 9, è ancora più caotico da utilizzare nonostante alcuni setup di esportazione memorizzati, che difficilmente però portano a risultati concreti.
Scopo finale di questo tutorial è ottenere un file OBJ con il baking dell'ambient occlusion correttamente memorizzato e apribile in programmi standard tipo Blender, senza passare per altri software o plugin e senza ricorrere a traduzioni intermedie, come FBX.

2014-02/9.jpg Una volta ottenuto un baking soddisfacente, si proceda attivando dal menu 3DS -> Export -> Export -> Formato gw::OBJ-Exporter.
Nella finestra che si ottiene a video, possono essere specificate le impostazioni in figura (click per ingrandire, il significato di ogni dichiarazione è documentato nel manuale di 3D Studio), in modo da generare una geometria accurata, con normali e tessiture, ma soprattutto con la produzione di una cartella denominata maps all'interno della quale verranno posizionate in automatico le mappe raster del baking, con il vantaggio di ottenere una mappatura coerente all'originale.
2014-02/8.jpg E' importante notare che 3D Studio mappa il baking su un canale specificabile al momento dell'assegnazione della diffusione dello shader. In questo caso l'ambient occlusion calcolata è stata mappata sul canale di diffusione 3 di ogni shader, associato poi automaticamente alle geometrie.
Ciò può essere verificato in qualunque momento,  controllando per ogni oggetto il valore di canale alla voce di channel dell'Automatic Flatten UV applicato dal baking.

2014-02/10.jpgIl file OBJ così generato può essere aperto correttamente da Blender, verificando il risultato con l'attivazione delle mappature nella viewport, attraverso la spunta alla voce Textured solid in Shading. Qui, è possibile scaricare un file di test ottenuto mediante il procedimento esposto.

 

Nessun commento



(optional field)
(optional field)

In questo sito si attua la moderazione dei commenti. Questo significa che il tuo commento non è visibile finché non viene approvato da un moderatore.

Mantenere le informazioni personali?
Nota: Tutti i tag HTML eccetto <b> e <i> saranno rimossi dal commento. Puoi inserire collegamenti semplicemente scrivendo un URL o un indirizzo e-mail.

Info

Dal 2004 questo piccolo angolo di rete raccoglie gli interessi di ricerca e i lavori di sperimentazione digitale di Simone Garagnani in materia di cultura geek, ma soprattutto di Building Information Modeling, rilievi digitali ad alta risoluzione e computer graphics legata al mondo dell'architettura, dell'ingegneria e delle costruzioni. TC Project, è presente anche sul social network Facebook.

 

Welcome to these pages that host since 2004 Simone Garagnani's personal blog, a collection of nerd notes and geek experiences focused sometimes on Building Information Modeling, terrestrial laser scanning, digital photogrammetry and computer graphics applied to the AEC world. The TC Project is also available on Facebook.


Segui le attività in TC Project: Registrazione
Follow TC Project activities: Registration/login

GreenSpider

GreenSpider

GreenSpider plug-in for Autodesk Revit

Free download here (latest release)

Cerca!

Categorie

  • English (23)
  • Italiano (4)
  • Ingegneria (9)
  • Architettura (13)
  • Design (0)
  • Ricerca e sviluppo (27)
  • Eventi (24)
  • Pubblicazioni (8)
  • Materiali didattici (5)
  • GreenSpider (10)
  • Berkeley (15)
  • Pixar (4)
  • Retrocomputing (4)
  • SGI (5)
  • Keio (3)
  • Serious fun (8)
  • Archivi

    Ultimi commenti

    Trevor Dwyer (VIC-20 The friend…): Hi there, I feel your pain on updates and the internet not being the same these days – well since 199…
    SiliconSimon (Cray-1 - The home…): If someone is interested in my little Cray’s files, please PM me since I do not often read comments o…
    SiliconSimon (Cray-1 - The home…): Of course Mike, I sent you a PM!
    Robert (Cray-1 - The home…): If it’s possible, I would love to get the files from you for this project. I have a Cray-1 chip sitti…
    Mike (Cray-1 - The home…): Are the files still available?
    MojaMonkey (SGI VW540 @ TC La…): Hi Simon? This is a long shot but I was wondering if you have a copy of the SGI drivers required to…