• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Bump mapping Techniques
 

Bump mapping Techniques

on

  • 537 views

Bump Mapping techniques explained

Bump Mapping techniques explained

Statistics

Views

Total Views
537
Views on SlideShare
289
Embed Views
248

Actions

Likes
1
Downloads
1
Comments
0

3 Embeds 248

http://www.inimart.com 246
http://www.linkedin.com 1
https://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Ricostruire un oggetto in 3D rimanendo fedele ai suoi dettagli non è sempre possibile. Mancanza di tempo Mancanza di artisti digitali Mancanza di materiale sorgente (poche foto)
  • Nel 1978 James Blinn propose un metodo innovativo per descrivere i dettagli di un oggetto: non è più necessario creare il modello 3D con il livello di dettaglio massimo: i dettagli minori saranno codificati in qualche modo in texture separate.
  • Definizione di normale geometrica da Wikipedia: A surface normal , or simply normal , to a flat surface is a vector that is perpendicular to that surface. A normal to a non-flat surface at a point P on the surface is a vector perpendicular to the tangent plane to that surface at P .
  • Vediamo come riuscire a codificare in una texture (2 dimensioni) che chiameremo Normal map le coordinate geometriche (3 dimensioni) delle normali del nostro modello. Le coordinate (x,y,z) delle normali di ogni punto del modello 3D verranno trasformate in un colore (R,G,B). Prendiamo in considerazione la normale geometrica cerchiata in fig. 1: tutti punti appartenenti alla superficie triangolare evidenziata in fig. 1 hanno la stessa normale geometrica. Le coordinate della normale nello spazio (x,y,z) con origine alla base della normale sono (1,1,0). Nello spazio RGB, x = 1 viene mappato in R = 255, z = 0 viene mappato in G = 128, e y = 1 viene mappato in B = 255. Il colore (255, 128, 255) è un rosa: la proiezione della superficie 3D evidenziata in rosso in fig 1 nello spazio 2D della Normal map delimiterà quindi un triangolo rosa.
  • Prendiamo in considerazione la normale geometrica cerchiata in fig. 1: tutti punti appartenenti alla superficie triangolare evidenziata in fig. 1 hanno la stessa normale geometrica. Le coordinate della normale nello spazio (x,y,z) con origine alla base della normale sono (0,1,1). Nello spazio RGB, x = 0 viene mappato in R = 128, z = 1 viene mappato in G = 255, e y = 1 viene mappato in B = 255. Il colore (128, 255, 255) è un celeste-verde: la proiezione della superficie 3D evidenziata in rosso in fig. 1 nello spazio 2D della Normal map delimiterà quindi un triangolo celeste-verde.
  • Prendiamo in considerazione la normale geometrica cerchiata in fig. 1: tutti punti appartenenti alla superficie triangolare evidenziata in fig. 1 hanno la stessa normale geometrica. Le coordinate della normale nello spazio (x,y,z) con origine alla base della normale sono (-1,1,0). Nello spazio RGB, x = -1 viene mappato in R = 0, z = 0 viene mappato in G = 128, e y = 1 viene mappato in B = 255. Il colore (128, 255, 255) è un blu: la proiezione della superficie 3D evidenziata in rosso in fig. 1 nello spazio 2D della Normal map delimiterà quindi un triangolo blu.
  • Prendiamo in considerazione la normale geometrica cerchiata in fig. 1: tutti punti appartenenti alla superficie triangolare evidenziata in fig. 1 hanno la stessa normale geometrica. Le coordinate della normale nello spazio (x,y,z) con origine alla base della normale sono (0,1,-1). Nello spazio RGB, x = 0 viene mappato in R = 128, z = -1 viene mappato in G = 0, e y = 1 viene mappato in B = 255. Il colore (128, 0, 255) è un viola: la proiezione della superficie 3D evidenziata in rosso in fig. 1 nello spazio 2D della Normal map delimiterà quindi un triangolo viola.
  • Infine, prendiamo in considerazione la normale geometrica cerchiata in fig. 1: tutti punti appartenenti alla superficie quadrata evidenziata in fig. 1 hanno la stessa normale geometrica. Le coordinate della normale nello spazio (x,y,z) con origine alla base della normale sono (0,1,0). Nello spazio RGB, x = 0 viene mappato in R = 128, z = 0 viene mappato in G = 128, e y = 1 viene mappato in B = 255. Il colore (128, 128, 255) è un celeste: la proiezione della superficie 3D evidenziata in rosso in fig. 1 nello spazio 2D della Normal map delimiterà quindi un quadrato celeste.
  • Descriviamo ora un modello di illuminazione semplificato, utilizzato nell ’ equazione di rendering per conoscere il colore finale di ciascun pixel. Per ogni pixel, l ’ equazione della luce ha bisogno dei seguenti input (come minimo): La direzione della luce La normale geometrica Il colore del materiale del modello 3D Con questi input l ’ equazione della luce sa quali sono le superfici del nostro modello che sono in ombra: l ’ angolo tra la direzione della luce e la direzione della normale dà una misura di quanto la superficie è rivolta verso la luce. Come si vede dal risultato finale infatti, la superficie della piramide più illuminata ha una normale geometrica quasi parallela alla direzione della luce, mentre quella più in ombra ha un angolo tra la direzione della luce e la sua normale maggiore di 90 gradi (è rivolta dalla parte opposta).
  • Invece di avere un colore uniforme, possiamo codificare in una Colour map i colori di ciascun pixel della superficie del nostro modello, incrementandone di molto il realismo.
  • Qui vediamo gli stessi passaggi della precedente slide, con queste aggiunte: Texture coords Ogni pixel avrà quindi questa informazione aggiuntiva associata: oltre a calcolare l ’ angolo tra la direzione della luce e la normale del pixel da illuminare, l ’ equazione della luce va a campionare anche la Colour map per sapere il colore del pixel corrente. Il campionamento viene eseguito utilizzando le coordinate Texture coords.
  • Come campionando la Colour map riusciamo a capire il colore di ciascun pixel, campionando la Normal map (abbiamo visto prima come viene costruita) riusciremo a capire la normale di ciascun pixel.
  • Usando la normal map: Ciascun pixel non ha più associato con esso la sua normale geometrica (infatti non ci sono più le frecce gialle che indicano le normali) Possiamo utilizzare un modello 3D più semplice (infatti mancano i vertici della piramide centrale, ora il modello 3D è una superficie piana con 4 vertici) Grazie alle infomazioni campionate dalla normal map, la superficie continua ad essere illuminata come se ci fosse una piramide al centro
  • ..come abbiamo visto nel risultato finale della slide precedente, la superficie piana continua ad essere illuminata come se ci fosse la piramide al centro, ma ATTENZIONE! Più il punto di vista dell ’ osservatore diventa parallelo rispetto alla superficie, più il “ trucco ” diventa visibile! In questa sequenza di 3 slide viene cambiata la posizione della sorgente di luce. Nella colonna di destra è presente la vista dall ’ alto e in prospettiva del modello 3D con la piramide al centro senza bump mapping, nella colonna di sinistra è presente la vista dall ’ alto e in prospettiva del modello 3D senza piramide (una superficie piatta) con l ’ uso del bump mapping. Come si può vedere dalla visuale in prospettiva nella colonna di sinistra, la luce si comporta come se ci fosse una piramide al centro della superficie, ma si riesce a notare la mancanza del rilievo provocato dalla piramide.
  • Le tecniche di bump mapping moderne oltre alla normal map codificano molte altre informazioni utilizzando texture aggiuntive
  • Riprendiamo l ’ equazione della luce cercando di rendere l ’ illusione del 3D partendo dalla foto di un modello più complesso. Nel caso base, alla nostra superficie applichiamo solo la color map. Il risultato finale è evidentemente PIATTO: è come se stessimo illuminando un quadro, non c ’ è nessuna percezione della profondità.
  • Aggiungendo le informazioni derivanti dalla normal map, l ’ equazione della luce sa come illuminare i pixel della superficie in base alla posizione della sorgente di luce (nell ’ esempio la luce proviene da in basso a destra).
  • Introduciamo la componente speculare alla nostra equazione della luce. La componente speculare della luce non dipende solo dalla posizione della luce, ma anche dalla posizione dell ’ osservatore: se l ’ osservatore si trova nella direzione del raggio riflesso dalla superficie, allora sull ’ oggetto comparirà il bagliore della componente speculare. La Specular map ci dice per ogni pixel quanto è forte la componente speculare della luce e il suo colore: in prossimità di insenature dell ’ oggetto la componente speculare sarà inferiore (zone più scure dell ’ immagine), i colori differenti invece servono a rafforzare la percezione di differenti materiali: quando la luce verrà riflessa dalle parti dorate delle foglie ci sarà un bagliore dorato, viceversa il bagliore sarà tendente al bianco.
  • Con la Specular map, oltra ll ’ input della light direction abbiamo aggiunto: Viewer position Come abbiamo detto infatti, oltre alla direzione della luce ora è importante anche sapere la posizione dell ’ osservatore. Nel risultato finale si può apprezzare come la percezione del 3D è migliorata di molto: la luce viene da destra, e il riflesso speculare sulla conciglia superiore è più forte nella parte sinistra, quella che riflette la luce in direzione dell ’ osservatore.
  • L ’ occlusion map ci dice dove è più forte l ’ occlusione ambientale. L ’ occlusione ambientale simula le zone di ombra in cui la luce penetra con più difficoltà a causa di rientranze. Grazie all ’ occlusion map riusciamo a simulare l ’ occlusione ambientale anche su una superficie piana.
  • L ’ height map codifica la profondità di ogni pixer. Le zone più chiare sono più vicine dall ’ osservatore, quelle più scure sono le più profonde.
  • Con l ’ aggiunta dell ’ occlusion map ora l ’ immagine risulta più scura in corrispondenza delle rientranze delle decorazioni. L ’ height map permette di simulare un minimo di rilievo dalla superficie: come si può notare nel risultato finale, in corrispondenza dei petali ora viene simulato uno spessore, e le conchiglie sono più profonde in prossimità dei petali centrali.
  • Le tecniche moderne di bump mapping permettono quindi di aggiungere molte informazioni a ciascun pixel della superficie per simularne i dettagli e aumentare l ’ illusione che i dettagli descritti siano fisicamente presenti nel modello 3D di partenza. Tutto questo però ha un costo: più informazioni vuol dire più texture associate a ciascun oggetto oltre alla “ comune ” color map -> più texture vuol dire più occupazione di memoria video e un ritardo nel rendering in tempo reale dovuto al campionamento delle texture.
  • Questo overhead è accettabile se si utilizzano schede grafiche moderne. La tecnica del bump mapping, anche se descritta nel 1978, è stata implementata nel campo del real time (videogiochi in primis) a partire dal 2001 in poi, anno in cui è stato introdotta la programmazione della GPU. Le moderne GPU offrono una quantità di memoria video e una velocità di esecuzione delle operazioni in continua evoluzione, e le tecniche moderne di bump mapping raggiungono un livelli di realismo nel rendering in tempo reale impensabili fino a pochi anni fa.
  • Senza bump mapping: Superficie piatta, come se stessimo illuminando un quadro Con bump mapping: La normal map permette alla luce di illuminare in maniera diversa i pixel della superficie a seconda della direzione della sorgente di luce. La specular map permette riflessi speculari a seconda della posizione relativa osservatore – sorgente di luce L ’ occlusion map simula ambient occlusion L ’ height map permette di simulare una profondità ancora più spinta

Bump mapping Techniques Bump mapping Techniques Presentation Transcript

  • 3D modeling problems
  • Luca Palmili – Sapienza University of Rome – www.inimart.com
  • Luca Palmili – Sapienza University of Rome – www.inimart.com
  • Luca Palmili – Sapienza University of Rome – www.inimart.com
  • Luca Palmili – Sapienza University of Rome – www.inimart.com
  • Luca Palmili – Sapienza University of Rome – www.inimart.com
  • Luca Palmili – Sapienza University of Rome – www.inimart.com
  • Luca Palmili – Sapienza University of Rome – www.inimart.com
  • Luca Palmili – Sapienza University of Rome – www.inimart.com
  • Luca Palmili – Sapienza University of Rome – www.inimart.com
  • Luca Palmili – Sapienza University of Rome – www.inimart.com
  • Luca Palmili – Sapienza University of Rome – www.inimart.com
  • Luca Palmili – Sapienza University of Rome – www.inimart.com
  • Luca Palmili – Sapienza University of Rome – www.inimart.com
  • Luca Palmili – Sapienza University of Rome – www.inimart.com
  • Luca Palmili – Sapienza University of Rome – www.inimart.com
  • Luca Palmili – Sapienza University of Rome – www.inimart.com
  • Luca Palmili – Sapienza University of Rome – www.inimart.com
  • Luca Palmili – Sapienza University of Rome – www.inimart.com
  • Luca Palmili – Sapienza University of Rome – www.inimart.com
  • Luca Palmili – Sapienza University of Rome – www.inimart.com
  • Luca Palmili – Sapienza University of Rome – www.inimart.com
  • Luca Palmili – Sapienza University of Rome – www.inimart.com
  • Luca Palmili – Sapienza University of Rome – www.inimart.com
  • Luca Palmili – Sapienza University of Rome – www.inimart.com
  • Luca Palmili – Sapienza University of Rome – www.inimart.com
  • Thank you. For more infos, contact and feedback: l.palmili@gmail.com inimartdesign@gmail.com www.linkedin.com/in/lucapalmili www.inimart.com www.inimart.com/inimart/portfolio/santagnese-in-agone-virtual-ambient Luca Palmili – Sapienza University of Rome – www.inimart.com