Environment Mapping Tamiazzo Claudio EGD07. Cosè Tecnica utilizzata in grafica digitale allo scopo...

22
Environment Mapping Tamiazzo Claudio EGD07

Transcript of Environment Mapping Tamiazzo Claudio EGD07. Cosè Tecnica utilizzata in grafica digitale allo scopo...

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