Date post: | 01-May-2015 |
Category: |
Documents |
Upload: | settimio-salvatore |
View: | 217 times |
Download: | 0 times |
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