Beschreibungen und Beispiele zum Raytracer POV-Ray von Friedrich A. Lohmüller
    Bedingte Anweisungen - Anwendungen -
English English English

Home
- POV-Ray Tutorial

  - Bedingte
     Anweisungen

  Verzweigungen
   #if(...) ... #else ... #end
    - in Schleifen
    - in Macros
    - in Animationen
    - Ein-/Ausschalten von Teilen
   #switch(...) #case(..) ...
          #range(..) ... #end
    - Auswahl-Listen

  Existenz-Überprüfungen
   #ifdef(...) #ifndef(...)
    - Check in Include-Dateien
    >Defaults in Include-Dateien

  Schleifen
  Prechecked, Postchecked,
  Count-controlled, Early-Exit
   #while(...)... #end
   #for(...)... #end
    - Beispiele:
    - Schleifen in POV-Ray
    - Schleifen, Sinus, Kosinus
                                       

Defaults in Include-Dateien
Das Setzen von Voreinstellungswerten

Mit "#ifndef" lassen sich Include-Dateien Voreinstellungswerte festlegen, welche vor einem Aufruf bei Bedarf überschrieben werden können.
Beispiel:
Bei der Include-Datei einer Straße mit Mittelstreifen sollen sowohl die Straßenfarbe als auch die Farbe der Mittelstreifen eine Voreinstellung besitzen. Die beiden Texturen sollen aber auch frei wählbar sein.

Um vor einem erneuten Aufruf der Include-Datei wieder die Wahl der Default-Texturen zu ermöglichen kann man mit "#undef (Variablenname)" eventuell zuvor deklarierte Variable gleichen Namens wieder beseitigen.

Include-Datei einer Straße mit Mittelstreifen:
//include file "Street_0.inc"
// ------------------------------------
#macro Street_0(  Street_Width,  //
                  Street_Length, //
                  Stripes_Width, //
                  Stripes_Len
                ) //-------------------
//-------------------------------------
#ifndef( Stripes_Texture )
#declare Stripes_Texture =
texture{ pigment{ color rgb<1,1,1>*1.1}
         finish { diffuse 0.9 phong 0.5}
       } // end of texture
#end //--------------------------------
#ifndef( Street_Texture )
#declare Street_Texture =
texture{ pigment{ color rgb<1,1,1>*.3}
         normal { bumps 0.5 scale 0.005}
         finish { diffuse 0.9 phong 0.1}
       } // end of texture
#end //--------------------------------
#local D = 0.001;
//-------------------------------------
union{
box{ <-Street_Width/2, 0, 0>,
     < Street_Width/2, D, Street_Len>
     texture{Street_Texture}
   } // end of box --------------------
 #local Number_of_Stripes =
   int(Street_Length/(2*Stripes_Len));
 #local Nr = 0; //start
 #local EndNr=Number_of_Stripes;//end
 #while (Nr< EndNr)
 box{ <-Stripes_Width/2,   0, 0>,
      < Stripes_Width/2,2*D,Stripes_Len>
      texture{ Stripes_Texture}
      translate<0,0,Nr*2*Stripes_Len>
    } // end of box
 #local Nr = Nr + 1;  // next Nr
 #end // -------- end of loop
} // end of union
#end//-------------------- end of macro
//----------------- end of include file
Lesen der Include-Dateien mit Grundeinstellung:
#include "Street_0.inc"
//------------------------------------
object{ Street_0 (   6, // Width,
                   500, // Length,
                  0.10, // Stripes_W,
                  1.00, // Stripes_Len
                 ) //-----------------
        translate<0,0,-5.00>}
//------------------------------------
Background

Lesen der Include-Dateien mit veränderten Texturen:
#declare Street_Texture =
texture{ pigment{ color rgb<1,1,1>*0.4}
         normal { bumps 0.75 scale 0.015}
         finish { diffuse 0.9 phong 0.1}
       } // end of texture
#declare Stripes_Texture =
texture{ pigment{ color rgb<1,0.75,0>*1.1}
         finish { diffuse 0.9 phong 0.5}
       } // end of texture
#include "Street_0.inc"
//------------------------------------
object{ Street_0 (   6, // Width,
                   500, // Length,
                  0.10, // Stripes_W,
                  1.00, // Stripes_Len
                 ) //-----------------
        translate<0,0,-5.00>}
//------------------------------------
Background

top
 
© Friedrich A. Lohmüller, 2010
homepage:http://www.f-lohmueller.de