RENDER MAP.
Le
Render Map sono delle texture generate considerando la luce incidente sulle
superfici, sulle quali vengono riportate ombre e ombreggiature. Si utilizzano
per applicazioni in tempo reale, dove è necessario che i rendering delle
scene avvengano in tempi brevi. Infatti in questi non aviene nuovamente il calcolo
delle luci e delle ombre.
Il funzionamento è questo: i raggi di luce che cadono sulla superficie
vengono memorizzati in base alle coordinate UV della superficie e si utilizzano
per generare una texture.
Consideriamo
questa situaizone: il modello di una città con 2 griglie messe sopra
inclinate, sulle quali è applicato un materiale Constant.
Renderizziamo
con il Final Gathering attivo prendendolo dalle opzioni di rendering.

Applichiamo
una proprietà UNIQUE UV. Priama vediamo come funziona su una sfera.
Prendi una sfera e applicagli queste coordinate:
Nel
Texture Editor appaiono così:
Questo
perchè l'Unique UV è impostato così:

...cioè sul raggruppamento di poligoni con una inclinazione sotto la soglia dei 45 gradi.
Impostiamo
i parametri così:
Ogni
poligono della superficie viene isolato.
Altri
parametri sono questi:
Torniamo
alla scena della città.
Applichiamo alla città l'UV Unique impostando la modalità Individual
Polygon Packing.
Seleziona
l'UV Unique e Freezzalo.
A
questo punto applica una Render Map.
Fra
i parametri della Render Map imposta il nome del file della mappa:
Poi
imposta la stessa risoluzione utilizzata nell' Unique UV.
Vai
nelle opzioni di rendeiring.
Clicca
sulpulsante "Copy Options From Region".
Riprendi
i valori della Render Map.
Clicca
sul pulsante Regenerate Map.
Apri il Render Tree e inserisci un nodo Image.

Sostituiamo
la texture con la Render Map.
La
texture è fatta così:

A
questo punto nella vista si vedono i colori definiti dall'illuminazione direttamente
impostati sulla texture.
La
Render Map non è granchè perchè ha appena una risoluzione
di 256 pixel. Potevamo aumentarla durante le impostazioni dell' Unique UV e
della Render Map.
Apriamo nel Render Tree le caratteristiche della texture:
Da
qui si impoa la risoluzione OpenGL massima nella vista con il parametro MAXIMUM
WIDTH OR HEIGHT. Tuttavia impostare valori superiori a quelli della risoluzione
massima effettiva della Render Map non comporta cambiamenti.
UNA SOLA RENDER MAP PER PIU' OGGETTI.
Vediamo
come applicare una singola Render Map a più oggetti.
Il meccanismo consiste nell'assegnare a ogni singolo oggetto di un gruppo una
proiezione di tipo Unique UV, in modo tale che le coordinate di mappatura di
un oggetto non vadano a sovrapporsi a quelle di un altro.
Consideriamo
questa situazione: 3 ciambelle con 2 griglie inclinate a destra e sinistra a
cui sono associati dei materiali Constant di colore diverso.
Seleziona
i 3 oggetti e assegnagli una proiezione Unique UV.
Imposta
queti parametri:
Aumentiamo
la risoluzione della proiezione da qui:
Imposta
le dimensioni della proiezione così:
In questo modo parte della texture applicata rimarrà scoperta dalla proiezione.
A
questo punto posizioniamo le proiezioni in zone diverse dell'Unwrap. Seleziona
un oggetto alla volta e imposta questi parametri così:

Seleziona
tutti e 3 gli oggetti e crea un gruppo.
A
questo punto applica una Render Map.
Imposta
fra i parametri il percorso dove verrà salvata l'immagine e la risoluzione,
che risulta essere la stessa impostata per l' Unique UV. In particolare la risoluzione
vale per l'intero gruppo, quindi non è applicata a ogni singolo oggetto
del gruppo ma a tutti gli oggetti contenuti in essi.
Ricordiamoci
di impostare le proiezioni di mappatura nel campo UV.
A
questo punto clicca sul pulsante Regenerate Maps. La mappa generata è
fatta così:
Assegna
al gruppo intero un materiale che utilizza la Render Map come texture.

Applica
alla texture la corretta proiezione di mappatura.
Clicca
su EDIT per aprire i parametri della Render Map. Qui imposta la massima risoluzione
OpenGL della vista a 2048.

MAPPE AD ALTA RISOLUZIONE.
E'
possibile utilizzare le RenderMap per ricavare l'illuminazione relativa a modelli
ad alta risoluzione, e mappare modelli a bassa risoluzione mantenendo così
i dettagli pur operando su un modello leggero.
Consideriamo questo modello:
Creiamo
un modello a bassa risoluzione partendo da questo.
Creiamo una sfera coincidente con questo oggetto.
Andiamo
sul Visibility dell'oggetto a bassa risoluzione.
Disattiviamo
i raggi primari e secondari.
Applichiamo
una Render Map al modello a bassa risoluzione.
Impostiamo 1024 come risoluzione.
Poi
creiamo una proiezione di mappatura direttamente da qui cliccando su NEW e impostando
questo tipo:
Lo scopo è quello di creare una Render Map da utilizzare come mappa di
Displacement sul modello a bassa risoluzione. Perciò nei parametri del
Render Map andaiamo alla tabella Surface Map Settings e impostiamo il grigio
medio.
Questo
colore indica assena di Displacement. Valori più scuri rientranze, valori
più chiari protuberanze. Occorre definire queste variazioni in base allo
scostamento tra le superfici del modello a bassa risoluzione e quello ad alta.
Nella
tendina Advanced troviamo i parametri della Virtual Camera.
La
Virtual Camera è una cinepresa invisibile che gira intorno all'oggetto
scansionando la superficie per prenderne i dettagli di illuminazione. Da qui
è possibile definire la distanza dalla superficie dell'oggetto. Non deve
essere troppo vicina altrimenti interseca la superficie e perde dei dettagli,
ma nemmeno troppo lontana altrimenti la scansione viene distorta.
Creiamo questo materiale per il modello ad alta risoluzione:
Il
nodo Front-Back è stato preso da qui:


Le facce postive vengono visulizzare in rosso, quelle negative in blu. Perciò se la cinepresa va oltre la superificie appariranno zone blu perchè sta guardando al suo interno (qui nell'esempio appare una zona blu perchè ci sono delle facce irregolari in cima ribaltate).
Facciamo
allora delle prove. Impostiamo questo valore:
Genera
la mappa Render Map poi importala nel Clip Viewer.

Aumentiamo
il valore e rigeneriamo la mappa finchè le parti blu non sono sparite
completamente.

A
questo punto riapri il Render Tree e cancella il noto Front-Back e crea questo
nodo:

La
sua funzione è ricavare la distanza tra la superficie e la cinepresa.
Imposta i suoi parametri così:
Questo
valore di distanza superficie-cinepresa deve essere trasformato in un range
di colori RGB.
Crea questo nodo:
Collega
i nodi così:
La
funzione del Change Range è modificare il range dei valori passati in
input. Lo scopo è ottenere in uscita un range [0...1], perciò
imposta i suo valori così:
Alla
fine colleghiamo l'uscita così:
A
questo punto torna sulla Render Map del modello a bassa risoluzione e rigenerala.
Abbiamo
ottenuto la mappa Displacement. Ora non resta che applicarla.
Nascondiamo il modello ad alta risoluzione.

Creiamo
il materiale così, inserendo la texture del Displacement come input al
nodo Image.
Lo
scopo è trasformare il range [0..1] della mappa Displacement in un ragne
più ampio. Utilizziaom lo stesso range applicato all'inizio per generare
la mappa.

Infine
colleghiamo l'output al Displacement del materiale.

Riattiviamo per il modello a bassa risoluzione la ricezione dei raggi luminosi
nella traccia Visibility.
Poi
renderizziamo.
Apriamo
le proprietà del Geometry Approximation.

Imposta
questi parametri:

Invertiamo
la mappa Displacement utilizzando un nodo Invert:

Lo
spuntone in cima lo eliminiamo modificando i parametri del Texture Projection:


Compariamo le due versioni visualizzando di nuovo il modello ad alta risoluzione.
BAKING
DELLA LUCE.
Consideriamo questa scena:
Crea
un Cluster per i poligoni a livello zero.
Poi
creiamo un cluster per i palazzi.
Assegnamo
un materiale Constant per le strade.
Facciamolo
bianco.
Al
cluster dei palazzi assegnamo un materiale Lambert. Bianco sul Diffuse, nero
sull' Ambient.

Vai qui:
Abilita
il Final Gathering.
Per regolare l'illuminazione agisci sul materiale dei palazzi. E' possibile
regolare sia il Diffuse della superficie che l'illuminazione indiretta.

In questo caso lasciamo inalterati i valori in quanto nel rendering non appaiono zone eccessivamente sovraesposte.
Selezioniamo
la luce.
Riduciamo
tra i suoi parametri l'intensità.

Creiamo
una griglia e mettiamola sopra la città per simulare il cielo.
Anche
a questa griglia diamole un materiale di tipo Constant bianco.
Se
la scena è troppo chiara abbassiamo il colore della griglia impostando
un livello di grigio.
Seleziona
la città e vai qui:
Nell'Explorer
appare qui:

Cambiagli
il nome.
Ora
applichiamo alla città questa proprietà:
Nell'Explorer
si trova qui:
Tra
i suoi parametri imposta questi:
E
imposta le luci stradali come colore delle superfici.
In basso seleziona anche la voce Shadows per disabilitare nuovamente la proiezione delle ombre.
Il
Render Map funziona per bene solo se è attivo il Final Gathering. Dato
che questo è abilitato solo per il Render Region, occorre attivarlo anche
per il Render totale. Per farlo vai qui:
Nella
finestra che si apre, in alto, clicca sul pulsante Copy Options From Region.
In
questo modo le impostazioni del Final Gathering per il Region saranno impostate
anche per il Render totale, compresa la sua attivazione. Occorre fare questo
passaggio perchè la Render Map tiene conto delle impostazioni del Render
totale, e non del Render Region.
A questo punto clicca su Regenerate Maps nel Render Map.

La
scena sembra non cambiare. Questo accade perchè il Render Map ha lo scopo
di assegnare ai vertici della superficie il colore presente nel rendering, in
modo da vedere le ombreggiature del rendering direttamente nella vista. Facciamo
il pavimento verde cambiando il colore del Constant applicato su di esso e poi
fra i parametri del Render Map clicchiamo su Regenerate Maps. Come si nota sulle
superfici, direttamente nella vista, appaiono le sfumature di luci.
Però
rimettiamo il bianco...
Cancelliamo
i materiali assegnati ai singoli clusters.
Poi
riapplichiamo un Lambert ai palazzi.
Assegniamo
alla città delle coordinate di mappatura di tipo SPATIAL.
In
questo modo otteniamo per la superficie una proiezione tridimensionale delle
texture procedurali.
Nel
Render Tree creiamo questo nodo:
Colleghiamolo
così:
Il
Lattice ha la funzione di creare delle chiazze sulle superfici.
Disabilitiamo dal Render Regionil Final Gather e regoliamoi parametri del Lattice
per ottenere qualcosa del genere:

Crea
questo nodo:
Collegalo
così:
La sua funzione è quella di assegnare un colore all'Incandescence del Lambert in base alla mappa di vertici creata in precedenza.
I
parametri del Map Lookup Color impostali così:
Tra
i parametri del Lambert aumenta l'intensità dell'Incandescence.
