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

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

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
  • la "M" inoltre compare sopra al node nel render tree e in basso sono riportati i renderer supportati
Imm48

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

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

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

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

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

---
Questo articolo è stato importato automaticamente dal forum il 31/lug/2014
Per vedere il post originale e/o i commenti sul forum prima di quella data clicca qui