Jump to content
Richard

Bump Maps E Normal Maps

Recommended Posts

Salve,

chi di voi sa spiegarmi nel dettaglio in che modo funzionano le bump maps e normal maps? Ho capito sommariamente , ma non riesco a capire in che modo lavorano. O ad esempio come si possono creare delle bump maps dipinte tipo in Photoshop o altri programmi di grafica 2D.

Richard

Share this post


Link to post
Share on other sites

E' un argomento trattato molto spesso, comunque le bump map sono delle mappe di rilievo in scala di grigi che creano una parvenza di rilievo (appunto) su una mesh dove il nero è un valore di -1 e il bianco di +1. Le normal map come dive il nome creano una "turbolenza" sulla normale del poigono in base ai valori di RGB, dove il rosso influenza la X, il verde la Y e il blu la Z della normale. Le normal map non hanno valori negativi, in qunato si assume che il punto 0 è il poligono stesso. Entrambe sono dei fake, quindi non modificano la mesh, ma solamente la loro percezione, solo che le normal maps creano un effetto più convincente perchè influenzano maggiomente il modo in cui una fonte luminosa interagisce con la superfice del poligono.

Magari la spiegazione non è proprio chiara chiara, però sono un po' stanchino. :D

Share this post


Link to post
Share on other sites
E' un argomento trattato molto spesso, comunque le bump map sono delle mappe di rilievo in scala di grigi che creano una parvenza di rilievo (appunto) su una mesh dove il nero è un valore di -1 e il bianco di +1. Le normal map come dive il nome creano una "turbolenza" sulla normale del poigono in base ai valori di RGB, dove il rosso influenza la X, il verde la Y e il blu la Z della normale. Le normal map non hanno valori negativi, in qunato si assume che il punto 0 è il poligono stesso. Entrambe sono dei fake, quindi non modificano la mesh, ma solamente la loro percezione, solo che le normal maps creano un effetto più convincente perchè influenzano maggiomente il modo in cui una fonte luminosa interagisce con la superfice del poligono.

Magari la spiegazione non è proprio chiara chiara, però sono un po' stanchino. :D

per quanto ne so anche la bump map (che se non ricordo male dobbiamo a Mr. Blinn ^_^ ) va a influire sul valore della normale almeno per quanto riguarda il calcolo dello specular

Share this post


Link to post
Share on other sites

@seregost: La normale è un vettore unitario, quindi se agisse solo sull'asse Z non cambierebbe niente.

Come hai detto tu la bump map agisce dando una parvenza dell'altezza, dalla bump map in pratica viene ricavata la normale, facendo un gradiente (derivata sia su X che su Y).

È sbagliato dire anche che le normali non hanno valori negativi, infatti sono vettori e possono assumere qualsiasi direzione.

Il fatto di poter controllare indifferentemente tre canali (che poi alla fine sono due visto che (ripeto) le normali sono vettori unitari e uno si può ricavare) fa sì che le normal map sono sia più precise, sia più veloci da calcolare.

Se interessa le posso spiegare un attimino meglio, sembra un argomento abbastanza gettonato.

Share this post


Link to post
Share on other sites

va che spiego lo stesso :P

FAQ Normali

a) Cos'è una normale.?

La normale è un vettore normale (appunto) alla superficie, cioè forma un angolo di 90° con la superficie.

b ) A cosa serve la normale?

La normale è fondamentale per calcolare l'illuminazione di una superficie perché ne indica l'orientamento.

Nel modello di Lambert per esempio il coseno dell'angolo (alfa) formato dalla normale e il vettore che unisce il punto con la luce ad indicare la luminosità del punto, la luminosità sarà massima dove i raggi della luce sono perpendicolari alla superficie e diminuirà pian piano che si scostano dalla normale.

Anche nei modelli più complessi come BRDR è la normale il punto di partenza per calcolare l'illuminazione.

c) Cos'è una normal map?

Una normal map è una texture che memorizza le normali, le normali della texture vengono usate per "deviare" la vera normale della superficie. Per esempio se le normali vengono usate per "memorizzare i dettagli" di una superficie hy-poly che poi possono appiccicarli come texture ad una superficie a low-poly.

d) Cos'è una bump map?

La bump map memorizza lo scostamento dalla superficie, può essere usata prevalentemente in tre modi,

1 - per ricavare le normali tramite un gradiente (una derivata su u e v) ed essere usata al posto delle normal map

2 - per migliorare l'effetto delle normali, (parallax normal mapping) usata prevalentemente per il real time.

3 - per creare nuovi vertici e modificarne l'altezza (displacement)

e) Posso comprimere le normal map?

Sì, ma con cautela. Nonostante algoritmi come jpeg siano studiati appositamente per eliminare pixel che creano poco contrasto gli artefatti di compressione possono essere molto fastidiosi sulle normal map. Meglio usare immagini lossless come TGA.

normaliwq8.png

Se avete altre domande o sono stato poco chiaro chiedete pure.


Edited by ilmale

Share this post


Link to post
Share on other sites

Porc..... stavo scrivendo e ho chiuso la pagina per sbaglio <_<

Grazie ilmale per i chiarimenti, su quei due punti non ero molto convinto e 12 ore di lavoro non aiutano :wacko: .

Ti chiedo una cosa, in quanto mi pare di aver capito che specialmente di real time ne capisci: le parallax maps e le Relief maps, sono attualmente supportate da alcuni motori di rendering in real time, e per le prime lo so per le seconde no, da molti engine di giochi. La domanda è questa: visti i risultati, sono implementate/implementabili anche nei motori di render più usati? Vedendo i risultati farebbero risparmiare un sacco di poligoni in molte occasioni.

Alcuni link che ho trovato, solo che le mie capacità non mi consentono di capire in toto gli argomenti.

l'immancabile wikipedia

Figo ma non c'ho capito molto :)

L'immancabile wikipedia 2

Alcuni esempi di relief maps

Scusa Richard se ti impesto il post :P

Share this post


Link to post
Share on other sites

Il parallax mapping funziona piu' o meno cosi':

Mettiamo che hai sia la bump mapping che la normal map.

parallaxpx8.png

La normal map e' estratta dalla superficie in alto.

Quando proietto il raggio blu dalla telecamera quello che vorrei vedere e' il punto B, perché è quello più vicino.

Purtroppo il poligono low poly (in basso) non ha questo rilievo e il raggio prosegue finché non interseziona la geometria (a dire il vero è tutto il contrario, ma fa lo stesso :D ).

È sbagliato disegnare questo punto, perché non è quello della geometria originale, però abbiamo due informazioni, la direzione verso il quale è orientata la geometria e l'altezza, in base a queste due informazioni posso spostare il punto di campionamento e andare a pescare il punto A, che non è corretto, ma è già più corretto del punto di intersezione.

Questo è il parallax mapping base.

Il parallax base si comporta bene se tra il punto di intersezione con la geometria e il punto vero non ci sono variazioni di pendenza.

Lo step parallax esegue questa procedura più volte cercando di trovare il punto giusto, infatti come puoi vedere il parallax mapping fallisce quando ci sono profondi e improvvisi avvallamenti (o variazioni ad alta frequenza della bump map se preferisci).

Il relief mapping lo conosco poco, ma cerca di andare a pescare il punto giusto (il punto B) facendo una ricerca più precisa, purtroppo visto che fa molti passi è estremamente dispendioso.

Ora tu dirai ma perché non me lo mettono su mental ray?

Intanto con una rapida ricerca ti dico che ci hanno già pensato.. http://thepixelmachine.com/content/tools/f...e/fdisplace.htm

Poi come hai visto sono algoritmi tutt'altro che perfetti, buoni per il real time perché danno dei risultati buoni e in un gioco dove stai tutto il tempo a scansare pallottole te ne freghi se ci sono delle piccole imperfezioni, ma ogni volta che devi fare raytracing ci sono i problemi che ti ho detto sopra, quindi per renderizzare una still il displacement ha senza dubbio una resa superiore, soprattutto se inizi a usare materiali che iniziano a lanciare molti raggi (ambient occlusion, riflessioni glossy) o area light.

Share this post


Link to post
Share on other sites

Quasi chiaro :P comunque grazie mille. mi sono un po' perso tra il punto A e il punto B, approssimativamente vicino al punto G, comunque in linea di massima ho capito :lol:

continuo a spulciare il web per maggiorni info senza scassare nessuno :hello:

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