22
Environment Mapping Tamiazzo Claudio EGD07

Environment Mapping Tamiazzo Claudio EGD07. Cosè Tecnica utilizzata in grafica digitale allo scopo di realizzare oggetti riflettenti senza ricorrere agli

Embed Size (px)

Citation preview

Page 1: Environment Mapping Tamiazzo Claudio EGD07. Cosè Tecnica utilizzata in grafica digitale allo scopo di realizzare oggetti riflettenti senza ricorrere agli

Environment Mapping

Tamiazzo Claudio

EGD07

Page 2: Environment Mapping Tamiazzo Claudio EGD07. Cosè Tecnica utilizzata in grafica digitale allo scopo di realizzare oggetti riflettenti senza ricorrere agli

Cos’è

• Tecnica utilizzata in grafica digitale allo scopo di realizzare oggetti riflettenti senza ricorrere agli onerosi calcoli computazionali del RayTracing.

Page 3: Environment Mapping Tamiazzo Claudio EGD07. Cosè Tecnica utilizzata in grafica digitale allo scopo di realizzare oggetti riflettenti senza ricorrere agli
Page 4: Environment Mapping Tamiazzo Claudio EGD07. Cosè Tecnica utilizzata in grafica digitale allo scopo di realizzare oggetti riflettenti senza ricorrere agli

Come Funziona

• L’environment mapping permette di realizzare superfici riflettenti utilizzando delle textures rappresentanti l’ambiente da riflettere

• La riflessione dipende da una environment map nella quale è proiettata l’immagine da riflettere

• In base al punto di vista, si effettuano i calcoli per determinare l’immagine riflessa

Page 5: Environment Mapping Tamiazzo Claudio EGD07. Cosè Tecnica utilizzata in grafica digitale allo scopo di realizzare oggetti riflettenti senza ricorrere agli
Page 6: Environment Mapping Tamiazzo Claudio EGD07. Cosè Tecnica utilizzata in grafica digitale allo scopo di realizzare oggetti riflettenti senza ricorrere agli

Tecniche più Diffuse

• Standard Environment Mapping, o più comunemente detta Spherical Environment Mapping.

• Cube Environment Mapping

Page 7: Environment Mapping Tamiazzo Claudio EGD07. Cosè Tecnica utilizzata in grafica digitale allo scopo di realizzare oggetti riflettenti senza ricorrere agli

Spherical Environment Mapping

• Sviluppata da Blinn e Newell

• Si basa sull’utilizzo come environment map di una sfera “texturizzata”

• Solitamente la texture consiste in un’immagine ottenuta con una macchina fotografica con lenti a grandangolo

Page 8: Environment Mapping Tamiazzo Claudio EGD07. Cosè Tecnica utilizzata in grafica digitale allo scopo di realizzare oggetti riflettenti senza ricorrere agli

Foto ottenuta con lente “fisheye”

Effetto ottenuto con lo spherical E.M.

Page 9: Environment Mapping Tamiazzo Claudio EGD07. Cosè Tecnica utilizzata in grafica digitale allo scopo di realizzare oggetti riflettenti senza ricorrere agli

Spherical Environment Mapping

• Questa tecnica porta con se delle grosse limitazioni legate al punto di vista dell’utente nella scena 3D

• Una volta che il punto di vista cambia, sarebbe necessario disporre di una texture apposita per ogni angolazione

Page 10: Environment Mapping Tamiazzo Claudio EGD07. Cosè Tecnica utilizzata in grafica digitale allo scopo di realizzare oggetti riflettenti senza ricorrere agli

Fronte Retro

Riflessione corretta Riflessione incoerente

Page 11: Environment Mapping Tamiazzo Claudio EGD07. Cosè Tecnica utilizzata in grafica digitale allo scopo di realizzare oggetti riflettenti senza ricorrere agli

Cube Environment Mapping

• Tecnica che utilizza il cube mapping per ottenere oggetti riflettenti

• Una cube map consiste in 6 textures quadrate che vanno a formare una environment map cubica

Page 12: Environment Mapping Tamiazzo Claudio EGD07. Cosè Tecnica utilizzata in grafica digitale allo scopo di realizzare oggetti riflettenti senza ricorrere agli

Esempio: environment map di un paesaggio da riflettere ottenibile con sei foto fatte in sei direzioni diverse

Page 13: Environment Mapping Tamiazzo Claudio EGD07. Cosè Tecnica utilizzata in grafica digitale allo scopo di realizzare oggetti riflettenti senza ricorrere agli

Cube Environment Mapping

• Per realizzare una superficie riflettente si calcola il raggio dal punto di vista all’oggetto ed, in base alla normale, il raggio riflesso che va a intercettare un punto su una delle sei facce del cubo.

• Il colore intercettato sulla texture sarà il colore da riportare sull’oggetto nel punto di riflessione

Page 14: Environment Mapping Tamiazzo Claudio EGD07. Cosè Tecnica utilizzata in grafica digitale allo scopo di realizzare oggetti riflettenti senza ricorrere agli
Page 15: Environment Mapping Tamiazzo Claudio EGD07. Cosè Tecnica utilizzata in grafica digitale allo scopo di realizzare oggetti riflettenti senza ricorrere agli
Page 16: Environment Mapping Tamiazzo Claudio EGD07. Cosè Tecnica utilizzata in grafica digitale allo scopo di realizzare oggetti riflettenti senza ricorrere agli

Cube Mapping In OpenGL

• Creazione Cube Map

glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGBA,

imageSize, 0,GL_RGBA, GL_UNSIGNED_BYTE,image1);

glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGBA, imageSize, 0,GL_RGBA, GL_UNSIGNED_BYTE,image2);

.

.

.

.

.

.

Page 17: Environment Mapping Tamiazzo Claudio EGD07. Cosè Tecnica utilizzata in grafica digitale allo scopo di realizzare oggetti riflettenti senza ricorrere agli

Cube Mapping In OpenGL

• Settaggio wrapping e filtering

glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_NEAREST);

glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_REPEAT);

glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_REPEAT);

glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_R, GL_REPEAT);

Page 18: Environment Mapping Tamiazzo Claudio EGD07. Cosè Tecnica utilizzata in grafica digitale allo scopo di realizzare oggetti riflettenti senza ricorrere agli

Cube Mapping In OpenGL

• Generazione delle coordinate della cube map textureglTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP);

glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP);

glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP);

Page 19: Environment Mapping Tamiazzo Claudio EGD07. Cosè Tecnica utilizzata in grafica digitale allo scopo di realizzare oggetti riflettenti senza ricorrere agli

GL_REFLECTION_MAP vs GL_NORMAL_MAP

GL_REFLECTION_MAP GL_NORMAL_MAP

Immagini realizzate con programma cubemap.c da http://developer.nvidia.com/

Page 20: Environment Mapping Tamiazzo Claudio EGD07. Cosè Tecnica utilizzata in grafica digitale allo scopo di realizzare oggetti riflettenti senza ricorrere agli

Cube Mapping In OpenGL

• Abilitazione texturing

glEnable(GL_TEXTURE_CUBE_MAP_EXT);

glEnable(GL_TEXTURE_GEN_S);

glEnable(GL_TEXTURE_GEN_T);

glEnable(GL_TEXTURE_GEN_R);

Page 21: Environment Mapping Tamiazzo Claudio EGD07. Cosè Tecnica utilizzata in grafica digitale allo scopo di realizzare oggetti riflettenti senza ricorrere agli

Applicazioni Cinematografiche

Flight of the navigator, 1986:

Superficie della navicella realizzataCon l’uso dell’ environment mapping

Terminator 2: Judgement Day-1991

Il cyborg T1000 nelle sue metamorfosi è una delle piùcelebri applicazioni dell’environment mapping

Page 22: Environment Mapping Tamiazzo Claudio EGD07. Cosè Tecnica utilizzata in grafica digitale allo scopo di realizzare oggetti riflettenti senza ricorrere agli

Bibliografia

• Libri:

“OpenGl Programming Guide” di Shreiner, Woo, Neider, Davis

• Rete:http://www.debevec.org/ReflectionMapping/

http://www.developer.com

http://en.wikipedia.org/wiki/Reflection_mapping

http://developer.nvidia.com