Tips und Tricks zu POV-Ray

"Wie hat der das bloß gemacht?" - Wer sich das bei den Bildern der Galerie immer wieder fragt, soll hier eine Antwort erhalten. Wir möchten unser POV-Ray-Wissen gerne weitergeben. Hier die Tips von Florian Fischer:
Zuallererst 'mal eine WARNUNG: Da ich vorwiegend mit Moray arbeite, schreibe ich meine POV-Dateien nicht selbst. Obwohl ich versucht habe, die Tips so leserlich wie möglich zu gestalten, übernehme ich daher keine Haftung für etwaige umständliche oder schwer verständliche Passagen. :-)

Wiesenlandschaft (Florian Fischer)



  1. Laubbäume
    Sie bestehen aus drei ineinander verschachtelten Kugeln, die mit einer teilweise transparenten Textur versehen wurden.
    #declare LaubbaumStTex =
    texture{
       pigment{
          granite
          color_map
          {
             [ 0.0  rgb <0.36, 0.26, 0.05> ]
             [ 0.23 rgb <0.53, 0.38, 0.08> ]
             [ 0.80 rgb <0.67, 0.48, 0.10> ]
             [ 1.0  rgb <0.78, 0.56, 0.16> ]
          }
       }   
       normal
       {
          granite , 0.5
          turbulence 0.35
       }   
       scale  3.0
    }
    
    #declare LaubbaumBlattTex =
    texture{   
       pigment{
          bozo
          color_map
          {
             [ 0.0  rgb  <0.24, 0.49, 0.07> ]
             [ 0.27 rgb  <0.22, 0.64, 0.09> ]
             [ 0.31 rgbt <0.45, 0.73, 0.29, 1.0> ]
             [ 0.70 rgbt <0.54, 0.75, 0.41, 1.0> ]
             [ 0.74 rgb  <0.45, 0.73, 0.29> ]
             [ 1.0  rgb  <0.22, 0.64, 0.09> ]
          }
       }   
       normal{
          bumps , 0.5
          turbulence 0.25
       }   
       scale  0.1
    }
    
    
    union { // Laubbaum
      sphere { // Laubbaum-Krone aussen
        <0,0,0>,1
        texture {
          LaubbaumBlattTex
        }
        scale 4.0
        translate  6.3*z
      }
      sphere { // Laubbaum-Krone Mitte
        <0,0,0>,1
        texture {
          LaubbaumBlattTex
        }
        scale 3.5
        translate  <-0.05, -0.05, 6.3>
      }
      sphere { // Laubbaum-Krone innen
        <0,0,0>,1
        texture {
          LaubbaumBlattTex
        }
        scale 3.0
        translate  <-0.05, -0.05, 6.3>
      }
      cone { // LaubbStamm
        <0,0,0>, 0.3, <0,0,1>, 1.0
        texture {
          LaubbaumStTex
        }
        scale <1.0, 1.0, 8.0>
        rotate <180.0, 0.0, 180.0>
        translate  <0.05, -0.1, 8.0>
      }
    }
    
  2. Hintergrund
    Der Hintergrund ist einfach eine grosse Kugel mit mehreren Wolken darauf. Er sieht erstaunlicherweise (ja, das wundert mich selbst) aus fast jeder Perspektive gut aus.
    sphere { // Himmelskugel
       <0,0,0>,1
    
       texture  // BlauerHimmel
       {   
          pigment
          {
             gradient z
             color_map
             {
                [ 0.0 rgb <0.60, 0.84, 1.0> ]
                [ 1.0 rgb <0.0,  0.38, 0.74> ]
             }
          }   
          finish
          {
             ambient 0.7
             diffuse 0.4
          }
       }
       texture  // Schleierwolken
       {   
          pigment
          {
             bozo
             color_map
             {
                [ 0.0  rgbf 1 ]
                [ 0.70 rgbf 1 ]
                [ 0.70 rgbf <0.86, 0.88, 0.92, 1.0> ]
                [ 0.78 rgbf <0.82, 0.83, 0.89, 0.0> ]
                [ 1.0  rgbf <0.63, 0.65, 0.77, 0.0> ]
             }
             turbulence 0.25
          }   
          finish
          {
             ambient 0.7
             diffuse 0.40
          }   
          scale  <0.3, 0.3, 0.07>
       }
       texture  // Wolken
       {   
          pigment
          {
             wrinkles
             color_map
             {
                [ 0.0  rgbf <0.5 , 0.5 , 0.5 , 0.0> ]
                [ 0.20 rgbf <1.0 , 1.0 , 1.0 , 0.1> ]
                [ 0.20 rgbf <1.0 , 1.0 , 1.0 , 1.0> ]
                [ 0.50 rgbf <1.0 , 1.0 , 1.0 , 1.0> ]
                [ 0.50 rgbf <0.94, 0.94, 0.94, 0.1> ]
                [ 0.75 rgbf <0.67, 0.67, 0.67, 0.0> ]
                [ 1.0  rgbf <0.5 , 0.5 , 0.5 , 0.0> ]
             }
             turbulence 0.3
          }   
          finish
          {
             ambient 0.7
             diffuse 0.40
          }   
          scale  <0.15, 0.15, 0.08>
       }
       hollow
       scale 100
    }
    
  3. Boden
    Der Boden besteht aus 5*5 Bezier-Patches und ist dann lediglich mit einer texture_map bemalt. Das hat den Vorteil, daß ich für ihn keine 10000 Objekte brauche (wenn ich jeden Fels extra machen würde) und alles eine einheitliche Oberfläche ohne Kanten gibt, aber so kann ich andererseits nicht genau bestimmen, wo Fels- bzw. Waldboden landen. Der See wurde übrigens einfach als Wasserbox in eine Vertiefung des Bezier-Patches gelegt.
    #declare LandschaftsTex = 
       texture  // GrasTex
       {   
          pigment{
             granite
             color_map
             {
                [ 0.0 rgb <0.06, 0.5 , 0.0> ]
                [ 1.0 rgb <0.69, 0.83, 0.53> ]
             }
             scale  0.1
          }   
          normal { bumps , 0.5 } scale  0.4
       }
       texture  // WegTex
       {   
          pigment
          {
             marble
             color_map
             {
                [ 0.21 rgbf <1.0 , 1.0 , 1.0 , 1.0> ]
                [ 0.21 rgbf <0.73, 0.63, 0.37, 1.0> ]
                [ 0.23 rgbf <0.72, 0.56, 0.38, 0.0> ]
                [ 0.27 rgbf <0.76, 0.62, 0.25, 0.0> ]
                [ 0.28 rgbf <0.69, 0.51, 0.30, 1.0> ]
                [ 0.28 rgbf <1.0 , 1.0 , 1.0 , 1.0> ]
             }
             turbulence 0.35
          }   
          normal { granite , 0.5 scale  0.02 }   
          scale  4.0
          rotate -80.0 * z
       }
    
    #declare FelsenTex=texture{
       pigment
       {
          granite
          color_map
          {
            [ 0.0  rgb <0.36, 0.36, 0.36> ]
            [ 0.23 rgb <0.65, 0.65, 0.65> ]
            [ 0.80 rgb <0.75, 0.75, 0.75> ]
            [ 1.0  rgb <0.90, 0.90, 0.90> ]
          }
       }            
       normal { granite , 0.5  turbulence 0.2 } scale  0.4
    }
    
    #declare WaldbodenTex=texture{
       pigment
       {
          granite
          color_map
          {
            [ 0.0 rgb <0.41, 0.21, 0.04> ]
            [ 1.0 rgb <0.48, 0.39, 0.07> ]
          }
       }            
       normal { granite , 0.5  turbulence 0.2 } scale  0.01
    }
    
    union { // Landschaft
       [...] // 25 Bezier-Patches erstellen... macht mir ja Moray
       texture{
          bozo
          texture_map
          {
             [0.0  FelsenTex]  
             [0.13 FelsenTex]  
             [0.15 LandschTex]  
             [0.62 LandschTex]  
             [0.75 WaldbodenTex]  
             [1.0 WaldbodenTex]  
             
          }
          scale  2.5
          translate -1.0 * x
       }
    }
    
  4. Nebel
    Hier handelt es sich um ein Halo, das in ein quaderförmiges Container - Objekt gequetscht wurde.
    box { // Nebelmacher
       <-1, -1, -1>, <1, 1, 1>
       texture {
          pigment
          {
             color rgbt <1.0, 1.0, 1.0, 1.0>
          }   
          halo
          {
             cubic
             box_mapping
             samples 20.0
             aa_level 5
             jitter 0.3
             color_map
             {
                [ 0.0 rgbt <1.0 , 1.0 , 1.0 , 1.0> ]
                [ 1.0 rgbt <0.51, 0.49, 0.51, 0.0> ]
             }
             turbulence 0.5
          }
       }
       hollow
       scale <50.0, 50.0, 8.0>
       translate  <17.75, -41.6, 8.0>
    }
    

Brunnen (Florian Fischer)



  1. Bodenplatten
    Die Bodenplatten sind in Wahrheit eine Ebene, deren Textur mittels des sehr praktischen "Brick"-Patterns von POV-Ray erstellt wurde.
    plane { // Untergrund
       z,0
       texture {
       pigment
       {
          brick
             pigment
             {
                granite
                color_map
                {
                   [ 0.0 rgb <0.36, 0.36, 0.36> ]
                   [ 1.0 rgb <0.80, 0.80, 0.80> ]
                }
                scale  0.2
             }
             pigment
             {
                granite
                color_map
                {
                   [ 0.0 rgb <0.43, 0.23, 0.23> ]
                   [ 1.0 rgb <0.65, 0.55, 0.44> ]
                }
                turbulence 0.2
                scale  0.5
             }
          brick_size <2.0, 1.0, 1.0>
          mortar 0.08
       }   
       normal
       {
          brick
             normal
             {
                bumps , 0.1
             }
             normal
             {
                granite , 0.2
                scale  0.2
             }
          brick_size <2.0, 1.0, 1.0>
          mortar 0.08
       }
       scale 3.0
    }
    
  2. Wassertropfen
    Er besteht aus einem kubischen Drehkörper. Aber Achtung! Kubische Drehkörper dauern sehr lange zum Rendern, wer den Tropfen also aus der Nähe betrachten will, sollte sich viel Zeit nehmen...
    lathe {         // Tropfen - braucht mindestens POV-Ray 3.02 zum Rendern
      cubic_spline  // wegen Fehler in 3.00: Kontrollpunkte koennen nicht auf
                    // Minuskoordinaten liegen
      8  // control points
      <-0.4, -0.8>,
      <0.0, -1.4>,
      <1.0, -1.0>,
      <1.1, -0.1>,
      <0.9, 0.7>,
      <0.4, 1.4>,
      <0.0, 2.2>,
      <0.0, 2.4>
      rotate <90,0,90>
      texture {
        pigment
        {
          color rgbf <0.89, 0.89, 1.0, 0.85>
        }   
        normal
        {
          ripples , 1.0
          scale  0.05
          translate 0.6 * x
        }   
        finish
        {
          ambient 0.1
          reflection 0.3
          refraction on  ior 1.33
        }
      }
      scale 0.1
      translate  <1.65, 0.0, 4.5>
    }
    

Fortsetzung folgt (hoffentlich) bald!


Zurück zur VR-AG-Hauptseite Zurück zur Galerie Zu den nächsten Tips

© Florian Fischer, Zuletzt geändert am 30.4.1998. Besuchen Sie meine Homepage oder schreiben Sie mir!