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

Post on 01-May-2015

217 views 0 download

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

Environment Mapping

Tamiazzo Claudio

EGD07

Cos’è

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

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

Tecniche più Diffuse

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

• Cube Environment Mapping

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

Foto ottenuta con lente “fisheye”

Effetto ottenuto con lo spherical E.M.

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

Fronte Retro

Riflessione corretta Riflessione incoerente

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

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

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

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);

.

.

.

.

.

.

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);

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);

GL_REFLECTION_MAP vs GL_NORMAL_MAP

GL_REFLECTION_MAP GL_NORMAL_MAP

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

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);

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

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