Cubic Environment Mapping
Uno Skybox con cube mapping:
Questo è un altro metodo de la tecnica dell'environment mapping,
anche chiamato cubic environment mapping o panorama cube mapping.
Questo è un metodo in uso da 3D games.
Uno skybox è un cubo grande con una immagine panoramicha a 360°
di un cielo e fondo ("skymap") proiettata ("mapped")
sulla faccia interna del cubo, con una vista di 90°x90°
su ogni faccia del cubo.
Con questo metodo dell'environment mapping si può evitare il problema delle distortioni estreme
ai poli di una sfera con spherical mapping.
Un programma freeware per presentare e esplorare uno skybox environment
è lo SkyboxViewer di Gerd Platl.
Uno skybox si può realizzare in POV-Ray con uv_mapping di un image_map su un box.
Possiamo usare uv_mapping per la proiezione di una testura del piano XY di <0,0> a <1,1>
su la superficie di un cubo. L'immagine si è avvoltata intorno a un cubo come si vede
nell'immagine a margine.
Per usare un foto panoramica a 360° o una immagine come skymap con uno skybox
(con POV-Ray 3.6/3.7) dobbiamo correggere il fatore gamma dell'immagine o foto
con la macro seguente:
// Macro for the adjustment of images
// for image_map with assumed_gamma = 1.0 ;
#macro Correct_Pigment_Gamma(Orig_Pig, New_G)
#local Correct_Pig_fn =
function{ pigment {Orig_Pig} }
pigment{ average pigment_map{
[function{ pow(Correct_Pig_fn(x,y,z).x, New_G)}
color_map{[0 rgb 0][1 rgb<3,0,0>]}]
[function{ pow(Correct_Pig_fn(x,y,z).y, New_G)}
color_map{[0 rgb 0][1 rgb<0,3,0>]}]
[function{ pow(Correct_Pig_fn(x,y,z).z, New_G)}
color_map{[0 rgb 0][1 rgb<0,0,3>]}]
}}
#end //
// "image_map" gamma corrected:
// Correct_Pigment_Gamma(
// pigment{ image_map{ jpeg "colors.jpg"}}
// , Correct_Gamma)
//------------------------------------------------
box{ <-1, -1, -1>,< 1, 1, 1>
texture{ uv_mapping
Correct_Pigment_Gamma( // gamma correction
pigment{
image_map{ jpeg "Cubemap_2_2048x1536.jpg"
map_type 0 // planar
interpolate 2 // bilinear
once //
} // end of image_map
} // end of pigment
, 2.2) //, New_Gamma
finish { ambient 1 diffuse 0 }
} // end of texture
scale 10000
} // end of skybox -------------------- |
|
Un 360° panorama cube map
per cubic mapping su un POV-Ray box.
La sequenza di come una testura
del piano XY di <0,0> a <1,1>
è avvolta intorno a un cubo in POV-Ray.
Cube map avvolgimento di un cubo.
// uv_mapping for box - POV-Ray syntax
box{ <-1,-1,1>,<1,1,1>
texture{ uv_mapping pigment{ ... }
uv_mapping normal { ... }
uv_mapping finish { ... }
} // end texture
scale 1
rotate<0,0,0>
}//-------------------- |
sintassi di uv_mapping per un box in POV-Ray
|