Normal Map Create Marvin Landis - by basilio noris aka dies-irae

Pagina creata da Michele Gagliardi
 
CONTINUA A LEGGERE
Normal Map Create Marvin Landis - by basilio noris aka dies-irae
Marvin Landis
Normal Map Create

              .PDF by
     basilio noris aka dies-irae
Normal Map Create Marvin Landis - by basilio noris aka dies-irae
Introduzione
Le moderne applicazioni in tempo reale hanno oramai una buona
qualità, ma sono ancora ben lungi dalle animazioni pre-renderizzate
in quanto a qualità dell'immagine, complessità dei modelli e a tecnica
d'illuminazione.

Un grave handicap per la grafica in tempo reale è il numero di
poligoni. I motori grafici riescono a rendere soltanto un numero
limitato di fotogrammi al secondo ( 25-30 ). Si è tentato in vari modi
di ridurre il numero di poligoni, ma fino ad ora i modelli semplificati
(lowpoly) non sono belli quanto i modelli originali (hipoly)
Si usano textures di colore e mappe di rilievo, ma I risultati non sono
ancora soddisfacenti.

Una tecnologia recente (che apparirà nella prossima generazione di
videogiochi) utilizza mappe di normali per simulare le forme di un
modello hipoly su modelli più semplici. Questa tecnica ha ancora
molti difetti ma la qualità dei modelli ha fatto un grande balzo pur
mantenendo basso il sempre problematico numero dei poligoni.

Nascendo come un esportatore per NormalMapper di ATI (una suite
di utilità per sviluppatori per generare e testare le mappe di normali)
questo plugin e' diventato una soluzione interamente in LW per
rendere modelli lowpoly sfruttando le mappe di normali dei modelli
hipoly.
Normal Map Create Marvin Landis - by basilio noris aka dies-irae
Incominciamo
 Se siete come me, state leggendo questo documento solo per sapere COME LO
 FACCIO. domandandovi quanto tempo ci si metterà per arrivarci. Tenterò di
 rendere la cosa il più veloce ed indolore possibile.

 STEP 0: Aggiungere i plugins
 Per ora aggiungete semplicemente i 4 plugins ( Modeler \ Plugins \ Add Plugins )
 spieghero' piu' tardi cosa fa ciascuno di loro

 STEP 1: Preparare il modello
 Avrete bisogno di 3 cose.

Il modello HIPOLY        Il modello LOWPOLY       Una mappa UV per il LOWPOLY

 Mettete il modello LOWPOLY nel Foreground Layer e quello HIPOLY nel
 Background Layer.
 Se avete delle mappe di morph, assicuratevi che (base) sia selezionata (il bottone
 M in basso a destra dello schermo).
 Rendete SMOOTHED la/ superfice del modello HIPOLY (a meno che non vogliate
 espressamente che il modello LOWPOLY resti flatshaded)
 Lanciate il plugin NormalMapCreate.
Normal Map Create Marvin Landis - by basilio noris aka dies-irae
STEP 2: Esportare la N-Map

Potete lasciare i settaggi come sono, potete cambiare la risoluzione della Normal
Map. (1024 é già buona ). Spiegherò più tardi l'utilizzo delle bump map e delle altre
opzioni.
Schiacciate su ok e salvate l'immagine, dovreste ottenere qualcosa del genere:

potete chiudere modeler ora e caricare il modello LOWRES in layout.
Normal Map Create Marvin Landis - by basilio noris aka dies-irae
STEP 3: Caricare la N-Map
In layout, aprite il surface editor e selezionate la superficie dell'oggetto.

nel tab shaders aggiungete il plugin NormalMapShader (1), e doppio cliccateci
sopra. Nel texture editor che si apre selezionate l' UV Map desiderate (2), la N-
Map che volete usare (3) e cliccate su use texture.
Normal Map Create Marvin Landis - by basilio noris aka dies-irae
STEP 4: Il Render
Ecco fatto, premete F9 e godetevi il risultato…

una nota importante riguardo alla bump map. Il canale del rilievo è calcolato
utilizzando le normali dei punti dell'oggetto, ma ora il motore legge questi dati
dalla N-Map anziché dai poligoni dell'oggetto, quindi ignorerà completamente il
canale bump. Per usare le bump map, dovrete usare BumpMapCreate ed usare
l'opzione di bumpmap in NormalMapCreate. Andate nella sezione
BumpMapCreate qui sotto per saperne di più.
Normal Map Create Marvin Landis - by basilio noris aka dies-irae
Approfondimento
BumpMapCreate (Layout)
Questo plugin viene utilizzato per trasformare il canale di rilievo in un immagine
utilizzabile come texture. Dal momento che il bump non influisce sulle superfici che
usano N-MapShader, bisognerà applicare questa texture PRIMA della creazione
della N-Map.

Create una UVMap per il modello HIPOLY se non ne avete ancora una.

Aggiungete il plugin alla superficie e aggiungete pure surface baker.
Aprite le opzioni di surface baker e checkate soltanto BAKE SHADERS.
Selezionate la UVMap e renderizzate. Otterrete una "cottura" (baking) del canale di
bump. L'immagine risultante potrebbe essere troppo chiara o troppo scura e
perdere perciò dettaglio. Potete usare i controlli di esposizione
dell'ImageViewerFP o più facilmente, cambiare il valore del DIFFUSE per la
Normal Map Create Marvin Landis - by basilio noris aka dies-irae
superficie. Potete sempre cambiare l'immagine una volta che vorrete usare la
mappa.
(Quest'immagine e' stata resa con un DIFFUSE del 50%, al 100% l'immagine era
completamente bianca)

Per ora la modalità ALPHA blend non é supportata, i layer che l'utilizzano non
vengono presi in considerazione. (sembrano esserci alcuni problemi con layers che
utilizzano valori negativi)
Se avete bisogno di usare l'ALPHA blending, potete usare un altro metodo che non
necessita di questo plugin.

STEP 1: Copiate tutti I layers dal bump channel

STEP 2: Incollate tutti I layers nel color channel
Normal Map Create Marvin Landis - by basilio noris aka dies-irae
Dopodiché mettete il colore di base della superficie su Nero e il colore dei vari
layers su Bianco (o vice versa se state usando dei rilievi negativi). Il texture value
di ogni layer può essere riprodotto usando diverse gradazioni di grigio. (per
esempio, un texture value al 30% diventa un grigio a 76 76 76)

STEP 3: Aggiungete Surface Baker e checkate soltanto BAKE COLOR,
inserite la UVMap corretta per il modello HIPOLY.

Potete rendere la texture, se usate AntiAliasing, il render può metterci molto tempo.

NOTA:Il method é elastico, potete usare la luminosity o diffuse invece del
colore, ogni metodo ha bisogno di un po' di aggiustamenti. Per ottenere buoni
risultati.
Normal Map Create Marvin Landis - by basilio noris aka dies-irae
N-MapCreate (Modeler)

Lo-res Model Parameters
Unica cosa da notare, l'opzione "Export lo-res model to NMF". Questo esporta un
file .nmf che può essere utilizzato con i tools della ATI. Usatela se volete giocare un
po' con quelle utilities. Il resto é abbastanza evidente.

Hi-res Model Parameters
Abbiamo appena visto come creare un'immagine di bump. Dal canale di rilievo.
Selezionate la mappa desiderate (dovrete caricare l'immagine in modeler PRIMA
di poterla usare qui )
La "bump map scale" é usata per affievolire o aumentare l'effetto di rilievo. Se
avete una vostra mappa probabilmente potrete lasciare questo valore intatto. Se il
rilievo e' troppo forte, dovrete mettere valori piu' piccoli. Beninteso, sono accettati
valori negativi.
NOTA: le immagini di bump create con BumpMapCreate hanno bisogno
normalmente di un Bump Map scale di 0.2

Ancora una volta, potete esportare l'oggetto per i tools della ATI.

Advanced Parameters
La maggior parte di questi valori sono interessanti soltanto se volete giochare con
le utilities della ATI, altrimenti non avrete probabilmente bisogno di cambiare questi
valori.
Ecco una veloce descrizione delle opzioni:

NORMALS: decide che spazio di coordinate usare (TANGENT serve per NMFView
di ATI, (vedere più in basso).
BOX FILTER: applica un blur all'immagine finale.
COMPARISON TOLERANCE: rimuove imprecisioni nei calcoli con la virgola.
EXPAND BORDERS: espande la regione delle normali. Può causare un po' di
artefatti con le mappe di tipo ATLA, ma migliora un po' la qualita' della mappa.
CUTOFF ANGLE: determina se la normale di una faccia del HIPOLY ha più o meno
la stessa direzione di quella del LOWPOLY. Elimina alcuni difetti in alcuni casi ma
rischia di causarne di nuovi. Più é piccolo l'angolo, più simile dovrà essere il
modello HIPOLY al modello LOWPOLY.
MIPMAP CHAIN CREATION: Per sviluppo di giochi, se volete implementare il mip
mapping. RECAST ricalcola l'immagine per ogni livello di mip mao. FILTER fa un
semplice blur dell'originale.
SAMPLES PER TEXEL: Più campioni sono utilizzati per ogni pixel, risultando in una
sorta di antialiasing. Il tempo di calcolo cresce in modo lineare. Può causare
artefatti.
NORMAL SELECTION: decide quale normale scegliere quando piu' normali del
HIPOLY sono disponibili

(più informazioni sono disponibili nella documentazione del tool NormalMapper di ATI)

N-MapShader (Layout)
Non molto da dire, aggiungere ed aprire, funziona esattamente come il Texture
Editor standard di LW. Scegliete la N-Map e l'UVMap per il modello LOWPOLY ed
é tutto.

N-MapColor (Layout)
Questo plugin é un metodo rapido per creare una N-Map per un oggetto.
Aggiungetelo tra gli shaders e usate Surface Baker per salvare la texture,
esattamente come per il plugin BumpMapCreate.
La mappa appena creata non dipende dall'oggetto LOWPOLY, (dovrete perciò
aggiustare a mano l'UVMap del modello LOWPOLY per farla corrispondere con la
N-Map) e I risultati sono ben lontani da quelli ottenuti con NormalMapCreate. Un
vantaggio resta nell'estrema rapidità del plugin.
ATI Normal Mapper
ATI's Normal Mapper é all'origine di questo set di plugin, potreste quindi essere
interessati a provarlo. Potete scaricarlo da http://www.ati.com/developer/tools.html
Guardate assolutamente la presentazione NormalMap.ppt (potete scaricare
PowerPointViewer da www.microsoft.com) e il file readme.txt file

Creare una nuova mappa.
Se volete provarlo, usate N-MapCreate e checcate le opzioni di "export to NMF
options".
Questo creerà due files .NMF, per esempio lores.nmf and hires.nmf.
Aprite una shell di dos (win+r "cmd") e scrivete
"normalmapper lores.nmf hires.nmf 1024 1024 normalmap.tga"
"1024 1024" e' la dimensione della texture e "normalmap.tga" é il nome
dell'immagine.

Vedere gli oggetti.
Potete vedere i files .nmf più la normal map in tga (creata con il programma di ATI o
con N-MapCreate) utilizzando NMFViewer.
Una nota se avete creato la mappa con N-MapCreate: Lightwave salva I TGA
usando un ordine di righe dall'ultima alla prima. Se volete usarli con NMFViewer,
dovrete flipparli. Se aprite I TGA e li risalvate subito in photoshop ( o psp o
qualunque altra applicazione di fotoritocco) l'immagine sarà salvata con ordine
dalla prima all'ultima riga e il viewer funzionerà correttamente.

Limitazioni e Problemi
Una nota importante, le ombre mappate o tracciate, non tengono conto delle
normali dei pixels, perciò l'ombreggiatura verrà calcolata in funzione del modello
LOWPOLY, il che può causare incongruenze, soprattutto con ombre molto nette.
La specularità, la riflessione e la luce diffusa vengono calcolate usando le normali
dei poligoni, sono quindi questi i parametri che traggono vantaggio delle
informazioni della N-Map.

Come già detto, il canale di bump smette di lavorare quando NormalMapShader é
attivato. Se cambiate la bumpmap, dovrete ricalcolare la N-Map, processo alquanto
noioso ma non c'é altra soluzione.

NormalMapShader non renderzza
Sembra esserci un problema con alcune installazioni di LW. NormalMapShader
sembra non funzionare e rende soltanto dei modelli piatti. Il problema è di LW, e
una reinstallazione sembra risolverlo. Tuttavia, c'è un'altra soluzione: basta
aggiungere la N-Map al canale di bump e il plugin comincerà a funzionare. Non so
dire perché questo dovrebbe funzionare ma lo fa ; )
Links Utili
La pagina del Plugin               http://amber.rc.arizona.edu/lw/normalmaps.html
I plugin di Marvin Landis          http://amber.rc.arizona.edu/lw/
Questo documento                   http://www.dies-irae.com/NMCManualITA.pdf
LA pagina dei plugin di LW         http://www.flay.com
Home page ATI                      http://www.ati.com
ATI's Normal Mapper                http://www.ati.com/developer/tools.html
Forum CGTalk                       http://www.cgtalk.com
StrokeIt                           http://www.tcbmi.com/strokeit/

Il vostro umile servitore         dies-irae@dies-irae.com
(in caso aveste bisogno di qualsiasi cosa)

Ringraziamenti
Marvin Landis, per aver scritto questo magnifico plugin!
Michael Blackbourn, per le immagini d'esempio
Sil3, per la soluzione al problema di NormalMapShader
PJ, per aiutarmi in questo documento
Geng@, idem
Voi, per aver letto fin qui…
Sam, per aver cucinato quando stavo davanti al pc.
Kino, per avermi insegnato a giocare a Rocket Arena
Alcuni esempi

  gramps model by David Maas. Renders by Marvin Landis
images courtesy of Michael Blackbourn
Puoi anche leggere