Cubic Environment Mapping
Eine Skybox mit Cube Mapping:
Dies ist eine weitere Methode der Environment Mapping-Techniken,
sie wird auch als Cubic Environment Mapping oder Panorama Cube Mapping bezeichnet.
Dies ist eine sehr übliche Methode, die in vielen 3D-Video-Games verwendet wird.
Eine Skybox ist ein großer Würfel mit einem
360°-Panorama-Bild eines Himmels mit Boden ("skymap") projiziert ("mapped")
auf die Innenseite dieses Würfels, mit einer Ansicht von 90°x90° auf jeder der Flächen des Würfels.
Diese Methode des Environment Mappings vermeidet das Problem der extremen Verzerrungen
an den Polen einer Kugel bei dem Spherical Mapping.
Ein Freeware-Programm zur Darstellung und zum Ergründen von Skybox-Umgebungen
ist der SkyboxViewer von Gerd Platl.
Man kann dies in POV-Ray mittels uv_mapping einer image_map auf eine box realisieren.
Dabei verwenden wir uv_mapping zur Projektion einer Textur in der xy-Ebene von <0,0> bis <1,1>
auf die Oberfläche eines Würfels. Wie das Bild um den Würfel gewickelt wird, das zeigen die nebenstehenden Abbildungen.
Um ein 360°-Panoramafoto oder -Bild als eine Cubemap in einer Skybox verwenden zu können
müssen wir (mit POV-Ray 3.6/3.7) den Gammawert des Bildes/Fotos mit dem folgendem
Makro korrigieren:
// 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 -------------------- |
|
Eine 360°Panorama cube map
für cubic mapping auf einer POV-Ray box.
Die Sequence in der eine eine Textur
in der xy-Ebene von <0,0> bis <1,1>
in POV-Ray um eine box gewickelt wird.
Cube map um einen Würfel gewickelt.
// uv_mapping für 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>
}//-------------------- |
uv_mapping Syntay für eine box in POV-Ray
|