<- Materiali e shader, seconda parte

MATERIALI
Ogni oggetto presente in una scena ha un materiale che definisce il suo aspetto nel render, ogni materiale ha dei punti di connessione (port) a cui vengono applicati degli shader per definire le proprietà della superficie. In questa terza parte vedremo come assegnare i materiali, come utilizzare le librerie e come definire le caratteristiche di base (ambience, diffuse, trasparenza, riflessioni…). Con il termine "materiale" si intendono tutte gli effetti prodotti dalla rete di shader applicati a un oggetto, anche se in xsi un materiale è solo un contenitore di nodi (port) che senza shader connessi non ha nessuna caratteristica visiva in fase di render.
Imm20
Quindi quando applichiamo un materiale a un oggetto ogni shader connesso ai vari port definirà la relativa caratteristica superficiale. Ad esempio lo shader (o la rete di shader) connesso al port "surface" definirà le caratteristiche di colore, di riflessione, di trasparenza… Ad alcuni port possono essere connessi vari tipi di shader, altri hanno possibilità + ristrette.
Ogni nuova scena ha un materiale di default (Scene_Material) ed è modificabile come qualsiasi altro materiale (solitamente è un material con assegnato un phong shader), se applicate un nuovo materiale a un oggetto verrà sostituito a quello di default, se eliminate (o rimuovete) questo nuovo materiale assegnato in locale verrà rassegnato il materiale di default. Se cancellate il materiale di default al suo posto verrà assegnato il materiale + vecchio tra quelli creati nella scena.
Librerie dei materiali: Le librerie contengono i materiali usati nella scena, in modo tale che potrete utilizzare lo stesso materiale per + oggetti. È possibile creare + librerie in una scena e esportarle per utilizzarle in altre scene. È possibile visualizzare le librerie di una scena dall'explorer; nell'explorer i materiali sono contrassegnati da diverse icone, modalità di scrittura e parentesi che ci indicano l'origine, la modalità di assegnazione e il numero di oggetti nella scena a cui il materiale è stato assegnato.
Di default nella scena c'è la libreria chiamata "defaultLib" contenente il Material_scene. Ogni nuovo materiale creato verrà salvato automaticamente in questa libreria finché non creerete una nuova libreria (o importerete una libreria esterna) settandola come current library.
Di default le library sono memorizzate internamente alla scena, ma è possibile memorizzarle in esterno come "dotXSI" o come file di testo da poter utilizzare con altre scene.
Di default le library esterne sono salvate nella directory "Matlib", ma potete salvarle in qualsiasi cartella.
Le librerie esterne salvate come file di testo hanno la comodità di poter essere modificate senza aprire XSI, ma utilizzando un qualsiasi editor di testi.
Per settare una libreria come "current" aprite l'explorer e settate lo "scope" su material, selezionate la libreria e con il tasto destro del mouse scegliete l'opzione "Set as current library".
Sempre dall'explorer selezionando il node "List" con il tasto destro del mouse potete scegliere l'opzione "Create new material library".
Le librerie importate di default vengono memorizzate internamente alla scena: selezionate il node "List", tasto destro del mouse ->import material library, se invece volete che la library rimanga esterna alla scena potete scegliere l'opzione "import referenced material library". Le modifiche fatte alle library si rifletteranno anche in tutte le scene dove è stata importata come referenced, questo è molto utile quando si lavora in team perché viene creata una "master library" che tutti gli utilizzatori importeranno come referenced e non potranno modificarla.
Per esportare una libreria bisogna selezionarla nell'explorer e con il tasto destro del mouse scegliere "Export material library". Si procede allo stesso modo per rinominarla o eliminarla.

Material e surface shader: I surface shader sono quelli comunemente utilizzati in XSI per definire le caratteristiche basilari della superficie, ognuno secondo uno specifico modello di shading.
Di default nello Scene_Material al port surface del material è collegato uno shader Phong, se volete cambiarlo basta sceglierne un altro dalla toolbar Render -> Get -> Shader -> Surface.
Per disconnettere o cancellare un surface shader potete procedere dall'explorer o graficamente dal render tree.
Dal property editor dello shader è possibile generare un colore molto specifico dell'oggetto modificando i valori del diffuse (colore principale della superficie), ambient (il colore delle zone non direttamente colpite dalla luce, in alternativa si può utilizzare il calcolo della GI con risultati + realistici e maggior tempo di calcolo, oppure si può settare l'ambient con gli stessi valori del diffuse e utilizzare il controllo dell'ambient della scena) e specular (colore dei punti luce, per forma e dimensione dipende dallo specular decay).
Imm22
Material Manager: da questa finestra è possibile creare, visualizzare e editare librerie, materiali e texture layer in maniera comoda e veloce. In pratica si hanno tutti gli strumenti per poter lavorare con i materiali della scena.
Imm21
Assegnare e editare materiali
Ci sono diversi modi di assegnare un materiale:
- Assegnare un nuovo materiale a una selezione di oggetti: Render -> Get -> Material -> scegliere uno shader dalla lista
- Assegnare un materiale già esistente a una selezione di oggetti: Drag & drop ad esempio dal material manager
- Assegnare un nuovo materiale o uno già esistente a un cluster di poligoni o a una selezione di poligoni: con i metodi precedenti selezionando prima i poligoni o cluster a cui applicare il materiale
- Copiare il materiale di un oggetto a un altro oggetto: Drag & drop (+Ctrl) dall'explorer
Dall'explorer selezionando un materiale è possibile (tasto destro) cancellarlo, duplicarlo e rinominarlo; inoltre è possibile selezionare tutti gli oggetti a cui è assegnato il materiale selezionato.

Assegnare materiali a una gerarchia: come per ogni altra proprietà anche i materiali applicati al parent di una gerarchia si propagherà ai suoi children a meno che questi non abbiano assegnato un local material.

Modelli di shading
Ogni modello di shading presente nella toolbar Render -> Get -> Material determina come appare la superficie nella varie condizioni di luce creando ognuno un particolare effetto diverso.

Phong: ambient/diffuse/specular. Legge l'orientamento delle normali e le interpola per ottenere un'ombreggiatura uniforme. Il punto di luce sulla superficie (specular highlight) è calcolato mediante le relazioni tra le normali della superficie, la luce e il punto di osservazione. Il risultato è un oggetto con diffuse e ambient uniformi e l'highlight tipico di materiali lucidi (una palla da biliardo, alcune plastiche…). Con questo modello di ombreggiatura è possibile calcolare anche le riflessioni, rifrazioni e trasparenze.
Imm23

Lambert: ambient/diffuse. La mancanza dello specular genera una superficie opaca. Per ottenere questo shading interpola le normali dei triangoli di superficie adiacenti, il risultato è una superficie opaca come una palla da ping pong, il guscio di un uovo, un vaso per piante, terra e alcuni materiali da costruzione. Con questo modello di ombreggiatura è possibile calcolare anche le riflessioni, rifrazioni, trasparenze e texture.
Imm24

Blinn: ambient/diffuse/specular (per calcolare lo specular highlight utilizza lo IOR). Molto simile all'ombreggiatura Phong, ma ha un controllo + accurato dello specular highlight (che sembra essere anche + luminoso), quest'ombreggiatura è utilizzata per simulare superfici metalliche. Con questo modello di ombreggiatura è possibile calcolare anche le riflessioni, rifrazioni, trasparenze e texture.
Imm25

Cook-Torrance: ambient/diffuse/specular (per calcolare lo specular highlight utilizza lo IOR). Legge l'orientamento delle normali e le interpola per ottenere un'ombreggiatura uniforme. Il punto di luce sulla superficie (specular highlight) è calcolato mediante le relazioni tra le normali della superficie, la luce e il punto di osservazione. Questo modello di ombreggiatura è una via di mezzo tra un blinn e un lambert, utilizzato per simulare superfici lisce e riflettenti (ad esempio la pelle di un divano). Con questo modello di ombreggiatura è possibile calcolare anche le riflessioni, rifrazioni, trasparenze e texture. È + complesso dei precedenti quindi richiede tempi di render + alti.
Imm26

Strauss:
solo diffuse per simulare superfici metalliche. Lo specular è definito con "smoothness" e "metalness", parametri che controllano anche il rapporto tra diffuse e specular, riflessioni e punti luce. Con questo modello di ombreggiatura è possibile calcolare anche le riflessioni, rifrazioni, trasparenze e texture.
Imm27

Anisotropic:
(o Ward) diffuse/ambient/Glossy per simulare superfici lucide, per l'effetto spazzolato (alluminio ad esempio). È possibile definire l'orientamento del colore speculare in base all'orientamento della superficie. Lo specular è calcolato in base alle coordinate UV. Con questo modello di ombreggiatura è possibile calcolare anche le riflessioni, rifrazioni, trasparenze e texture.
Imm28

Constant:
solo diffuse. Ignora l'orientamento delle normali della superficie. Considera tutti i triangoli della mesh come se avessero lo stesso orientamento e distanza dalla fonte luminosa, l'oggetto appare senza ombreggiature. È molto utile con gli effetti di static blur da applicare agli oggetti su cui non si vogliono specular e ambient, oppure come supporto per le texture perché lo shading non interferisce in alcun modo su di loro.
Imm29

Toon:
ambient/diffuse/specular. Inizialmente il toon viene calcolato come un constant e su questa base poi viene compositato sopra l'ambient lighting inteso come Highlights (calcolate in base all'orientamento della superficie) e Rimlights (calcolate in base all'incidenza vettoriale) che non ha nulla a che fare con l'illuminazione della scena. I risultati possono essere tra i + diversi in base ai settagli di questi 2 parametri. Solitamente questo shading è utilizzato insieme al Toon ink lens shader (applicato al render pass camera) per creare le linee di contorno in stile cartoon.
Imm30

RIFLESSIONI, TRASPARENZA E RIFRAZIONI
Riflessioni
La riflessione è controllata dal parametro "reflection" nel property editor dello shader, se il color box di questo parametro è settato sul nero la riflessione sarà nulla mentre se è settato sul bianco sarà massima (inoltre è possibile utilizzare anche lo spider dell'alpha, oppure applicare una texture in b/n o scala di grigi). Nelle zone di riflessione gli altri parametri (diffuse/specular/ambient) hanno meno incidenza fino a scomparire per gli oggetti completamente riflettenti. Quindi può essere necessario per un materiale riflettente dover settare gli altri parametri (ad esempio lo specular) con valori + alti del solito.
Imm31
Trasparenza

La trasparenza è controllata dal parametro "trasparency" nel property editor dello shader e le modalità di settaggio sono le stesse della riflessione.
Imm32
Rifrazione

In un oggetto trasparente è possibile settare anche l'indice di rifrazione, la rifrazione è determinata dal cambiamento dell'angolo di incidenza dei raggi luminosi quando passano da un mezzo trasparente a un altro (ad esempio tra aria e acqua). Il valore di default di questo parametro (index of refraction, nel property editor) è 1 che equivale all'aria, solitamente i valori oscillano tra 0 (il vuoto) e 2 (anche se per determinati materiali c'è bisogno di valori + alti. Riporto alcuni valori di materiali trasparenti + comuni (se cercate nel forum c'è una tabella di indici di rifrazione + fornita):
  • Aria -> 1
  • Ghiaccio -> 1,31
  • Acqua -> 1,33
  • Acetone -> 1,36
  • Alcol -> 1,39
  • Vetro -> 1,52 a 1,89
  • Poliestere -> 1,55
  • Smeraldo -> 1,57
  • Topazio -> 1,61
  • Rubino/Zaffiro -> 1,77
  • Cristallo -> 2
  • Diamante -> 2,42
Imm33
Casting and visibility
I controlli di visibilità di un oggetto determinano come esso reagisce alla riflessione, trasparenza e rifrazione. Per ognuno di questi 3 raggi ci sono 2 proprietà (nell'explorer, doppio clic sull'opzione visibility):
1. caster: determina se è in grado di emettere uno di questi "ray" (riflessione, rifrazione, trasparenza
2. visible: determina se è visibile a uno di questi "ray"
Imm37

riflessione:
la sfera al centro è un "reflection caster" e gli altri oggetti possono riflettersi su di essa
Imm34

La sfera al centro ha l'opzione "caster" disattivata per il reflection e, anche se il color box della reflection è settato come grigio chiaro, sulla sua superficie gli oggetti circostanti non si riflettono
Imm35

Il cilindro a destra ha l'opzione "reflection visible" disattivata infatti non appare nelle riflessioni della sfera centrale
Imm36
Trasparenza:

la sfera al centro è un "trasparency caster" e gli oggetti retrostanti sono visibili
Imm38

La sfera al centro ha l'opzione "caster" della trasparenza disattiva e, anche se il color box della trasparency è settato come grigio chiaro, gli oggetti retrostanti non sono visibili
Imm39

Il cilindro a destra ha l'opzione "trasparency visible" disattivata infatti non è visibile attraverso la trasparenza della sfera centrale
Imm40

Rifrazione:
il box al centro è un "refraction caster" e gli oggetti retrostanti sono visibili e deformati dalla rifrazione
Imm41

Il box al centro ha l'opzione "caster" della rifrazione disattiva e, anche se il color box della refraction è settato come grigio chiaro, gli oggetti retrostanti non sono visibili
Imm42

Il cilindro a destra ha l'opzione "refraction visible" disattivata infatti non è visibile attraverso la trasparenza del box centrale
Imm43
Shadow:
in tutti questi casi dallo stesso pannello possiamo decidere se rendere le ombre degli oggetti caster/receiver o no.

Ottimizzazione degli shader
Ottimizzare gli shader va a incidere positivamente sul tempo di render. Tutti i parametri non attivi vanno disattivati (ad esempio per un intonaco disattivare le riflessioni e la trasparenza), in alternativa quando è possibile conviene utilizzare i simple shader (che non hanno trasparenza, riflessione e Photon effects), le riflessioni raytraced richiedono tempi lunghi di calcolo e spesso è + comodo e + veloce utilizzare una reflection map per simulare la riflessione.

Materiali e shader, render tree - quarta parte ->

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