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 Lenvironment mapping permette di realizzare superfici riflettenti utilizzando delle textures rappresentanti lambiente da riflettere La riflessione dipende da una environment map nella quale è proiettata limmagine da riflettere In base al punto di vista, si effettuano i calcoli per determinare limmagine 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 sullutilizzo come environment map di una sfera texturizzata Solitamente la texture consiste in unimmagine 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 dellutente 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 alloggetto 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 sulloggetto 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 texture glTexGeni(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
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 realizzata Con luso dell environment mapping Terminator 2: Judgement Day-1991 Il cyborg T1000 nelle sue metamorfosi è una delle più celebri applicazioni dellenvironment mapping
Bibliografia Libri: OpenGl Programming Guide di Shreiner, Woo, Neider, Davis Rete: