Einführung in die Beschreibungssprache des Raytracers POV-Ray       - Seite 8
von Friedrich A. Lohmüller
English English English
Italiano Italiano
Français français

Home
- POV-Ray Tutorials
 
  
POV-Ray Einführung
  INHALT  -  INDEX
 
  1. Arbeiten mit POV-Ray:
      "Insert Menu Add-on".
  2. Grundsätzliches zum
      Erstellen von Szenentexten.
      Räumliche Koordinaten,
      Zahlen und Vektoren
  3. Szenen-Aufbau
      Ein Grundbeispiel.
  4. Header einer Szene,
      #include-Dateien
      camera, light_source.
  5. Geometrische Grundobjekte
      plane, sphere, box,
      cylinder, cone, torus.
      und andere Körper
  6. Transformationen
      Streckung, Drehung,
      Verschiebung u. andere.
      CSG: union,
      difference, intersection.
  7. Farben und Oberflächen       texture, pigment, normal, finish
>8. #declare, #local, #macro,
      Platzhalter, flexible Objekte.
  9. #while Schleifen
      Grundbeispiele.
 10. #include, Include-Dateien.
      Wiederverwendbare Objekte.
 11. Rationelles Arbeiten,
      Geschwindigkeit, Flexibilität,
      modulares Arbeiten
      Anpassung v. 3.1 auf 3.5/3.6
      Anpassung v. 3.5/3.6 auf 3.7
      POV-Ray + Windows Vista.
 
  - Insert Menu Add-on
    & Download
                                       
#declare, #local - Abkürzungen, Platzhalter, flexible Objekte.
Definieren von Platzhaltern (Variablen) und Objekten

Bitte beachten Sie für die Wahl eigener Namen und Abküzungen:
> Verwenden Sie keine deutschen Umlaute!
> Verwenden Sie keine reservierten Schlüsselworte!
> Groß- und Kleinschreibung wird unterschieden!
> Empfohlen: alle selbstdefinierten Sachen sollten mit Großbuchstaben beginnen!

   Alle reservierten Schlüsselworte von POV-Ray sind in Kleinbuchstaben geschrieben!

#declare verwendet man für global geltende Variablen, während in Makros oder Include-Dateien mit #local nur lokal gültige Variable definiert werden können. Diese lokalen Variablen können innerhalb eines Makros oder einer Include-Datei verändert werden. Z.B.: Bei Zählvariablen in einer While-Schleife. Änderungen einer lokalen Variablen bewirken keine Änderungen gleichnamiger globaler Variablen, welche außerhalb definiert wurden.) Lokale Variable sind allerdings auch außerhalb des Bereiches in dem sie deklariert wurden unsichtbar!
Beispiel für die Definition von eigenen Objekten und die Verwendung definierter Objekte:
#declare R1 = 0.25 ; // ball radius
#declare RR = 1.00 ; // ring radius
#declare Position_1 =  <0,0.25,1> ;
#declare Ball_Texture =
 texture{ pigment{ color rgb<1,0.65,0>}
          finish { phong 1.0 }
        } // end of texture
#declare Ball1 =
 sphere{ <RR,0,0>,R1
         texture{Ball_Texture}}
//-------------------------------------
#declare BallHalfCircle =
union{
  object{Ball1 rotate <0,  0,0>}
  object{Ball1 rotate <0, 20,0>}
  object{Ball1 rotate <0, 40,0>}
  object{Ball1 rotate <0, 60,0>}
  object{Ball1 rotate <0, 80,0>}
  object{Ball1 rotate <0,100,0>}
  object{Ball1 rotate <0,120,0>}
  object{Ball1 rotate <0,140,0>}
  object{Ball1 rotate <0,160,0>}
  object{Ball1 rotate <0,180,0>}
 } // end of BallHalfCircle
// drawing command:
object{ BallHalfCircle
        translate Position_1}
// -------------------------------- end 
Example declare
Szenenbeschreibung für POV-Ray:
BallHalfCircle_1.pov





#macro ... #end - Beispiel: flexibles Definieren von Objekten.
Zur Wahl eigener Namen und Abküzungen vgl. Bemerkungen bei "#declare".
Beispiel für die Definition von eigenen Objekten mittels "#macro":
#macro BallHalfCircle (R1, RR, Texture)
#local Ball1 =
 sphere{ <RR,0,0>,R1 texture{Texture}}
union{
  object{Ball1 rotate <0,  0,0>}
  object{Ball1 rotate <0, 20,0>}
  object{Ball1 rotate <0, 40,0>}
  object{Ball1 rotate <0, 60,0>}
  object{Ball1 rotate <0, 80,0>}
  object{Ball1 rotate <0,100,0>}
  object{Ball1 rotate <0,120,0>}
  object{Ball1 rotate <0,140,0>}
  object{Ball1 rotate <0,160,0>}
  object{Ball1 rotate <0,180,0>}
 } // end of BallHalfCircle
#end // ------------------ end of macro
//-------------------------------------
#declare Texture1 =
  texture{ pigment{ color rgb<1,0.65,0>}
           finish { phong 1.0}
         }
#declare Texture2 =
  texture{ pigment{ color rgb<1,0.2,0>}
           finish { phong 1.0}
         }
// drawing commands:
object{
  BallHalfCircle(0.25, 1.00, Texture1)
  translate<0,0.25,1>}
object{
  BallHalfCircle(0.15, 0.50, Texture2)
  translate<0,0.5,1>}
// -------------------------------- end 
Example macro
Szenenbeschreibung für POV-Ray:
BallHalfCircle_2.pov





Teil 0 | Teil 1 | Teil 2 | Teil 3 | Teil 4 | Teil 5 | Teil 6 | Teil 7 | Teil 8 | Teil 9 | Teil 10 | Teil 11

top

© Friedrich A. Lohmüller, 2014
homepage:www.f-lohmueller.de