Jump to content
gurugugnola

Materiali E Shader

Recommended Posts

<- terza parte

RENDER TREE

È lo strumento + versatile per lavorare con gli shader e materiali, in cui i collegamenti sono rappresentati visivamente. Ogni nodo ha un set di proprietà da poter collegare dall'output di uno shader all'input di un altro in maniera dinamica. Nel render tree gli shader sono visualizzati come contenitori e non è possibile modificare il contenuto. I valori degli shader sono modificabili da proprio property editor, a cui si accede con un doppio clic sopra lo shader da modificare nel render tree. Oltre agli shader nel render tree è possibile collegare texture e tool nodes.

Imm44.jpg

Nel menù "File" -> Preference -> Editors -> Render Tree è possibile settare diverse preferenze di visualizzazione dei nodi e dei collegamenti.

I realtime shader possono essere collegati solamente utilizzando il render tree non avendo le connection icon nel property editor. Nella maggior parte dei casi questi shader si comportano come gli altri shader di Mental Ray, ma con alcune differenze di cui bisogna tenere conto:

  • tra i nodi di un materiale solo il port "realtime" accetta questi shader
  • la maggior parte dei realtime shader ha pochi port che accettano solo altri realtime shader (previous), quelli che definiscono le texture accettano anche le texture attraverso un nodo image clip
  • non è possibile sostituire un realtime shader trascinandone uno nuovo nel render tree

Imm45.jpg

Texture layer

Quando uno shader a uno o + texture nella visualizzazione del render tree appare una nuova sezione chiamata "layer" in cui ci sono tutti i parametri di ogni texture (color, mask). I layer si comportano come qualsiasi altro gruppo di parametri visualizzati nel render tree. I port dello shader a cui sono stati aggiunti i layer sono contrassegnati da una "L" azzurra.

Imm46.jpg

Metashader

Sono "Multi-implementation" shader in grado di supportare diversi motori di render, molti shader di XSI sono metashader e nel render tree si comportano come tutti gli altri. Si riconoscono in 2 modi:

  • nei node menù tutti gli shader hanno delle lettere che identificano i loro output ("C" x color, "S" x scalar), i metashader oltre a queste lettere hanno una "M"

Imm47.jpg

  • la "M" inoltre compare sopra al node nel render tree e in basso sono riportati i renderer supportati

Imm48.jpg

Nella guida di XSI c'è scritto che il primo impatto con il render tree può essere scoraggiante (io toglierei il "può" ^_^ ), ma dice che il trucco è capire dove va uno shader e che cosa fa… (ancora non mi hanno incoraggiato abbastanza! <_< ).

Ogni oggetto ha un material node che si comporta come un contenitore per qualsiasi shader. Uno shader può alterare un oggetto attraverso i suoi input:

· Surface: determina il colore base, la ricezione dei raggi di riflessione, trasparenza e rifrazione. Solitamente si usano i texture shader per desire ulteriormente il materiale

· Volume: modifica i raggi mentre attraversano un oggetto o una scena, può simulare effetti di nubi/fuoco/nebbia

· Environment: definisce ciò che si vede nel background

· Contour: è usato per creare l'effetto contorno ai bordi di un oggetto, effetto fumetto

· Displacement: altera la superficie dell'oggetto con lo spostamento dei punti, lo spostamento risultante è ben visibile e può proiettare ombre. L'effetto è visibile solo in render

· Shadow: determina come si altera la luce quando è ostruita da un oggetto; definisce l'orientamento e la proiezione delle ombre oltre che al colore e l'opacità

· Photon: è usato per la GI e le caustiche, senza di questo l'oggetto non può ricevere o trasmettere fotoni

· Photon volume: è usato per definire un "volume" per effetto di un fotone

· Bump map: determina dove e come sarà visualizzato il bump

· Lightmap: accetta le connessione dei Lightmap shader

· Realtime: accetta le connessione dei Realtime shader

· Material: accetta le connessione dei Phenomena Material

Imm49.jpg

Ogni nodo è codificato da un colore (e così i suoi parametri), questa codifica aiuta nella costruzione di un materiale perché si visualizza subito dove e come i nodi e i parametri possono essere collegati.

Imm50.jpg

Ogni paramentro di uno shader è codificato da un colore. L'output del node è codificato dal pallino in alto a destra e l'input del parametro è codificato dal pallino a sinistra del nome, Questo colore indica che tipo di input il parametro accetterà. Nel render tree ogni nodo di uno shader ha una lista di parametri, quando il tipo di output di un nodo si abbina con il tipo di input del port di destinazione potete collegare i 2 nodi. Quando uno shader ha molti parametri vengono raggruppati in "group" (cliccando sulla freccia che contraddistingue un gruppo è possibile visualizzare i parametri connessi o tutti i suoi parametri), lo stesso succede per i texture layer.

Imm51.jpg

Per navigare e lavorare velocemente con il render tree è necessario conoscere alcune sue caratteristiche e funzioni. In alto c'è una barra con i menù "Show" e "Tools" in cui ci sono le opzioni di visualizzazione del render tree e le opzioni per specificare le modalità di navigazione, queste opzioni possono essere modificate in ogni momento. Cliccando con il tasto destro su gli elementi o sul view del render tree appare un menù contestuale con i tool e comandi + comuni.

Quando l'albero a cui state lavorando è molto complesso per evitare di visualizzarlo in maniera caotica potete scegliere di agganciare gli oggetti alla griglia con le opzioni "Snap to grid" e "Enable grid snapping" nel menù Tools.

Il Pan e gli Zoom funzionano come in ogni altra vista e inoltre ci sono i comandi nel menù tools.

L'icona in alto con le due frecce che formano un cerchio serve per aggiornare la vista, il tasto accanto con la "C" (clear) ripulisce la vista (cancella solo i nodi non connessi).

Costruzione

La caratteristica fondamentale del render tree è il sistema dinamico (e visuale) per usare un output di uno shader come input per un parametro (o + parametri), permettendo infinite possibilità di collegamento. A volte i collegamenti sono facili da fare (ad esempio collegare un color output a un surface input di un oggetto e il colore dell'oggetto sarà modificato), ma a volte i collegamenti sono così complessi da non sapere quale sarà il risultato.

Nella barra in alto c'è il menù "Nodes" in cui sono raggruppati per funzioni quasi tutti gli shader, altrimenti può essere comodo utilizzare la shader toolbar (Main menù -> View -> Toolbar -> Shaders) trascinando direttamente nel render tree gli shader.

Imm52.jpg

Per collegare due nodi basta trascinare dall'output di uno shader la freccia rossa su un parametro (e vedere se il parametro accetterà il collegamento), se i parametri sono raggruppati e non visibili quando ci trascinate sopra la freccia rossa dell'output appare una lista di parametri da cui poter scegliere (i parametri contrassegnati da un puntino nero sono già collegati). Per inserire dei nodi direttamente nel render tree è comodo utilizzare i menù contestuali richiamabili con il tasto destro, ad esempio cliccando sopra una linea di collegamento o direttamente sopra a un parametro a cui si vuole collegare uno shader.

Selezionando uno shader nel render tree, quando possibile, si attiva in alto una barra per inserire il texture projection.

Per sostituire uno shader basterà trascinare dal browser quello nuovo sopra a quello da cambiare nel render tree (anche se sul mio vecchio portatile questa operazione mi da puntualmente errore e va in crash). Con "Ctrl+C" e "Ctrl+V" (o con il menù contestuale) è possibile copiare e incollare un nodo.

Selezionando un nodo e premendo F2 è possibile rinominarlo.

Il salvataggio di un materiale come preset è un'opzione molto comoda, salvando il material in automatico verrà salvato l'intero albero, se si salva un nodo verranno salvati anche tutti quelli seguenti nella gerarchia. Le operazioni di salvataggio e di caricamento dei preset vengono fatti dal property editor del material o dello shader.

Tips, ottimizzazioni e problemi comuni

  • Quando si sta lavorando a uno shader è comodo tenere attivato il render region sull'oggetto, ma è consigliato (soprattutto x shader complessi) disattivare l'auto refresh del render region.
  • Per visualizzare immediatamente l'effetto di un node collegatelo prima direttamente al nodo material surface per poi metterlo nella posizione all'interno dell'albero che desideravate.
  • Assicuratevi di connettere uno State Vector shader all'input "Coordinates" di un Texture generate shader quando è collegato a un Image shader.

Imm53.jpg

  • Se volete un controllo completo di tutte le vostre texture e di tutti gli shader con un valore di uscita in RGB potete collegare a destra un color correction shader con cui modificare gamma, contrasto, tonalità e saturazione di questi color value.

Imm54.jpg

  • Utilizzate sempre un numero minimo di shader per realizzare un particolare effetto
  • Se il risultato in render di un render tree è tutto rosso probabilmente c'è un valore scalare collegato a un input che richiede un valore RGB (il valore scalare gli passa solo il valore per il canale rosso)
  • Se avete selezionato più oggetti potrebbe succedere che il render tree non possa venire aggiornato

Nella quinta parte troverete una breve definizione dei Geometry shader e una lista con i + comuni shader e relative definizioni

post-3829-1173434495_thumb.jpg


Edited by gurugugnola

Share this post


Link to post
Share on other sites
Ma ne uppi uno al giorno?

in una settimana spiegherai tutto XSI!

^_^ non essere così ottimista... finora ho riassunto circa 30 pagine della guida cartacea e 150 di un pdf della "guida elettronica", la guida cartacea intera è di circa 300 pagine e i pdf saranno come minimo una ventina... senza considerare tutta la parte dedicata solamente a Mental ray e alla programmazione e tanti altri argomenti di cui non conosco nemmeno l'esistenza :mellow: Programmi di questo genere sono davvero "enormi" e richiedono delle specializzazioni.

Credo che non si possa conoscere tutto alla perfezione, è meglio sapere un minimo di tutti gli argomenti (il minimo indispensabile per portare a termine un progetto completo ma semplice) e poi scegliere un ambito in cui specializzarsi... a parte questo per ora finisco di studiare (e pubblicare) gli shader, ma il prossimo argomento che ho intenzione di approfondire sarà sicuramente il texturing.

Se poi qualche utente + esperto fosse disposto a condividere qualche tutorial + pratico sarebbe fantastico! :)

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...