Renderglobal
Home Registrazione Faq Lista utenti Calendario Cerca I messaggi di oggi Segna forums come letti



Torna indietro   Renderglobal > RG > TUTORIAL > MAYA
Rispondi
 
Strumenti discussione Modalità visualizzazioe
Vecchio 09-06-2005, 03.50.41   #1
Alex
 
L'avatar di Alex
 
Data registrazione: 10-03-2002
Residenza: LA
Messaggi: 3,368
Invia un messaggio via AIM a Alex Invia un messaggio via MSN a Alex
Smoke trail - parte 2.1 - Particle Cloud Shader (Maya sw/ MentalRay)

SMOKE TRAIL - parte 2.1

Particle Cloud Shader





Come primo approccio di shading/rendering del nostro fumo realizzato nella prima parte del tutorial, andremo ad utilizzare il particle shader fornito con Maya, chiamato Particle Cloud

Innanzitutto vediamo quali sono i vantaggi e gli svantaggi di questa soluzione:

Vantaggi:


  • Supportato sia da Maya software render che da Mental Ray per Maya
  • Supporto di motion blur grazie a Mental Ray
  • True volumetric effects, con supporto di self shadow (per mezzo di ombre ray tracing)
  • Possibilita' di controllare alcuni degli attributi per particle (con alcune limitazioni che descrivero' in seguito)
  • Casting delle shadows (con ray tracing)
Svantaggi:

  • Lentezza del rendering, soprattuto con attive ombre ray tracing
  • Difficolta' nel controllare il texturing di alcuni attributi
  • Impossibile ottenere motion blur, se non per mezzo di Mental Ray
  • Diversi bug, tra cui il controllo di alcuni attributi per mezzo del particleSamplerInfo
  • Tendenza all'aliasing se il built-in noise e' ad alta frequenza
Detto cio', devo dire che i risultati che si possono ottenere con questo shader possono essere veramente impressionanti, e soprattuto oggi, con CPU sempre piu' veloci, il tweaking e l'utilizzo di questo shader e' molto piu' accessibile che non negli anni passati. (Mi ricordo quanto avevo penato per i rendering a 2k di un film che feci diversi anni fa, lavorando su una povera vecchia O2, per la cronaca il film era "Mari del Sud", con il grande Diegone)

Lo shader in se e' un "comunissimo" volumetric shader, il che vuole dire che quello che renderizza e' un volume 3d e non una rappresentazione 3d dello shader "mappato" su una sfera.
Inoltre include automaticamente superici implicite (blob map) il che permette di unire i volumi perndendo la sfericita' tipica di shader di questa categoria.

Ci sono diversi tutorial on-line che cercano di utilizzare questo shader nella forma piu' comune, ossia mappando una texture 3d nel canale blob map e o density. Io trovo questa soluzione scomoda per 2 motivi:
1. La texture essendo 3D non si scala con lo scalare delle particelle
2. Per lo stesso motivo, la texture non si muove con particles

Ci sono diversi trucchi/metodi per ovviare a questi problemi, tipo animare il place3dtexture node, in modo che segua all'incirca il movimento delle nostre particles, oppure dalle release recenti di maya, trasformare le texture3d con le nostre particles per mezzo del particleSamplerInfo

Quest'ultima soluzione potrebbe essere vincente se non fosse per l'enormita' di bug che presenta, e il fatto che non sia assolutamente supportata da Mental Ray.

Io invece preferisco optare per una soluzione piu' versatile, che e' simile ai metodi che si possono utilizzare con "custom particle renderer", ossia:

Raggio relativamente contenuto->Molta Trasparenza->Tante Particelle

Questa soluzione presuppone che la vostra simulazione sia ben fatta, ossia che le singole particelle abbiano un "movimento" independente dalle altre, il che e' la carta vincente per ottenere anche una buona resa. Dato che sara' il movimento stesso delle particelle che dara' a sua volta corpo e movimento al fumo.
Ricordiamoci che il nostro obiettivo e' quello di realizzare un fumo molto denso!

Cominciamo quindi settando le nostre particles a Cloud(s/w)
Quindi cambiamo il rate del nostro emitter, portandolo da 1000 (al secondo) a 5500. Notate che per avere risultati ancora migliori il rate puo' essere aumentato, ripeto, piu' particles = piu' volume

Anche qui, come nella prima parte, il giusto dosaggio dei vari attributi e' il risultato di diversi test di rendering, quello che io di solito faccio, e' prender nota di cosa ottengo con diversi risultati, in modo da capire bene cosa influenza cosa. Ovvio che con la pratica/esperienza, saprete gia' fin dall'inizio come settare certi attributi per ottenre il risultato che andate a cercare, ma credetimi, molte volte il tempo speso a testare diversi valori di RGB, con incrementi pure minimi, paga poi in termini di qualita'.
Se ottenete qualcosa che vi piace, salvate la scena, e provate a vedere se c'e' modo di migliorare ulteriormente i risultati.
Infatti quello che otteremo in questa parte e' il primo risultato che state cercando, e andra' migliorato, modificato, magari intervenendo sulla simulazione. Insomma, fare effetti, non e' cosi' immediato come altre specializzazioni, ci sono tantissimi fattori che influenzano il risultato finale, e c'e' sempre un modo per migliorare il proprio lavoro.

Una cosa fondamentale che aiuta, sono le immagini o video di riferimento, non fidiamoci solo di quello che la nostra mente ricorda, non c'e' nulla di meglio di poter confrontare il nostro risultato con qualcosa di vero!!

Ovviamente in questo caso, per mancanza di tempo/spazio faremo a meno di usare riferimenti visivi, ma vi consiglio, una volta capito il funzionamento di quello che abbiamo fatto, di provare di nuovo, con un'obiettivo ben preciso in testa. Vedrete quante cose dovrete cambiare....

Bene procediamo con il nostro setup.
Assegnamo alle nostre particelle un nuovo particleCloud shader (non usiamo quello di default), quindi premete play e lanciate un rendering.
Uhm, bruttino... ma ora vedremo di cambiare un po' di parametri per dare volume e corpo al nostro fumo.

IMPORTANTE: quando lavorate ad effetti di questo tipo, e' molto importante fare i test di rendering con un colore di sfondo che non sia il nero, credetimi, avere un fondo abbastanza chiaro in fase di setup vi permette di vedere come verra' il vosto fumo una volta compositato, ricordate di risettare il background a nero prima di lanciare il rendering (senno' avrete problemi di premoltiplicazione)


Come prossimo passo, aggiungiamo una luce, essa sara' la nostra key-light, ed il suo posizionamento e' fondamentale. Dato che questo shader e' molto sensibile alla posizione e intensita' della luce, e' bene partire con la luce gia posizionata (poi avrete sempre tempo per fare fine tuning).
Questa luce sara' di tipo direct, infatti e' quella che permette di ottenere i migliori risultati con questo tipo di shader.
Io ho messo una direct light, che illumina dalla sinistra dell'inquadratura (in base alla camera che ho utilizzato per il rendering, la persp, la stessa camera del tutorial precedente) con un intesity di 1.2 e colore RGB di 0.95 0.95 1

Passiamo ora al nostro cloudShader, come prima vogliamo passare colore e opacita' dalle nostre particelle, e questo e' molto semplice da fare con il particleSmaplerInfo, oltretutto per life Color e life Transparency, maya si occupa di fare le connessioni per voi.
Quindi cliccate sullo slot texture di Life Color e scegliete dal tab utilities/Particle Utilities Particle Sampler
Quello che maya fara' per voi e di collegare l'attributo outColor del particleSamplerInfo all'attributo color dello shader. Se questo esiste per particle (ed esiste dato che abbiamo settato rgbPP nel tutorial precedente), ogni particella prendera' il proprio colore in fase di resa.
Fate la stessa cosa per Life Opacity


Una nota a questo punto. Con questo metodo, potremmo mappare altri parametri dello shader tramite per-particle attributes, se per esempio volessimo assegnare il parametro glow intesity per-particle, possiamo aggiungere alle nostre particelle l'attributo per particle userScalar1PP, scrivere un'espressione (o mapparlo con una rampa) e quindi grazie al particleSamplerInfo, collegare userScalar1PP all'attributo Glow Intensity.
Purtroppo questo metodo non funziona con Mental Ray, almeno a me non ha funzionato. E sembra che spesso Maya si incasina se un solo nodo particleSamplerInfo passa diversi attributi per-particles. Lascio a voi il compito di fare dei test.




Se a questo punto renderizzate di nuovo, potrete vedere che il risultato sara' differente da quanto prima, infatti ogni particella ereditera' colore e trasparenza come settato nelle nostre espressioni (se non vedete cambiamenti, tornate al primo frame, e quindi play per un po di frame)

Vediamo ora come settare gli altri attributi dello shader, con una descrizione generale di quelli piu' importanti:


Transparency Tab



Density e' molto simile a Transparency, e come ricorda il nome permette di controllare quanto denso il "cloud" delle particles apparira'. Ossia piu' saranno dense, meno background sara' visibile attraverso ad esse. Nel nostro caso questo valore va tenuto abbastanza alto.
Blob Map permette di rimappare la trasparenza delle clouds, questo e' il famoso attributo al quale viene comunemente connessa una 3d texture per dare una texture interna alle particelle, presentando pero' i problemi esposti precedentemente. Nel nostro caso lo lasciamo ad 1 1 1 in quanto questa "funzionalita" ce la siamo creata da soli in fase di simulazione (molte particelle con movimento indipendente!!!)
Roundness permette di stabilire quanto tonde siano le nostre particelle, io l'ho settato a 0 perche' in congiunzione alla nostra simulazione ci permentte di ottenre ottimi risultati. Se settato a 1 le nostre particelle saranno meno "noised"
Traslucence ha solo senso se se vengono calcolate le ombre, e cmqe di solito valori tra 0.4 e 0.6 vanno bene per la maggior parte delle situazioni


Built-in Noise



Questo si descrive abbastanza bene da solo. Permette di applicare del noise alle nostre particelle, come consiglio, non utilizzate valori di frequency troppo alti o il risultato potrebbe essere causa di aliasing (oltre molto brutto visivamente)


Surface Shading Properties



Questo tab e' fondamentale per la resa del vostro effetto. Infatti il parametro Diffuse Coeff, e' responsabile per ottenere un'illuminazione diffusa delle vostre particelle. Questo parametro e' legato strettamente a Surface Color, Density e Color (mappato con Sampler info).
Come linea guida, quando Diffuse Coeff e' maggiore di 0 il colore scelto in Surface Color, sara' quello che il vostro fumo ricevera' dove direttamente illuminato dalla luce, mentre il colore assegnato tramite le particles, diventera' una sorta di ambient color. Avere questi due colori abbastanza contrastati tra loro, permette di dare volume e corpo al vostro particle cloud. Attenzione che cmqe i colori vengono moltiplicati quindi fate bene attenzione a settare il valore di Diffuse Coeff in relazione all'intesita' della luce, e ai colori scelti. Inoltre spesso dovrete agire pure sul paramentro Density per ottenere buoni risultati.

Questa e' la parte che richiede piu' tempo per trovare le giuste combinazioni. Io per questo test ho settato:

Density: 0.974
Diff Coeff: 0.940
Surface Color: 0.368 0.419 0.444
Particle Color (smokeShape nel channelBox): 0.35 0.3 0.3



Il parametro traslucence coeff, permette di simulare una sorta di SSS, ossia quanta luce viene trasmessa attraverso il volume.


Surface Shading Shadow e Filter Radius, sono altri due parametri fondamentali per una buona resa e sono specifici di come questo shader lavora, se surface shading shadow e' attivo, e abbiamo le ombre rautracing, queste vengono calcolate in una fase di pre-illuminazione.
Questa fase calcola l'illuminazione solo al centro di ogni particella ed in alcuni casi puo' essere causa di popping. Il filter e' un'attributo che permette di softare il risultato, utilizzando nel calcolo di illuminazione cambioni vicino per interpolazione (ricorda un po' il final gathering o no? )
A valori di filtro piu' alti corrispondono risultati migliori ma ovviamente tempi di resa piu' lunghi.

Siamo ora pronti per il nostro rendering, ma ora dobbiamo prendere una decisione:

Self shadow o non Self shadow?



Il motivo per questa scelta e' uno solo, tempi di calcolo! Essendo uno shader volumentrico che non utilizza ray-marching, non abbiamo modo di ottimizzare il calcolo delle ombre, dato che queste vengono ottenute grazie al raytracing. Questa scelta dipende ovviamente dalle vostre risorse harware, ma usare il cloud shader per questo tipo di effetto senza self shadow e' un vero peccato. Guardate qui sotto infatti lo stesso frame renderizzato con e senza shadow




Se volete sapere i tempi di resa per le due immagini sulla mia Dual Xeon 3Ghz, eccovi accontentati:

Frame 95
Calcolo senza shadow: 5.36 secondi
Calcolo con shadow: 9minuti e qualche secondo!!!


Da notare che sono arrivato anche a 18 minuti a frame verso la fine del rendering (frames introno al 150), e stiamo parlando di 640x480 con i setting di Mental Ray di default (Usando il Maya Renderer si risparmiano un paio di minuti a frame)



Con questa parte abbiamo concluso, ovviamente vi consiglio di sperimentare il piu' possibile, fare i vostri test e non fermartevi al primo ostacolo con l'esclamazione: non si puo' fare!
Inoltre come gia' scritto diverse volte, pure in altri threads, io non sto vendendo l'effetto perfetto, ma mi fa piacere condividere con voi esperienze e trucchi, metodi e tecniche che ho appresso in tanti anni di esperienza. Non ho alcuna pretesa di avere fatto il fumo piu' bello, anzi!
Ma spero che questo tutorial vi possa aiutare ad esplorare nuove strade, e a tornare su quelle abbandonate perche' "in giro si dice" che non vanno bene.

Un'altra nota prima di chiudere, ho optato per Mental Ray nei miei rendering solo perche' so che la maggior parte di voi "snobba" il maya renderer, e quindi ho impostato questo tutorial in modo che funzioin con Mental Ray, ma se avessimo utilizzato Maya sw renderer, avremmo ottenuto la stessa qualita' di resa, ed inoltre avremmo potuto spingerci un po' piu' oltre!
A voi la scelta...


Nella prossima parte affronteremo Fluid Textures



Per scaricare la scena finita cliccare qui
Per vedere/scaricare il quicktime di esempio cliccare qui
__________________
Alex
________________________________________________
You know what Jack Burton always says... what the hell?
Alex non è collegato   Rispondi citando
Vecchio 09-06-2005, 11.27.15   #2
woo
Member
 
L'avatar di woo
 
Data registrazione: 06-07-2002
Residenza: Macerata (Italy)
Messaggi: 724
Mitico, ****ta, grazie è proprio interessante ;-)
__________________
Francesco
www.francesco3d.it
woo non è collegato   Rispondi citando
Vecchio 09-06-2005, 12.33.05   #3
Panda
Gold Member
 
L'avatar di Panda
 
Data registrazione: 07-01-2004
Residenza: Spingitore di poligoni a Genoa...
Messaggi: 3,360
sai cosa apprezzo maggiormente di questi tutorial? Il ragionamento deduttivo per arrivare alle scelte. Cioè l'utilizzo della materia grigia.
ancora complimenti Alex.

Panda
__________________
Panda! Kopanda!
And now with Blog inside!!! Riti di passaggio!

Ed ora il Panda ci ha pure il Pandino...

Non sò più che cosa pensare, questa storia non mi ha lasciato ne pensieri e ne scorregge!

She showed me a picture of her kid, said during the day she's an art student
She dances six nights a week for slobs and idiots like this, of course, present company excluded...
Panda non è collegato   Rispondi citando
Vecchio 17-06-2005, 20.13.07   #4
Vertex
Guest
 
Messaggi: n/a
Bellissimo tutorial! e se l'ho capito io che non ho mai usato le dinamiche ....

solo una cosa: io uso spesso maya sw ... mi piacerebbe sapere quali cose in più avremmo potutto fare con questo motore ... daiii Alex, sveliamo anche il resto

Ciao
  Rispondi citando
Vecchio 02-02-2007, 16.09.30   #5
Paolo
Junior Member
 
L'avatar di Paolo
 
Data registrazione: 10-11-2004
Residenza: London, United Kingdom
Messaggi: 272
Question ...prevedi ancora Fluid Textures?

Citazione:
Orginalmente inviato da Alex Visualizza messaggio
...
Nella prossima parte affronteremo Fluid Textures
...
Ciao Alex,
...sarei interessato alla parte che citi sul sistema con Fluid Textures!
Pensi ancora di farlo?
__________________
>paoloc3d.com<
>on LinkedIn<
Paolo non è collegato   Rispondi citando
Vecchio 02-02-2007, 18.24.21   #6
porcupine
Member
 
L'avatar di porcupine
 
Data registrazione: 26-04-2004
Residenza: roma
Messaggi: 791
Citazione:
Orginalmente inviato da Panda Visualizza messaggio
sai cosa apprezzo maggiormente di questi tutorial? Il ragionamento deduttivo per arrivare alle scelte. Cioè l'utilizzo della materia grigia.
ancora complimenti Alex.

Panda
quoto in pieno, grande Alex
porcupine non è collegato   Rispondi citando
Rispondi

Strumenti discussione
Modalità visualizzazioe

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Attivato
Le smilies sono Attivato
[IMG] è Attivato
Il codice HTML è Disattivato
Vai al forum


Tutti gli orari sono GMT +2. Adesso sono le: 09.22.48.


Basato su: vBulletin Versione 3.7.3
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.