Jump to content
dagon

Fun With Mental Ray 3.7.1.26

Recommended Posts

Come ogni anno all'uscita del nuovo mental ray vi propongo qualche test, i primi in particolare riguardano l'IP e fanno parte di una serie di mini-tutorial e sperimentazioni fatte per il thread ufficiale sul sito lamrug.org, vi invito a partecipare numerosi a quel thread perché viene letto da alcuni degli sviluppatori dell'IP e i feedback della gente aiutano sicuramente a migliorare le cose.

Per chi non conoscesse l'IP invito a fare una ricerca sull'help di Maya alla voce Irradiance Particles oppure a leggere il primo post di questo thread su cgtalk.

Questa è una breve analisi che ho fatto sulle opzioni messe a disposizione da questo nuovo algoritmo di global illumination.

Partiamo dalle due tipologie principali:

1- IP non-interpolata (Interpolate = never)

2- IP interpolata (Interpolate = always)

Questi due metodi differiscono tra loro per come viene calcolata l'irradianza finale dell'immagine. Nel caso dell'IP interpolata questa viene calcolata tramite un pass precedente al computo dell'immagine (un po' quello che succede col Final Gather per intenderci), nella cache (mappa dell'IP) entrano a far parte tutte le informazioni relative all'irradianza, quindi primary e secondary bounces.

Nel caso dell'IP non-interpolata invece i valori di irradianza finali (i primary bounces in poche parole, quello che viene visto attraverso la camera), vengono calcolati at-rendertime (durante il raytracing, o, se preferite, durante il calcolo stesso dell'immagine).

1- IP non-interpolated

Come potrete capire questo tipo di calcolo porta a risultati molto qualitativi, molto simili (anche se non totalmente) a un render di tipo "brute force" o "unbiased". I tempi di rendering ovviamente ne risentono non poco.

Il mio intento è quello di farvi capire in che modo velocizzarne il calcolo.

Depth and Passes

L'Irradiance Particles calcola l'illuminazione indiretta (per ora solo di tipo diffuse-diffuse) tramite una serie di passes, che rappresentano i rimbalzi di luce indiretta.

Passes = 0 significa un solo rimbalzo di luce indiretta (un po' quello che otteniamo attivando il FG senza secondary bounces)

Passes = 1+ significa 1 o più rimbalzi di luce indiretta

Passes = -1 (presente solo in mray3.7 o superiori) significa nessun rimbalzo di luce indiretta e serve per calcolare esclusivamente la luce proveniente dall'environment

E' bene tenere a mente che il calcolo dell'Irradiance Particles è strettamente legato a quello degli "importons".

Gli "importons" permettono di determinare le zone di importanza della scena (quelle in cui è necessario utilizzare un maggior numero di samples/campioni).

Possiamo vedere nello schema seguente una serie di rendering che vi mostrano i risultati e i tempi di rendering al variare di depth e passes:

depthpassesvq8.th.jpg

La voce "Depth" del menu importons determina quanti rimbalzi effettuano gli importons, questo valore non è equivalente al numero di rimbalzi di luce indiretta, ma vi è strettamente legato.

In sostanza se utilizzate depth = 0 potrete ottenere soltanto un rimbalzo di luce indiretta, anche se utilizzate un numero di passes maggiore di 0.

Se invece utilizzate come depth un valore maggiore di 0 potrete far calcolare all'IP un numero illimitato di passes, tenendo presente però che la qualità degli importons migliorerà al crescere del depth.

In sostanza depth va impostato sempre >0 (tranne nel caso in cui vogliate un solo rimbalzo di luce indiretta).

Consigli: usate sempre un valore abbastanza alto per il depth (2/4) e non eccedete col valore dei passes, se non è strettamente necessario (esterni:2/3, interni:3/5)

Importon Emitted (Importon Density)

Questi valori permettono di definire quanti importoni vengono lanciati dalla camera verso la scena.

E' facile capire che questo fa dell'IP un metodo prettamente "view dependant", esattamente come il Final Gather. In sostanza il calcolo dell'irradianza tiene in considerazione tutto quello che viene visto attraverso la camera e le eventuali interazioni tra le superfici visibili e le altre superfici in scena.

Il numero degli importons può essere definito in due modi:

- Importons Emitted, definisce il valore assoluto di importons utilizzati, ed è dunque slegato dalla risoluzione dell'immagine.

- Importons Density, definisce il numero di importons correlandolo alla risoluzione dell'immagine, per Density = 1 si intende 1 importon per pixel (in un'immagine 1.000x800 gli importons saranno 800.000, in un'immagine 1.200x1.000 saranno 1.200.000), Density = 0,5 1 importon ogni 2 pixel e così via...

N.B.

Nella mia analisi sto utilizzando lopzione Importons Emitted, che non è quella consigliata (in sostanza teoricamente Importon Density sarebbe una scelta migliore perché definisce in maniera "view dependant" l'importanza della scena, dando maggiore importanza agli oggetti più vicini alla camera e minore a quelli lontani)

La mia scelta è stata fatta dopo aver riscontrato alcuni problemi nel calcolo dell'irradianza utilizzando l'opzione Importon Density.

In ogni caso potete fare i vostri test anche utilizzando Importon Density, correlando i miei valori assoluti ai vostri valori relativi alla risoluzione dell'immagine (ad esempio, io renderizzo in 640x480 = 307.200, quindi per ottenere un valore simile ai 30.000 fotoni dovrete utilizzare un Density = 0,1)Se invece volete utilizzare Importon Emitted come me su Maya 2009 dovrete attivarlo tramite script

setAttr -type "string" miDefaultOptions.stringOptions[27].name "importon emitted";

setAttr -type "string" miDefaultOptions.stringOptions[27].type "integer";

setAttr -type "string" miDefaultOptions.stringOptions[27].value "10000";

e andarlo a modificare tramite miDefault

Una volta attivato Importon Emitted il Density viene disabilitato di default.

ipnointem3000r200er200bpk2.jpg

ipnointem10000r200er200dg2.jpg

ipnointem30000r200er200cd2.jpg

ipnointem100000r200er20dn8.jpg

ipnointem300000r200er20ke1.jpg

Come potete vedere il numero di importons definisce la qualità dell'immagine in termini di dettagli, maggiore è il numero di importons maggiori saranno i dettagli (in sostanza è questo il valore che differenzia l'IP non interpolata da un metodo totalmente unbiased)

Consigli: partite con un valore basso, usando valori molto bassi di AA (specialmente se state utilizzando l'IP non interpolata), e aumentate gli importons solo se vedete degli artefatti sull'immagine oppure se volete più dettagli (density 0,02/0,3; emitted 5.000/200.000)

Irradiance Particles Rays

Definisce il numero di QMC rays utilizzati per campionare l'irradianza, determinano quindi la qualità di visualizzazione (il così detto noise).

In sostanza per ogni importon utilizzato che raggiunge una superficie da renderizzare e definisce un punto di campionamento, vengono lanciati a emisfera un certo numero di rays. Il campionamento viene effettuato inoltre per ogni pass dell'IP.

ipnointem30000r2er200b4an8.jpg

ipnointem30000r50er200bpr8.jpg

ipnointem30000r200er200xi0.jpg

ipnointem30000r500er200fx8.jpg

ipnointem30000r1000er20mj0.jpg

Valori Bassi di Rays portano ad avere una maggiore effetto di noise, valori alti migliorano la qualità (aumentando i tempi di rendering).

Per le ragioni dette prima è importante tenere presente che il numero totale di Rays (campioni) utilizzati nel calcolo viene influenzato, oltre che dai Rays stessi, anche dal numero di importons e dal numero di passes.

Irradiance Particles Env. Rays

Controlla il numero di rays utilizzati per il campionamento dell'environment.

Una delle principali innovazioni dell'IP è proprio limportance sampling dell'environment, questa caratteristica permette di calcolare correttamente i valori di irradianza generati dalla mappa di environment, portando ad effetti molto più precisi che in passato.

ipnointem30000r200er2b4tc4.jpg

ipnointem30000r200er50bon9.jpg

ipnointem30000r200er200hm6.jpg

ipnointem30000r200er500bx7.jpg

ipnointem30000r200er100wl0.jpg

Come potete vedere gli Env. Rays definiscono la qualità dell'illuminazione generata dall'environment, i tempi di rendering (a differenza del parametro IP Rays) non vengono influenzati più di tanto, perché il campionamento viene eseguito una sola volta (all'inizio del calcolo) e non per ogni pass dell'IP.


Edited by dagon

Share this post


Link to post
Share on other sites

IP Setup

Questa è una breve guida sul setup dell'IP non interpolata. 

Lo scopo è quello di darvi le basi per capire in che modo si possa ottimizzare per migliorarne i tempi di rendering (tenendo presente che questo è un metodo molto qualitativo e quindi la velocità di rendering è comunque relativa)

N.B.

Nel mio tutorial sto utilizzando Maya 2009 e mental ray 3.7, per versioni precedenti di mental ray (Maya 2008, Max 2009) potreste avere maggiori problemi, in quanto alcuni problemi/bug sono stati risolti.

Per prima cosa è importante definire quale sia il livello di dettaglio per la nostra scena (che varierà poi da scena a scena e da lavoro a lavoro ovviamente)

Per avere dei feedback veloci vi consiglio di iniziare i test con valori bassi di Rays, importons, Env.Rays (anche se quest'ultimo influenza meno i tempi di rendering) e AA:

Importons Rays = 64

Env.Rays = 64

AA: -2 -1

Ricordatevi di specificare un nome per l'IP map in modo da poterla eventualmente riutilizzare.

01ipintem3000r64er64b4deg6.jpg

02ipintem30000r64er64b4lc6.jpg

03ipintem100000r64er64boj8.jpg

Con 30.000 importons si ottiene un buon livello di dettagli, possiamo utilizzare questo come valore ottimizzato.

Ora quello che ci interessa sarà avere un'immagine quanto più pultita possibile.

Come abbiamo visto per questo intervengono i campionamenti, sia quello dell'IP sia quello dell'environment.

Proviamo con i seguenti valori:

Importons Emitted = 30.000

Importons Rays = 1000*

Env.Rays = 500

AA: -2 -1

04ipintem30000r1000er50pg5.jpg

Ora possiamo utilizzare un trucchetto per ottimizzare i tempi di rendering.

Come abbiamo già avuto modo di vedere i Rays (ovvero il campionamento dell'IP) viene effettuato per ogni pass e dipende inoltre dal numero di importons utilizzati.

Siccome il numero di importons non lo andremo a toccare (perché abbiamo già stabilito che quel valore è quello necessario a restituirci i dettagli desiderati) potremo invece fare in modo di utilizzare un basso valore di Rays per la generazione dei pass e invece un alto valore di Rays per il calcolo dell'irradianza finale (che, come abbiamo detto, nel caso dell'IP non interpolata, viene eseguito at-rendertime)

Questo tipo di impostazione non può essere effettuata tramite i normali controlli dell'IP (in sostanza non è possibile distinguere un diverso campionamento per i pass e per l'irradianza finale, come invece sarebbe auspicabile).

Per farlo dunque, andremo a calcolare la mappa dell'IP con valori di campionamento bassi, fermeremo il render dopo la generazione della mappa e riutilizzeremo la stessa mappa, disattivando la spunta "rebuild", e aumentando il numero di Rays a nostro piacimento:

Primo render:

Importons Emitted = 30.000

Importons Rays = 64

Env.Rays = 64

AA: -2 -2 (tenetelo molto basso così non peserà sui tempi se vi dimenticate di fermare il calcolo)

Secondo render (rebuild off):

Importons Emitted = 30.000

Importons Rays = 1000*

Env.Rays = 500

AA: -2 -1

05ipintem30000r641000erzd5.jpg

Come potete vedere, confrontando questo render con il precedente, abbiamo ottenuto una qualità praticamente identica con tempi di rendering decisamente migliori.

06ipintem30000r641000erfs1.jpg

*in Maya 2009 non potete impostare più di 512 Rays per l'IP, per evitare questo limite potete utilizzare le stringhe impostando i valori degli IP Rays a vostro piacimento:

setAttr -type "string" miDefaultOptions.stringOptions[15].name "irradiance particles rays";

setAttr -type "string" miDefaultOptions.stringOptions[15].type "integer";

setAttr -type "string" miDefaultOptions.stringOptions[15].value "1000";


Edited by dagon

Share this post


Link to post
Share on other sites

2- interpolated IP Questo metodo è molto simile a quanto avviene normalmente con il Final Gather, la differenza principale sta nel setup e nella qualità (tenendo presente che l'IP è estremamente ottimizzata per l'importance sampling).

Depth and Passes

Il discorso è identico a quello che abbiamo fatto per l'IP non interpolata, ecco lo schema:

depthpassesinterpyw0.th.jpg

Come potete vedere la differenza principale dall'IP non interpolata, è che l'irradianza finale viene calcolata prima del rendering finale, utilizzando appunto l'interpolazione dei valori. Questo porta a spendere un tempo molto inferiore per il rendering finale, mentre la generazione dell'IP sarà molto influenzata dal numer di rimbalzi (passes) che utilizziamo.

Consigli: anche in questo caso utilizzate sempre un buon numero di Depth (2/4) e non esagerate col numero di Passes, cercate di utilizzare un valore consono per la tipologia di scena che state renderizzando (esterni:2/3, interni:3/5)

Importon Emitted (Importon Density)

Il discorso anche in questo caso non cambia, questo valore determina il numero di importons generati dalla camera verso la scena. Come in precedenza possiamo utilizzare due opzioni differenti:

- Importons Emitted, determina il numero di importons emessi come valore assoluto, indipendente dalla risoluzione della camera.

- Importons Density, determina il numero di importons come percentuale rispetto alla risoluzione della camera.

ipintem3000r200er200b4dqe9.jpg

ipintem10000r200er200b4pg2.jpg

ipintem30000r200er200b4rh8.jpg

ipintem100000r200er200bvd6.jpg

ipintem300000r200er200bky5.jpg

Il numero di importons determina in primo luogo il livello di dettagli dell'immagine, più importons usate maggiori saranno i dettagli (e i tempi di rendering).

Consigli: con l'IP interpolata possiamo scegliere due strade per raggiungere un buon compromesso tra qualità e tempi di rendering, le vedremo più avanti nel mini-tutorial.

Irradiance Particles Rays

Determina il numero di raggi QMC vengono utilizzati per il campionamento dell'IP, in sostanza determina la qualità visiva del rendering finale.

ipintem30000r2er200b4d2zv1.jpg

ipintem30000r50er200b4duh5.jpg

ipintem30000r200er200b4ik0.jpg

ipintem30000r500er200b4jx0.jpg

ipintem30000r1000er200bun7.jpg

Aumentando il numero di Rays migliorate il noise, ma andate anche ad aumentare i tempi di rendering, ricordate che come in precedenza vale lo stesso discorso, numero di importons, IP rays e passes contribuiscono tutte ad aumentare i tempi di rendering, trovare il giusto equilibrio è lo scopo delle nostre prove.

Irradiance Particles Env. Rays

Controlla la qualità del campionamento dell'environment (che, come già detto, è di tipo importance sampling).

ipintem30000r200er2b4d2qv8.jpg

ipintem30000r200er50b4drt7.jpg

ipintem30000r200er200b4es9.jpg

ipintem30000r200er500b4ab5.jpg

ipintem30000r200er1000bjg9.jpg

I tempi di rendering non vengono influenzati molto da questo parametro.

Consigli: utilizzate un valore alto di Env. Rays nel caso la vostra fonte principale di illuminazione sia l'environment, come ad esempio nel caso di rendering con HDRI

Interpoint

Controlla il numero di rays (campioni) che vengono utilizzati per effettuare l'interpolazione.

E' molto simile al parametro "Point Interpolation" del FG, quindi è anche di facile comprensione.

In sostanza aumentando questo valore si ottengono meno artefatti (noise) ma anche minori dettagli.

Non influisce in maniera sostanziale sui tempi di rendering.

ipintem30000r200er200b4bz9.jpg

ipintem30000r200er200b4ff9.jpg

ipintem30000r200er200b4ag8.jpg

Share this post


Link to post
Share on other sites

IP Setup

Ora vedremo come ottimizzare il setup dell'IP interpolata, utilizzando due differenti approcci, come accennato in precedenza:

2.1- Utilizzando un alto numero di importons per ottenere un buon numero di dettagli (vedremo che più importons utilizzeremo maggiori saranno i Rays di cui avremo bisogno per migliorarne la qualità).

2.2- Utilizzando un basso numero di importons e aggiungendo l'AO per i dettagli (scelta migliore: AO+color bleed, or ao_do_details = 2)

Chi ha letto il mio libro o ha seguito i miei interventi nel forum potrà riconoscere questi due approcci, visto che sono gli stessi che utilizzo per il setup del FG ;)

N.B.

Nel mio tutorial sto utilizzando Maya 2009 e mental ray 3.7, per versioni precedenti di mental ray (Maya 2008, Max 2009) potreste avere maggiori problemi, in quanto alcuni problemi/bug sono stati risolti.

2.1

Il primo passo è quello di cercare il giusto livello di dettagli, in questo caso dovremo cercare di tenere alto il valore degli importons in quanto l'interpolazione tende sempre a eliminare alcuni dei dettagli prodotti.

Per un feedback veloce utilizziamo le seguenti impostazioni:

Importons Rays = 64

Env.Rays = 64

AA: -1 1

Specificate sempre un nome per l'IP, in modo da poterla eventualmente riutilizzare.

01ipintem3000r64er64b4dvc4.jpg

02ipintem10000r64er64b4zn7.jpg

03ipintem30000r64er64b4ks4.jpg

Il problema di questo approccio è trovare il giusto bilanciamento tra qualità e tempi di rendering, in quanto i dettagli vengono demandati completamente all'IP, che essendo interpolata tenderà a perderli.

Come potete vedere se aumentate troppo il numero di importons arriverete a tempi di rendering veramente eccessivi (anche se per il momento stiamo utilizzando un campionamento molto basso).

In questo caso sceglo 30.000 importons.

Ora per migliorare gli artefatti aumentiamo il valore dei Rays, come di seguito:

Importons Emitted = 30.000

Importons Rays = 500*

Env.Rays = 500

Interpoint = 32

AA: -1 1

04ipintem30000r500er500yt8.jpg

Se avete salvato la mappa dell'IP potete disabilitare la spunta "rebuild" e aumentare il numero di Interpoint (=128) per migliorare ulteriormente il noise.

05ipintem30000r500er500ae1.jpg

Con l'IP non intepolata non è possibile utilizzare il trucco che avevamo usato per il setup dell'IP non interpolata (questo dipende dal timpo di calcolo effettuato per l'interpolazione, che produce troppi artefatti). 

Dunque per avere dei tempi di rendering migliori possiamo provare la seconda soluzione.

2.2

Alla base di questo metodo c'è il calcolo di un'illuminazione indiretta quanto più possibile pulita, tralasciando i dettagli. L'aggiunta dei dettagli viene fatta at-rendertime con l'utilizzo dell'AO+ color bleed(che è pensata specificamente per questo genere di cose e, dunque, più veloce).

Dunque procediamo con gli i passaggi visti in precedenza, questa volta ci concentreremo sul calcolo di un'IP quanto più possibile pulita, mentre tralasceremo i dettagli, riduciamo dunque gli importons:

Importons Emitted = 10.000

Importons Rays = 500

Env.Rays = 500

Interpoint = 32

AA: -1 1 

06ipintem10000r500er500ir6.jpg

Ora possiamo aggiungere l'AO+color bleed del mia_material (o A&D in max), aumentando anche gli Interpoint a 128 (per evitare quanto più possibile gli artefatti)

Samples = 32

Distance = 50

Ambient Shadow Color = black

Ambient Light Color = black

07ipintem10000r500er500fz8.jpg

Abbiamo finito, come potete vedere il setup è piuttosto veloce (ci sono davvero pochi parametri), la vera difficoltà attuale dell'IP è trovare il giusto compromesso tempi di rendering / qualità... vedremo in futuro se questo verrà migliorato...

Per ora il metodo migliore mi sembra l'ultimo, del resto potrete anche andare a mixare i due metodi per ottenere i dettagli e la qualità che più preferite.

08ipintem10000r500er500dr5.jpg

**in Maya 2009 non potete impostare più di 512 Rays per l'IP, per evitare questo limite potete utilizzare le stringhe impostando i valori degli IP Rays a vostro piacimento:

setAttr -type "string" miDefaultOptions.stringOptions[15].name "irradiance particles rays";

setAttr -type "string" miDefaultOptions.stringOptions[15].type "integer";

setAttr -type "string" miDefaultOptions.stringOptions[15].value "1000";


Edited by dagon

Share this post


Link to post
Share on other sites
Guest

Grazie Dagon per le informazioni che ci dai... ma queste nuove informazioni (a quanto ho capito) riguardano MR su Maya, sai per caso dirci quando saranno implementate in Max o XSI?

Mat

:hello:

Share this post


Link to post
Share on other sites

Importance Sampling with HDRI

- Esempio 1: Interno Semplice

Ora vedremo una delle caratteristiche più interessanti dell'IP, il campionamento dell'enviroment.

Come molti di voi sapranno, FG e GI non sono molto efficienti nel rendering di HDRI (o più semplicemente nel calcolo dell'illuminazione proveniente dall'enviroment).

La GI ad esempio non calcola l'illuminazione generata dall'environment, in quanto non genera fotoni dall'environment.

Il FG riduce la qualità dell'illuminazione generata dall'environment introducendo una serie di filtri, che evitano ai valori hdr (high dinamic range) di influenzare il calcolo dell'irradianza, questo comportamento è dovuto alla mancanza di una vera e propria gestione dell'importance sampling.

Per far fronte a questi problemi siamo abituati ad agire in vari modi, in genere aggiungendo una luce di tipo diretto (di qualsiasi tipo, dalle direct/spot per gli esterni, fino alle area light alle finestre per gli interni o alle recenti portal light, sviluppate proprio per far fronte a questo genere di problemi).

Con l'IP vedremo che potremo fare a meno di questi espedienti, evitando le luci dirette (eccetto per i rendering con luci artificiali... ovviamente)

Partiamo con la nostra scena di test, una scena molto semplice, ma che ci permette di vedere bene le prerogative dell'IP.

Se volete fare qualte test potete scaricare la scena da qui

Nella scena sto utilizzando una mappa HDRI free, probe_16-20_anglemap.hdr, che potete scaricare da qui

E' importante che teniate in mente che nei due esempi seguenti (questo e quello della macchina) non ci sono altre luci al di fuori dell'IBL* (con HDRI) in scena.

Il setup ancora una volta è molto semplice, quindi procediamo:

- Ricerca del giusto livello di dettagli:

01ipnointem3000r64er64bwf8.jpg

02ipnointem10000r64er64yt9.jpg

03ipnointem30000r64er64tw4.jpg

04ipnointem100000r64er6rg4.jpg

Ho scelto 30.000 importons.

Per migliorare il campionamento tenendo i tempi di rendering bassi possiamo utilizzare la solita tecnica vista per l'IP non interpolata:

- Definizione del campionamento

Primo Render con solo il calcolo dell'IP (render fermato dopo la generazione dell'IP):

importon emitted = 30.000

IP rays = 64

env. rays = 500

passes = 4

depth = 4

salvate la mappa con un nome!

Secondo render con i valori per l'immagine finale:

importon emitted = 30.000

IP rays = 500

env. rays = 1000

passes = 4

depth = 4

05ipnointem30000r64500esp7.jpg

Come potete notare sto utulizzando un valore alto per gli Env. Rays, già dal primo render.

In questo caso tutta l'illuminazione generata in scena proviene dalla mappa environment, dunque è molto importante che il campionamento sia qualitativo, evitando che si perano i dettagli della mappa

Inoltre sappiamo che gli Env. Rays influenzano meno i tempi di rendering rispetto agli IP Rays, che abbiamo tenuto bassi.

Ecco il render con un AA più alto:

06ipnointem30000r64500ela2.jpg

Come potete vedere il risultato è migliore (e anche un po' più veloce) della prova fatta con sistema fisico sky/sun.

Questo comportamento è dovuto alla qualità dell'ottimizzazione dell'environment sampling.

per curiosità ecco un render effettuato con parametri equivalenti tramite il metodo FG "force" (un metodo brute force per il FG)

061fgforcer500b41h26mtq7.jpg

Per l'IP interpolata procederemo con i due soliti approcci:

Primo approccio:

- Ricerca del livello di dettaglio

07ipintem3000r64er64b4dfw8.jpg

08ipintem10000r64er64b4wr8.jpg

09ipintem30000r64er64b4au2.jpg

- Definizione del campionamento

10ipintem30000r500er500fl7.jpg

Secondo approccio:

- Ricerca di un livello di dettaglio basso

11ipintem10000r500er500xk0.jpg

- Aggiunta dell'AO+color bleed per i dettagli

12ipintem10000r500er500jj9.jpg

- Esempio 2: Car rendering

Vediamo un altro esempio,forse più utilizzato, del rendering tramite HDRI.

Per questa prova sto utilizzando un modello preso da qui.

Potete scaricare la scena da qui: 

file maya

file maya zippato

Anche in questo caso avrete bisogno della mappa HDRI, the probe_16-20_anglemap.hdr presa da qui

A differenza del FG non avremo più bisogno di una luce diretta, procederemo in pochi step:

- Ricerca del livello di dettaglio

13ipnointem5000r64er300ta7.jpg

14ipnointem50000r64er30be6.jpg

15ipnointem100000r64er3gy5.jpg

16ipnointem150000r64er3wh0.jpg

- Definizione del campionamento

17ipnointem150000r500eraw0.jpg

Come potete vedere il render ha un ottimo livello di dettaglio e non abbiamo dovuto faticare più di tanto per ottenerlo.

Con AA migliore

18ipnointem150000r50064tz6.jpg

Ora possiamo aggiungere qualche materiale e vedere in che modo questi influiscono con i tempi di rendering.

Possiamo sfruttare in questo caso il metodo di interpolazione "secondary", che è sostanzialmente un mix tra l'IP non interpolata e l'IP interpolata.

Nelle zone in cui sono presenti materiali diffusi l'irradianza verrà calcolata "at-rendertime", nelle zone con materiali riflettenti/rifrangenti l'irradianza viene calcolata con un pass (simile a quello dell'IP interpolata), rendendo queste zone meno "puntinate" (con minore noise).

Questo tipo di interpolazione può essere molto interessante per ottimizzare i risultati dell'IP.

In questo caso utilizzeremo il metodo che abbiamo sempre utilizzato per l'IP non interpolata, ovvero:

Primo Render con solo il calcolo dell'IP (render fermato dopo la generazione dell'IP):

importon emitted = 150.000

interpolate = never

IP rays = 64

env. rays = 300

passes = 3

depth = 3

salvate la mappa con un nome!

Secondo render con i valori per l'immagine finale:

importon emitted = 150.000

interpolate = secondary

IP rays = 500

env. rays = 600

interpoints = 128

passes = 4

depth = 4

19ipintsecondaryjs9.jpg

Piccola nota, l'IP è un metodo molto recente, che presenta ancora diverse problematiche, è importante che iniziate a familiarizzarci perché è di sicuro il metodo del futuro per la global illumination di mental ray.

Per il suo utilizzo in lavori reali, posso dirvi che a me è già capitato di usarla, ma che ovviamente può comportare una serie di problematiche a cui potreste non essere avvezzi.

Intanto vi segnalo alcuni limiti dell'IP, innanzi tutto come detto all'inizio, per ora l'IP calcola solo l'interazione diffuse-diffuse della luce, mentre i rimbalzi in riflessione/rifrazione non sono presi in considerazione.

Potete riscontrare questo problema nel mio ultimo rendering, in cui i vetri della macchina impediscono alla luce di entrare all'interno dell'abitacolo e dei fanali (in questo caso la luce generata dovrebbe essere sotto forma di caustiche), rendendoli particolarmente scuri.

E' stato riscontrato anche un problema nell'uso della translucency del mia_material (A&D) assocciato all'IP interpolata (nessun problema invece con quella non interpolata o secondary). 

*in Maya 2008 non potete utilizzare il nodo IBL per illuminare la scena, dovrete usare il mib_lookup_spherical nello slot environment.

In 3ds Max 2009 potete utilizzare la skylight o l'environment, ricordandovi di disabilitare la luce di default

Share this post


Link to post
Share on other sites
Hanno fatto molto bene a sganciarti la chiavetta, prevedo molte sessioni notturne di test.

:)

Complimenti per il servizio come tuo solito.

eheh grazie ste :D

sai che su ste cose alla fine mi ci diverto :P

Grazie Dagon per le informazioni che ci dai... ma queste nuove informazioni (a quanto ho capito) riguardano MR su Maya, sai per caso dirci quando saranno implementate in Max o XSI?

Mat

:hello:

beh, è anche un modo di farmi perdonare della mancanza di un libro per maya... :P 

cmq potete seguire tranquillamente le istruzioni anche su Max (tramite ctrl.ghost, che potete scaricare da qui) e XSI 7 (l'IP è già integrata, ma la versione di mray è la 3.6.qualcosa, quindi avrete un po' più di problemi che con la 3.7... suppongo...)


Edited by dagon

Share this post


Link to post
Share on other sites
beh, è anche un modo di farmi perdonare della mancanza di un libro per maya... :P 

No........................quello non te lo perdoneremo mai. :Clap03::devil:<_<

Share this post


Link to post
Share on other sites

Ciao Dagon.

Grazie delle tue spiegazioni e del continuo impegno nei tuoi test.

Dopo aver installato il Ctrl.ghost sto testando su Max2009 queste tecniche.

Sto seguendo proprio le indicazioni di questi tuoi tutorials, utilissimi :)

Ho fatto qualche prova su una scena semplice, ed è andato tutto liscio.

Ora sto provando a renderizzare una scena di media complessità, e ho avuto 2 problemi, con la tecnica senza interpolazioni.

1- con il displacement attivato va in crash... ho dovuto farne a meno...

2- l'IP non attraversa i vetri.... e quì, ho calcolato il primo render nascondendo i vetri, poi ho riacceso i vetri, ho levato la spunta da rebuild e ho rilanciato con impostazioni più alte...

Ora appaiono i primi bucket, e il workaround sembra funzionare...

Se l'immagine è decente quando la guardo domattina, la posto :)

Ciao

Share this post


Link to post
Share on other sites
Guest
beh, è anche un modo di farmi perdonare della mancanza di un libro per maya... :P 

cmq potete seguire tranquillamente le istruzioni anche su Max (tramite ctrl.ghost, che potete scaricare da qui) e XSI 7 (l'IP è già integrata, ma la versione di mray è la 3.6.qualcosa, quindi avrete un po' più di problemi che con la 3.7... suppongo...)

ora mi finisco il libro, poi vediamo come portare quello che ho appreso su XSI appena mi attivano il tutto XD... per il ctrl.ghost grazie mille della dritta ;)

Mat

:hello:

Share this post


Link to post
Share on other sites

Grazie tante per le info!!!! ma queste saranno poi anche integrate nel booksite?

Un'altra cosa, praticamente il ctrl.ghost serve per aggiornare mental ray alla 3.7? nn capisco :crying:

Share this post


Link to post
Share on other sites
Grazie tante per le info!!!! ma queste saranno poi anche integrate nel booksite?

Un'altra cosa, praticamente il ctrl.ghost serve per aggiornare mental ray alla 3.7? nn capisco :crying:

No, il ctrl.ghost abilita l'uso di settaggi nascosti.

Share this post


Link to post
Share on other sites
Ciao Dagon.

Grazie delle tue spiegazioni e del continuo impegno nei tuoi test.

Dopo aver installato il Ctrl.ghost sto testando su Max2009 queste tecniche.

Sto seguendo proprio le indicazioni di questi tuoi tutorials, utilissimi :)

Ho fatto qualche prova su una scena semplice, ed è andato tutto liscio.

Ora sto provando a renderizzare una scena di media complessità, e ho avuto 2 problemi, con la tecnica senza interpolazioni.

1- con il displacement attivato va in crash... ho dovuto farne a meno...

2- l'IP non attraversa i vetri.... e quì, ho calcolato il primo render nascondendo i vetri, poi ho riacceso i vetri, ho levato la spunta da rebuild e ho rilanciato con impostazioni più alte...

Ora appaiono i primi bucket, e il workaround sembra funzionare...

Se l'immagine è decente quando la guardo domattina, la posto :)

Ciao

dimmi se ti funziona perché i miei test non davano gli esiti sperati (su maya almeno)

questo perché l'irradianza locale viene calcolata at-rendertime (quindi coi vetri accesi) o almeno credo... cmq fammi sapere

il motivo è descritto alla fine dell'ultimo mini-tutorial, per ora l'IP calcola solo il comportamento diffuse-diffuse della luce, e non quello reflective/refractive

per il displacement è molto probabile che sulla 3.6 non fsse supportato, sulla 3.7 funziona tutto a dovere

Share this post


Link to post
Share on other sites
Ah, una domanda, è possibile calcolare l'Ip a una risoluzione più bassa di quella finale?

E se si, se ne traggono benefici sui tempi?

sì è possibile, ma ci sono sempre le distinzioni tra IP interpolata e non

per la prima calcoli tutta l'irradianza a una risoluzione inferiore e la riutilizzi, potrebbe essere un buon metodo per evitare che i tempi si allunghino troppo, però tieni presente che con l'importon emitted la mappa che calcoli è "adimensionale" nel senso che se usi 30.000 importons sono 30.000 a qualsiasi risoluzione,i tempi non dovrebbero cambiare, che tu utilizzi 100x100pxl o 10.000x10.000pxl

per l'IP non interpolata c'è da distinguere la generazione della mappa (che anche in questo caso con importons emitted non dovrebbe cambiare a qualsiasi risoluzione la calcoli) dal rendering finale, dove l'irradianza calcolata at-rendertime dipende dalla risoluzione ovviamente

Share this post


Link to post
Share on other sites

Ma se tu non ci fossi Dagon le irradiance particles ci sarebbero lo stesso :P:) ? :Clap03:

Ho fatto qualche test, molto interessante ma confermo l' "acerbità" del sistema, seguo gli sviluppi...

Share this post


Link to post
Share on other sites

Ciao ragazzi, ecco il mio primo test, ho usato una mia scena composta in precedenza.

IP senza interpolazioni, con il metodo dei 2 step indicato da Dagon.

Depth-Passes 4-4

Importons 100.000

IP rays 64/500

environment rays 64/750

Come dicevo, con i vetri la luce non entrava nella stanza, quindi ho calcolato il primo pass con i vetri spenti e poi ho tolto la spunta da rebuild, ho svelato i vetri e ho lanciato il render....

Un'altra cosa che mi ha fatto un penare sono i riflessi del cielo sugli oggetti.

Risultavano tutti molto più potenti rispetto a come renderizzava prima (GI + FG + skyportal) quindi ho dovuto abbassare la riflessione a tutti i materiali.

Questo problema è ancora presente in quel evidentissimo rettangolo bianco sul vetro, è il riflesso di una finestra che si trova alle spalle della camera.

Il vetro è il preset "solid glass" dello shader A&D.

Il render ha impiegato 10 ore e un'anticchia, a questa risoluzione su un Q6600 @default.

ip04copyjp1.jpg


Edited by nicolce

Share this post


Link to post
Share on other sites

Alcune prove veloci con AA scrauso

Ho chiuso la finestra dietro perchè quel problema nei riflessi mi urtava troppo :) e poi appiattiva l'illuminazione.

AA 1/4-1

no interpolation

Importons 100.00 IP 64 64

Vetri presenti

ip05glassrenderttb4.jpg

Vetri nascosti

ip05noglass144vs9.jpg

Vetri presenti, con la mappa precalcolata con i vetri nascosti

ip05glass144gq0.jpg

Nell'ultimo caso c'è un lieve calo di luminosità, ma per il resto sembra a posto.....

Questo mi ispira una domanda: cosa viene salvato nel file dell'IP?

Share this post


Link to post
Share on other sites
Guest
Ciao ragazzi, ecco il mio primo test, ho usato una mia scena composta in precedenza.

IP senza interpolazioni, con il metodo dei 2 step indicato da Dagon.

Depth-Passes 4-4

Importons 100.000

IP rays 64/500

environment rays 64/750

Come dicevo, con i vetri la luce non entrava nella stanza, quindi ho calcolato il primo pass con i vetri spenti e poi ho tolto la spunta da rebuild, ho svelato i vetri e ho lanciato il render....

Un'altra cosa che mi ha fatto un penare sono i riflessi del cielo sugli oggetti.

Risultavano tutti molto più potenti rispetto a come renderizzava prima (GI + FG + skyportal) quindi ho dovuto abbassare la riflessione a tutti i materiali.

Questo problema è ancora presente in quel evidentissimo rettangolo bianco sul vetro, è il riflesso di una finestra che si trova alle spalle della camera.

Il vetro è il preset "solid glass" dello shader A&D.

Il render ha impiegato 10 ore e un'anticchia, a questa risoluzione su un Q6600 @default.

ip04copyjp1.jpg

Ma 10 ore non sono un po tantine per essere utilizzato per fare i rendering? curiosità ma anche se è tutta un'altra storia, ma la versione con gi + fg + skportal quanto ci ha messo ?

Share this post


Link to post
Share on other sites

Purtroppo non ricordo il tempo precedente, ma comunque c'era anche displacement e una quantità di impostazioni molto diverse, quindi non sarebbe molto utile per un eventuale confronto.

Ad ogni modo, 10 ore sono decisamente troppe, considerando soprattutto la bassa risoluzione di output.

Sono abituato a performance ben migliori :D

Certamente le impostazioni si possono limare, ma non credo che questo metodo brute force sia utilizzabile senza una potenza di calcolo di rispetto.

Spero che si velocizzi un po' con lo sviluppo.

Mi preoccupa di più il problema con i vetri, il calo di luminosità che ho riscontrato sembra una cosa di poco conto, ma mi sono accorto che fa scomparire le ombre secondarie....

A presto con nuovi test :)

Share this post


Link to post
Share on other sites

Io ho visto che IP mi da problemi con l'ultimo materiale introdotto... mia_material_passes... e con il color bleeding dell AO nel mia_material_x, credo che siano problemi di gioventù.

Anche io ho fatto qualche prova.. ^_^

Guardiamo se Dagon si ricorda di questo.. :D

ajacefgli1.jpg

FG: accuracy: 200 - density: 0.1 - Interpolation: 20 - secondary bounce: 3

58 secondi

ajace2qd9.jpg

IP:

256 ray

256 env ray

Interpolate always: 64

Importon density 0.1 Depth: 2

3:04

I colori cambiano molto rispetto a FG probabilmente dipende dal peso del enviroment, o forse dal numero di rimbalzi della luce.

ajacelowinterpolpa3.jpg

256 ray

256 env ray

Interpolate always: 4

Importon density 0.1 Depth: 2

Qui a causa dell'interpolazione bassa si notano degli artefatti, però si notano più dettagli.

2:55

ajace1qz0.jpg

256 ray

256 env ray

Interpolate secondary: 8

Importon density 0.1 Depth: 2

13:41.. argh!!

Molti più dettagli rispetto a prima, però che tempi.. O_O

Ho provato ad aumentare il density e abbassare i raggi, più o meno si rimane tra i 15 e gli 8 minuti se si vuole un risultato simile a quest'ultima immagine. Sotto quei tempi o appare del rumore, o c'è granulosità..

Insomma, errori di gioventù a parte mi sembra che (per adesso) gli importoni + IP si debbano usare quando non si sa dove sbattere la testa o si vuole una resa qualitativa molto elevata. Oppure usare soluzioni miste importoni + IP a basso dettaglio + AO.

Be', non è male per essere la prima release "ufficiale" con questa nuova tecnica.

Edit: mi sono accorto adesso che nella conversione TGA->JPG è partito il cielo.. sgrunt!!! Al posto del bianco del cielo immaginatevi il classico cielo physical sky.


Edited by ilmale

Share this post


Link to post
Share on other sites
Purtroppo non ricordo il tempo precedente, ma comunque c'era anche displacement e una quantità di impostazioni molto diverse, quindi non sarebbe molto utile per un eventuale confronto.

Ad ogni modo, 10 ore sono decisamente troppe, considerando soprattutto la bassa risoluzione di output.

Sono abituato a performance ben migliori :D

Certamente le impostazioni si possono limare, ma non credo che questo metodo brute force sia utilizzabile senza una potenza di calcolo di rispetto.

Spero che si velocizzi un po' con lo sviluppo.

ho già avuto modo di dire che l'IP è la global illumination del futuro per mental ray, ci stanno investendo molto quindi di sicuro ci saranno molti sviluppi (non solo in termini di ottimizzazioni ;) )

per quanto riguarda le performance, è lo stesso discorso di maxwell... o di qualsiasi altro motore unbiased... rendering di interni in alta risoluzione necessitano di potenza di calcolo, in questo ci potranno essere dei miglioramenti, ma non prevedo delle grandi rivoluzioni...

Mi preoccupa di più il problema con i vetri, il calo di luminosità che ho riscontrato sembra una cosa di poco conto, ma mi sono accorto che fa scomparire le ombre secondarie....

A presto con nuovi test :)

avevo già notato quel problema, infatti in tutti i miei test (e anche qualche lavoro che ho fatto ultimamente) devo per forza escludere le finestre e (al limite) compositarle

cmq ho già segnalato il problema a chi di dovere... vi consiglio, se riuscite, di postare i risultati anche nel sito del lamurg... come detto alcuni degli sviluppatori lo tengono d'occhio, quindi più pareri hanno più siamo sicuri che i problemi verrano ascoltati e risolti ;)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...