Beschreibungen und Beispiele zum Raytracer POV-Ray von Friedrich A. Lohmüller
Gestaltung des Inneren von transparenten Körpern in POV-Ray
English English English
Italiano Italiano
Français français

Home
- POV-Ray Tutorial

  Inhaltsübersicht
  material, interior, media

  - Syntax material
      texture + interior
  - Window Glass
      + max_trace_level
  - Nebel - fog
  Media
  - Syntax Media
  - Media + Density Maps
  Atmospheric Media
    mit/ohne density map
  - Lichtkegel im Nebel
  Object Media
  Emitting Media
  - Lichtschwert
  - Kerzenflammen
  Scattering Media
  - Licht durch Fenster
  - Dampf, Rauch, Wolken
  Absorbing Media
  - Staubteufel
  Spezialprobleme mit Media
  - Skalieren von Media
  - Überlappende Media
                                             

Kerzenflammen
mit Emitting Media

Verwendung von "media emission"
zur Simulation von brennenden Kerzen.

Kerzenflammen mit media emission.

Mit media emission kann man die Flamme einer brennenden Kerze simulieren. Das verwendete Container-Objekt (hier: eine Eiform) sollte klar durchsichtig sein und das Schlüsselwort "hollow" besitzen (dies erlaubt media- und fog-Effekte innerhalb!) Das Container-Objekt wird zusammen mit dem media zu einer Flammen-Form skaliert.
Anmerkung: Die Farbe des "emittierten" Lichts wird nach dem Schlüsselwort "emission" spezifiziert. Aber "media" "emittiert" nicht wirklich Licht - dies bedeutet nur, dass es ohne externe Beleuchtung immer sichtbar ist! Um zu erreichen, dass "media" wirklich strahlt, Schatten wirft etc., muß man zusätzlich eine Lichtquelle hineinsetzen!


// -----------------------------------------
#local Flame__Shape =
merge{    // egg
intersection{
   sphere{<0,0,0>,1}
   box{<-1,-D,-1>,< 1,1  ,1>}
   scale <1,2.5,1>}
intersection{
   sphere{<0,0,0>,1}
   box{<-1,-1 ,-1>,< 1,0+0.01,1>}
   }
} // end of merge
// -----------------------------------------
#local C__Flame =
object{
  Flame__Shape
  hollow
  pigment{ color rgbf<1,1,1,1>}// clear!
  finish { ambient 0 diffuse 0 }
  interior {
    media {
      emission color rgb<1.0,0.75,0.1>*1.75
      intervals 9
      samples 1, 20
      confidence 0.9999
      variance 1/100
      density{ spherical
               ramp_wave
               turbulence 0.15
               color_map {
               [0.0 color rgb <0.0,0.0,0.0>]
               [0.6 color rgb <0.8,0.3,0.0>]
               [0.9 color rgb <1.0,0.8,0.3>]
               [1.0 color rgb <1.0,1.0,0.1>]
                         } // end color_map
            scale <1,2.5,1>
          } // end of density
    }//end of media
}//--------------------------------------------


"media" mit einfacher sphärischer "density_map" und sichtbar gemachtem Containter-Objekt - nicht skaliert!
"media" mit einfacher sphärischer "density_map", skaliert zur Flammenform.
Das innere glühende "media":
Eine "density map" mit "crackle"-Struktur abgeschnitten durch eine zweite sphärische "density map" mit weich auslaufenden Rändern.
media{
    emission color rgb<1.0, 0.75, 0.1>*2.75
    intervals 3
    samples 32
    method 3
    aa_threshold 0.1 aa_level 5
    density{ crackle  turbulence 0.3
             scale 0.75 translate<0,24,0>
             color_map {
                    [0 rgb 0]
                    [0.00 rgb 0]
                    [0.07 rgb 1]
                    [0.10 rgb 1]
                    [0.12 rgb 0]
                    [1.00 rgb 0]
              } // end color_map
           } // end density
     density{ spherical
              color_map {
                    [0 rgb 0]
                    [0.7 rgb 1]
                    [1 rgb 1]
                } // end color_map
            } // end density
           scale<1,2.5,1>*0.5
       translate<0,0.01,0>
     }// end media
//------------------------------------------
Ein zusätzlicher innerer glühender Bereich mit zweitem "media" mit "crackle" abgeschnitten mit weichem Übergang durch eine weitere sphärische "density map".
Möchte man einen Kerzenschein sehen, dann sollte man eine Lichtquelle zum Körper der Flamme hinzufügen (Beachten Sie: "emission media" scheint nicht wirklich!),
um sanftere Schattenkanten zu erhalten verwendet man hier ein "area_light" dessen Intensität von einer Zahl größer 0 gesteuert wird.
#if(Shining__On > 0) //---------------------
light_source{
   <0,0,0>
   color rgb <0.8, 0.5, 0.2>*Shining__On
   area_light       // kind of light source
   <0,0,0><0,0.25,0>//lights spread area
   1, 10      // total number of lights x,y
   adaptive 3 // 0,1,2,3...
   jitter // adds random softening of light
   translate<0,CandleHeight+0.45,0>
} //---------------- end of area_light -----
#end // of "#if(Shining__On>0)"
Um die Kerzen wirklich scheinen zu lassen wird ein softes "area_light" hinzugefügt!
Szenenbeschreibung für POV-Ray:
"candle_flame_4.txt" oder "candle_flame_4.pov"

Noch realistisch wird es, wenn man die Lichtquelle breiter macht sowie noch eine zweite "area_light" Lichtquelle gedreht um 90 Grad hinzufügt.
Ein weiterer Vorschlag von Thierry Banel:
Mit "fade_distance" und "fade_power" läßt sich die geringe Reichweite des Kerzenscheins vorzuglich simulieren.  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Dieses Objekt ist als
Fertig-Objekt für POV-Ray verfügbar:
Brennende Kerze
Noch realistischer: "area_light" + "Fade_Distance" + "Fade_Power"!
Include Datei und Beispiel für POV-Ray siehe "Candle_2" bei
Fertig-Objekte


top
© Friedrich A. Lohmüller, 2012
www.f-lohmueller.de