Irradiance Map - Advanced Tutorial

Post Reply
User avatar
cecofuli
Site Admin
Posts: 419
Joined: 10 January 2008, 17:31
Are you Human?: Yes
Location: Bergamo - Italy

Irradiance Map - Advanced Tutorial

Post by cecofuli » 21 January 2008, 11:43

IRRADIANCE MAP - ADVANCED TUTORIAL


for 3ds Max

CECOFULI

ing_legrenzi@hotmail.com

Image


--------------------------------------

Per chi volesse eseguire il tutorial qui ci sono i file:

- MAX 7 format - <<< DOWNLOAD >>>

- 3ds Format - <<< DOWNLOAD >>>

--------------------------------------

Ciao a tutti, ecco il mio nuovo tormentone. Dopo l'ennesimo rendering, ho deciso finalmente di fare un po' di chiarezza su questi benedetti parametri che tanto amiamo, odiamo e modifichiamo quotidianamente. Ero un po' stanco di utilizzare i preset, perchè non capivo bene quello che stavo facendo. Diciamo che sapevo quello che stavo ottenendo, ma non mi erano chiari alcuni passaggi e così mi son deciso di scrivere questo tutorial, un po' per me, un po' per voi tutti. Premetto che non si tratta di un tutorial base e molte cose le do già per scontate e assimilate. Bene, iniziamo...


PREMESSA: durante la generazione dei render utilizzerò sia PS, FRONTPAGE e altri applicativi attivi. Questo influenzerà negativamente sui tempi di rendering, ma non in modo tale da rendereli non veritieri.


Cercheremo in questo tutorial di fare un po' di chiarezza sui vari metodi di GLOBAL ILLUMINATION ( GI ) in VRay.

Prenderemo in considerazione una semplice scena. Si tratta di un esterno illumminata da una sola fonte luminosa.

fig. 01
Image


DIRECT COMPUTATION

Il primo metodo computazionale della GI è il cosiddetto sistema DIRECT COMPUTATION



fig. 02
Image



Ora è diventato QUASI-MONTE-CARLO dalla V 1.45.xx in poi. E' un metodo molto semplice e anche la sua comprensione lo è: affinchè ogni punto della superficie di un oggetto venga coperto dalla GI, VRay emette dalla fonte luminosa un tot numero di raggi, controllato dal parametro SUBDIVS e ne calcola il numero di rimbalzi col SECONDARY BOUNCE.

fig. 03
Image

Come possiamo notare l'immagine è molto sgranata, ma la soluzione è molto precisa, senza zone a macchie, slavate o con artefatti strani. L'unica cosa che notiamo è un grosso disturbo generale dell'immagine (noise). La prima cosa ovvia che mi viene in mente è quella di alzare il valore dei reggi emessi, e lo portato da 8 a 50.



fig. 04
Image

fig. 05
Image

Ora il noise è molto meno e l'immagine è molto più nitida. Ma anche il tempo ne ha risentito. In questo caso, l'aumento dei SECONDARY BOUNCE non porta nessun beneficio, in quanto essendo una scena all'aperto i rimbalzi secondari giocano un ruolo marginale nell'illuminazione della scena. Durante i rendering ho anche notato una cosa. Quando il bucket arriva al livello del'oggetto curvo impiega moltissimo tempo prima di generare il rendering che non lungo le aree piatte.



Non essendo ancora contenti portiamo il valore delle Subdivs a 100.

fig. 06
Image

fig. 07
Image



Molto bella, ma aimè, i tempi si sono dilatati notevolmente

Il maggior vantaggio che ne traiamo da questo metodo è l'estrema pulizia ed accuratezza del render, oltre ovviamente alla facilità di impostazione stessa. Non ci sono zone a macchie, fastidiosamente sfuocate o slavate. L'ombra è molto precisa anche nelle più piccole fessure. Durante le animazioni fatte con questo sistema non c'è problema di sfarfallio dell'immagine o delle texture, nessun "Flickering" o alterazione di colore.

L'altra faccia della medaglia è la lentezza, che se accettabile in situazioni d'illuminazione semlici, tipo esterni, risulta veramente frustrante in interni o in scene con sistemi complessi di illuminazione. Oltretutto vi è la impossibilità di salvare la soluzione della GI che, se in casi dove vi sono oggetti in movimento questa feature non viene a servire, in animazioni tipicamente architettoniche ( walk-throught ) questa carenza si fa sentire moltissimo.





IRRADIANCE MAP



fig. 08
Image



L'altro sistema, il vero punto di forza di VRay è la cosidetta "Mappa di irradianza" o meglio IRRADIANCE MAP ( IM ) . Con la IM invece di calcolare per ogni punto dell'immagine la GI durante la fase di renderizzazione finale, VRay renderizza l'immagine prima ad una risoluzione inferiore a quella finale, risolve la GI in quel determinato punto,utilizzando una precisa quantità raggi HSph. subdivs proprio come fa la Direct Computation o Brute Force. Se ci sono delle variazioni di colore, di angolazione delle facce o qualsiasi altra interferenza VRay calcola in quelle determinte zone più campionature per la GI. aumentando l'accuratezza della GI.

La fine di questo calcolo è un'insieme di punti distribuiti - mappa - nello spazio 3D i quali hanno all'interno di se informazioni riguardanti lo shading della superficie, appunto la cosidetta IRRADIANCE MAP

Poi, quando VRay deve generare l'immagine finale, invege di calcolare la GI per ogni singolo pixel, può miscelare o interpolare il valore della GI dei singoli punti 3D della IM per trovare la soluzione corretta. La qualità di questa campionatura intemedia è gestita dal parametro Interp. sample

Ora inizia il bello, ossia trovare il giusto equilibri tra i 7 parametri che definiscono la IM. Se impostati in modo errato possono rendere lil calcolo della GI anche più lungo della DIRECT COMPUTATION e con risultati pessimi.

Abbiamo generalmente 3 cose da impostare

- HSph. subdivs

- Interp. sample

- Tasso di campionatura ( da non confondere con il numero di raggi della soluzione GI , ma la campionatura dello spazio immagine)



HSPH SUBDIVISION

Questo partametro controlla la campionatura della soluzione GI. Quando VRay decice di voler dei campioni per la GI immagina un emisfero virtuale allineata alla normale della superficie in quel determinato punto. Dopodichè inizia ad emettere un certo numero di raggi in modo casualeall'interno di questo emisfero. Questi raggi vengono usati per calcolare una valore medio di illuminazione in quel particolare punto. Poi Vray si sposterà nel successivo posizionamento di campionatura. Per ottenere il numero di raggi effettivamente utilizzati bisogna quadrare il valore di HSph. subdivs Così per un valore uguale a 1 VRay utilizza solamente un singolo raggio emesso casualmente. In questo modo si otterrano risultati macchiati. Solitamente si iniziano ad ottenere risultati accettabili da un valore 20 in su. La lista sottostante aiuta a capire quanti raggi effettivamente vengoo utilizzati durante un render. Può essere d'aiuto abche per una stima della durata del render. Per esempio partendo da 25 fino ad arrivare a 50 VRay utilizza un numero 4 volte superiore e presubimilmente il tempo aumenterà di 4 volte. Arrivando a 100 il tempo diventerà 16 volte maggiore

HSphere subdivs: 1 = 1 raggio
HSphere subdivs: 2 = 4 raggi
HSphere subdivs: 3 = 9 raggi
HSphere subdivs: 4 = 16 raggi
HSphere subdivs: 5 = 25 raggi
HSphere subdivs: 6 = 36 raggi
HSphere subdivs: 7 = 49 raggi
HSphere subdivs: 8 = 64 raggi
HSphere subdivs: 9 = 81 raggi
HSphere subdivs: 10 = 100 raggi
HSphere subdivs: 15 = 225 raggi
HSphere subdivs: 20 = 400 raggi
HSphere subdivs: 25 = 625 raggi
HSphere subdivs: 50 = 2500 raggi
HSphere subdivs: 100 = 10000 raggi



Con valori elevati vengono utilizzati molti raggi e l'illuminazione risultarà corretta ed uniforme; con valori bassi l'aspetto sarà macchiato. Questo apsetto a macchie deriva dal fatto che non è stato possibile ottenere una corremma mappa d'irradianza e che i raggi erano troppo pochi. Da notare che sto parlando di macchie presenti già nella mappa d'irradianza, non dell'immagine finale. Certo, con valori elevati di Iterp. Sample ( vedi seguente ) il problema potrebbe essere corretto, ma rischiamo di ottenere un'immagine slavata



VALORI BASSI

- I campioni racchiusi nella IM sono molto disturbati e

- Veloce nella fase di calcolo e generazione della IM

fig. 09
Image

fig. 10
Image

fig. 11
Image



VALORI ALTI

- I campioni racchiusi nella IM sono molto pulitie e ne trae giovamento l'immagine in generale

- Lento nella fase di calcolo e generazione della IM

fig. 12
Image

fig. 13
Image

fig. 14
Image

Come si può notare i campioni non hanno ne cambiato di numero ne la posizione rispetto al precedente test







INTERPOLAZION SAMPLE

Come detto precedentemente questo parametro influisce sull'interpolazione fra due punti facenti parte della IM. Determina quanti campioni GI devono essere usati per l'illuminazione finale per ogni pixel del rendiring.

VALORI BASSI

- Aspetto maculato della GI, in quanto l'interpolazione tra due punti della mappa d'irradianza ha pochi campioni da utilizzare

fig. 15
Image

fig. 16
Image

fig. 17
Image

- Addirittura, con valori bassissimi si può vedere la struttura reale della IM.

- Veloce durante la fase finale di rendering

fig. 18
Image

fig. 19
Image



VALORI ALTI

- L'aspetto maculato viene questa volta sostituito da un effetto slava, sfuocato e offuscante

- Lento nella fase finale di rendering

fig. 20
Image

fig. 21
Image

fig. 22
Image

Come potete notare l'immagine a un aspetto più uniforme, ma molto slavato e privo di dettagli, sopratutto nelle zone d'ombra. Anche il tempo sono aumentati, ma non durante la fase di calcolo per la generazione della mappa d'irradianza che è rimasto identico, ma durante la generazione dell'immagine finale. E' anche da osservare che la posizione e il numero di campioni non sono cambiati ne di numero ne di posizione. Infatti, come ho detto, questo parametro influisce solo la fase terminale del render e non il calcolo vero e proprio della GI



In definitiva questo valore non deve essere ne troppo baso, per evitare un effetto maculoso della GI, ma neanche troppo elevato, il che significherebbe avere un'immagine senza mecchie, ma priva di dettagli e troppo slavata.



MIN RATE - MAX RATE

Vi siete mai chiesti a cosa servono e a cosa si riferiscono?

Molti di voi sicuramente fin'ora hanno dato poca importanza a questi due valori; infatti utilizzando i preset di VRay molte volte l'ipostazione di default è sufficiente per ottenere risultati più che soddisfacenti. Ma se avete mai creato dei render ad altissima risoluzione vi sarete accorti che questi valori di default non sono corretti; o meglio, vanno modificati.

Inizialmente VRay calcola i campioni ad una risoluzione che normalmente è di molto inferiore a quella del rendering finale. Poi decide se aumentare la densità di campionatura in base a determinati parametri, quali il colore, le normali e distanze ben determinate e impostate (vedremo poi come) . Di conseguentza VRay sa dove c'è più bisogno di campioni e li li aumenta. Generalmente si tratta di zone curve o relativamente strette, come spigoli o insenature.

Questi due valori dipendono dalla risoluzione. Inizialmente VRay calcola la GIad una risoluzione minore. Successivamente ripassa l'intera immagine per il calcolo della GI, ma siccome precedentemente era già passaho, ha delle informazioni in più questa volta e sa già dove la GI deve essere più accurata e dove no. Essenzialmente già nel secondo passaggio vedrete che il passaggio sarà molto veloce in quelle zone piane e con illuminazione regolare. Viceversa rallenterà in prossimità di anfratti o superfici curve. Così discorrendo finchè non esaurirà tutti i prepass.

Min rate - Questo valore determina la risoluzione del primo passaggio della GI. Un valore uguale a zerosignifica che la risoluzione sarà la stessa di quella dell'immagine finale. Questo renderà la IM simile alla Direct COmputation. Un valore -1 significa che la risoluzione sarà la metà di quella finale. Solitamente questo valore è bene tenerlo negativo in modo tale che il calcolo della GI sia più veloce sunne superfici ampie e piane.

Max rate - Questo valore determina la risoluzione dell'ultimo passaggio della GI.



Facciamo un esempio: il nostro render ha una risoluzione di 640x361. Se utiliziamo un'impostazione -3,-0 siglnifica che l'immagine iniziale sarà 8 volte inferiore a quella iniziale 2^3=8

. Prepass 1: La GI viene calcolata ad una risoluzione 80x45 ( = 640/2/2/2 e 361/2/2/2 )

. Prepass 2: La GI viene calcolata ad una risoluzione 160x90 ( = 640/2/2 e 361/2/2 ) che però in questo caso VRay possiede già delle info ricavate dal 1° passaggio

. Prepass 3 La GI viene calcolata ad una risoluzione 320x180 ( = 640/2 e 361/2 ) che però in questo caso VRay possiede già delle info ricavate dal 2° passaggio

. Prepass 4: La GI viene calcolata ad una risoluzione 640x361 che però in questo caso VRay possiede già delle info ricavate dal 3° passaggio



Poichè ogni passaggio che compie VRay ha sempre delle informazioni in più, sa dove caloclare meglio la GI e concentrarsi meno su aree meno dettagliate.



Se volessimo raddoppiare la risoluzione e portarla a 1280x722 dovremmo impostare valori -4, -1 infatti avremo sempre 4 prepass alle stesse risoluzioni

. Prepass 1: La GI viene calcolata ad una risoluzione 80x45 ( = 1280/2/2/2/2 e 772/2/2/2/2 )

. Prepass 2: La GI viene calcolata ad una risoluzione 160x90 ( = 1280/2/2/2 e 772/2/2/2 ) che però in questo caso VRay possiede già delle info ricavate dal 1° passaggio

. Prepass 3 La GI viene calcolata ad una risoluzione 320x180 ( = 1280/2/2 e 772/2/2 ) che però in questo caso VRay possiede già delle info ricavate dal 2° passaggio

. Prepass 4: La GI viene calcolata ad una risoluzione 640x361 ( = 1280/2 e 772/2 ) che però in questo caso VRay possiede già delle info ricavate dal 3° passaggio





A questo punto potrebbe sorgere una domanda: poniamo il caso di realizzare un render a 640x361 con valori -3, -1 . Abbiamo 3 passaggi :

. Prepass 1: La GI viene calcolata ad una risoluzione 80x45 ( = 640/2/2/2 e 361/2/2/2 )

. Prepass 2: La GI viene calcolata ad una risoluzione 160x90 ( = 640/2/2 e 361/2/2 ) che però in questo caso VRay possiede già delle info ricavate dal 1° passaggio

. Prepass 3 La GI viene calcolata ad una risoluzione 320x180 ( = 640/2 e 361/2 ) che però in questo caso VRay possiede già delle info ricavate dal 2° passaggio

in questo caso non abbiamo il 4 passaggio, in quanto abbiamo detto a VRay che come Max Rare doveva fermarsi a -1, quindi ad una risoluzione metà di quella iniziale

fig. 23
Image

fig. 24
Image

fig. 25
Image

PS: d'ora in poi le immagini dove compaiono i sample verranno generare riutilizzando la mappa creata per la versione in shade così da risparmiare tempo. La fig. 25 è la prima



Ora realizziamo un render a 640x361 con valori -2, 0 . Abbiamo sempre 3 passaggi pero...

. Prepass 1: La GI viene calcolata ad una risoluzione 160x90 ( = 640/2/2 e 361/2/2 )

. Prepass 2: La GI viene calcolata ad una risoluzione 320x180 ( = 640/2 e 361/2 ) che però in questo caso VRay possiede già delle info ricavate dal 1° passaggio

. Prepass 3 La GI viene calcolata ad una risoluzione 640x480 che però in questo caso VRay possiede già delle info ricavate dal 2° passaggio

fig. 26
Image

fig. 27
Image

fig. 28
Image

Come osserviamo oltre all'aumento del tempo vi è stato anche un aumento dei sample collezionati all'interno della IM, anche se i prepass sono gli stessi!



Ora invece impostiamo i valori come nell'esempio iniziale -3,-0 Abbiamo 4 passaggi però

. Prepass 1: La GI viene calcolata ad una risoluzione 80x45 ( = 640/2/2/2 e 361/2/2/2 )

. Prepass 2: La GI viene calcolata ad una risoluzione 160x90 ( = 640/2/2 e 361/2/2 ) che però in questo caso VRay possiede già delle info ricavate dal 1° passaggio

. Prepass 3 La GI viene calcolata ad una risoluzione 320x180 ( = 640/2 e 361/2 ) che però in questo caso VRay possiede già delle info ricavate dal 2° passaggio

. Prepass 4: La GI viene calcolata ad una risoluzione 640x361 che però in questo caso VRay possiede già delle info ricavate dal 3° passaggio

fig. 29
Image

fig. 30
Image

fig. 31
Image

Anche se abbiamo 4 passaggi, il primo è ad una risoluzione di 80x45, inferiore a 160x90 e quindi i campioni sono minori, anche se è stato fatto un passaggio in più. Infatti se sovrapponete le 2 immagini , quella fatta a -3, -1 e questa fatta a -3, 0 i samples coincidono ed in quest'ultima, ovviamente. Altra osservazione: i tempi , che sono stati maggiori rispetto alla soluzione con -3, 0 (ovviamente)

--------------------------------------

User avatar
cecofuli
Site Admin
Posts: 419
Joined: 10 January 2008, 17:31
Are you Human?: Yes
Location: Bergamo - Italy

Re: Irradiance Map - Advanced Tutorial

Post by cecofuli » 21 January 2008, 12:18

COLOR THRESHOLD, NORMAL THRESHOLD, DISTANCE THRESHOLD

Cosa saranno mai questi tre valori... Mah... vediamo se riesco a spiegarvelo... allora



Clr thresh - questo parametro controlla quanto VRay è sensibile alla variazione della luce indiretta. Valori alti significano meno sensibilità, velocità di calcolo e minor qualità

Nrm thresh - questo parametro controlla quanto VRay è sensibile alla variazione dei dettagli lu e alla variazione delle normali. Valori alti significano meno sensibilità, velocità di calcolo e minor qualità

Dist thresh- questo parametro controlla quanto VRay è sensibile alla variazione della distanza tre le superfici. Un valore 0.0 significa che VRay nonverrà influenzato da questo parametro. Più è alto e maggiori saranno i campioni presi in considerazione da VRay tre oggetti che ganno superfici vicine



Semplice no? Questa spiegazione vuol dire tutto e niente. Vediamo nel dettaglio. Facciamo un esempio. Impostiamo i valori di Min e Max Rate su -5, -1. VRay fa quanti passaggi? Ora lo sapete e non ve lo dico. Ogn'uno comunque è in termini di campionatura, più piccolo del precedente. VRay conosce ormai già le aree con più dettaglio geometrico e di colore. Il calcolo del secondo e del terzo passaggio ecc.. nelle zone piatte avviene più velocemente


fig. 32
Image





COLOR THRESHOLD

Facciamo alcuni esempi. Impostiamo la scena come da figura


fig. 33
Image

Questo è il risultato


fig. 34
Image



Commentiamola. Possiamo vedere come i campioni siano distribuiti in maniera irregolare, ma con una certa uniformità. Non vi è distinzione tra zone d'ombra o zone direttamente colpite dal sole. Tutto è tristemente uguale. Ho forzato esplicitamente quasto esempio, come un po' tutto il tutorial, i valori, e in questo caso proprio il parametro Clr thresh portandolo a 1 proprio perchè volevo mostrarvi macroscopicamente il suo significato. Ora portiamolo a un valore nella norma.


fig. 35
Image


fig. 36
Image

Spingiamo oltre questo valore


fig. 37
Image


fig. 38
Image

Ancora oltre...


fig. 39
Image


fig. 40
Image

Ghhh ghhh.... praticamente tutta la scena è un sample unico! Sarà perchè son le 4.00 di mattina...

Penso che i commenti vengno da soli! Comunque ora le aree a più forte differenze di luminosità sono state beccate dal M-I-T-I-C-O VRay



NORMAL THRESHOLD



Ora passiamo al Nrm thresh. Sinceramente non ho notato queste grandi differenze utilizzando variazioni anche significative di questo parametro. Vediamo nel dettaglio


fig. 41
Image


fig. 42
Image

Modifichiamo e tiriamo verso il basso 'sto parametro


fig. 43
Image


fig. 44
Image

Anche con un valore così basso le differenze sono veramente poche; leggermente sulla superficie curva del toro, ma nulla più.



DISTANCE THRESHOLD


Anche qui avanti con gli esempi...


fig. 45
Image


fig. 46
Image

Modifichiamo un po' le impostazioni e alziamo i parametri


fig. 47
Image


fig. 48
Image

Tadaaa... ecco un modo come migliorare ed eliminare li difetti negli angole e in zone strette



La versione finale


fig. 49
Image

E quella calcolata in Direct Computation

Image

Non male sia come tempi che come qualità. Avrei potuto ottimizzare ancora qualche cosa, ma " so sdernat "



I samples della versione finale, renderizzati con la GI presalvata ovviamente.



fig. 51
Image



Bene, sono le 4.30 di mattina, forse è ora di staccare... A presto con un altro tutorial avanzato su VRay, questa volta sulla light cache implementata nella v1.46.15 di VRay.


2008 © Francesco Legrenzi

arq.chacon
Posts: 1
Joined: 11 May 2011, 17:46
Are you Human?: Yes

Re: Irradiance Map - Advanced Tutorial

Post by arq.chacon » 11 May 2011, 18:10

Hi CECOFULI I read the tutorial on this issue has exposed the truth I am a rookie and I know how to adjust my gustria parameters of Min and Max Rate in the Irradiance Map.

to be more specific as what would be the Min and Max Rate of Resolution 2500 x 1600 for example?

What would be the factors that influence the desicion of the Irradiance Map?

Thanks.

User avatar
cecofuli
Site Admin
Posts: 419
Joined: 10 January 2008, 17:31
Are you Human?: Yes
Location: Bergamo - Italy

Re: Irradiance Map - Advanced Tutorial

Post by cecofuli » 17 May 2011, 16:11

Hi arq.chacon

If at 640x480 we use -3 0 for High quality, at 2500 x 1600 I suggest you -5 -2
The min and max rate is resolution dependent, so more resolution, less Min and Max rate.

Bye

Francesco

Romes
Posts: 2
Joined: 22 January 2012, 12:29
Are you Human?: Yes

Re: Irradiance Map - Advanced Tutorial

Post by Romes » 22 January 2012, 12:46

Thanks!

Post Reply