Beschreibungen und Beispiele zum Raytracer POV-Ray
von Friedrich A. Lohmüller
English English English
Italiano Italiano
Français français

Home
- POV-Ray Tutorial

- Realistische Himmel
    - Realistische Himmel
    - Teilweise bewölkt
    - Wolkenschichten
    - Gestapelte Ebenen
    - Schatten werfend
    - Wolken aus media
    - Sonnenuntergang
    - Sternenhimmel
    - Skydomes + Skymaps
   > Skyboxes + Cubemaps
    - HDRI Umgebungen

    - Download
 
                                       

Realistische Himmel mit POV-Ray

Inhalt | 1 | 2 | 3 | 4 | 5 | 6 | 7.0 | 7.1 | 8 | 9 | 10

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 --------------------
Sky_map
Eine 360°Panorama cube map
für cubic mapping auf einer POV-Ray box.
box uv_mapping sequence
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.
Sample scene skymap
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
Cubemap_2_inside_1.jpg
Skymap projiziert auf eine box in POV-Ray
Cubemap_2_inside.gif 499kB
Animiertes 360° panorama mit einer skybox.
Beschreibung dieser Szene für POV-Ray (nicht animiert)
Cubemap_2_inside_1.txt oder Cubemap_2_inside_1.pov

Download der entsprechenden cubic map in 2048x1536 pixel (768 kB)
hier: Cubemap_2_2048x1536.jpg

Inhalt | 1 | 2 | 3 | 4 | 5 | 6 | 7.0 | 7.1 | 8 | 9 | 10

top

© Friedrich A. Lohmüller, 2013
homepage:www.f-lohmueller.de
 
Visitors:
(since May-1999)
Thanks for your visit!