Cubic Environment Mapping -
La projection cubique de l'environnement
Skyboxes et cubemaps avec des images de panorama à 360°.
C'est une autre méthode d'environment mapping
les techniques de la projection de l'environnement,
aussi appelée "cubic environment mapping" ou "panorama cube mapping".
C'est une méthode très habituele dans le jeus 3D video.
Un skybox est un cube grand avec un image de 360°
du ciel e du sol ("skymap") projetée ("mapped") sur
la face interne de ce cube avec des vues de 90°x90° sur chaque face du cube.
Cette méthode de "environment mapping" peut eviter le problème des distorsions extrêmes
aux pôles d'une sphère avec "spherical mapping".
Un programme gratuit pour afficher et explorer un environnement en Skybox
est le SkyboxViewer par Gerd Platl.
Nous pouvons réaliser un skybox en POV-Ray par uv_mapping d'un image_map sur un box.
Nous utilisons le uv_mapping pour projeter une texture dans le plan XY de <0,0> à <1,1>
sur le surface du cube. L'image s'enroule around autour du cube de la manière comme dans les images ci-contre.
Pour utiliser un photo de panorama à 360° pour une skymap dans un skybox
(avec POV-Ray 3.6/3.7) nous avons besoin de corriger le gamma de l'image ou photo
avec la macro suivante :
// Macro pour corriger les images
// pour image_map avec 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" avec gamma corrigé:
// 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
pour cubic mapping sur un cube de POV-Ray.
La séquence comme une texture
dans le plain XY de <0,0> à <1,1>
s'enveloppée autour d'un cube in POV-Ray.
Cube map enveloppée autour d'un cube.
// uv_mapping pour box - POV-Ray syntaxe
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>
}//-------------------- |
uv_mapping syntaxe pour un cube en POV-Ray
|