1. Die Programmiersprache
  2. Persistance of Vision - Raytracer (ray = Lichtstrahl, to trace = (ver)folgen):

    Mit diesem Raytracing - Programm werden fotorealistische Computergrafiken auf ff. Weise erstellt: in einem Textskript werden Kamera, Lichtquelle und Objekt definiert. Durch Angabe von Farbe und Oberflächenstruktur der Objekte wird festgelegt, wie oft ein Lichtstrahl von der Lichtquelle zum Objekt hin und zurück läuft. Es entstehen bei der Umwandlung des Textskriptes in ein Bild Computergrafiken, die "Licht mehr oder weniger reflektieren", die Schatten werfen, auf deren Objekten sich Gegenstände spiegeln, ...

  3. Die Syntax der Programmiersprache:
  4. PoVRay ist objektorientiert, d.h. es gibt Objekte, Methoden ("Tätigkeiten") und Eigenschaften. Nach dem Schlüsselwort für das gewünschte Objekt folgt eine geschweifte Klammer, danach in aufzählender Form die Eigenschaften und Methoden, dann wird die geschweifte Klammer geschlossen.

  5. Die grundlegenden Objekte
  6. sind camera, light_source, plane und die "Grundkörper" sphere, cone, cylinder, box, dazu die Ebene plane.

  7. Die einfachen Methoden
  8. sind rotate, scale und translate (drehen, skalieren und verschieben).

  9. Die Eigenschaften
  10. hängen vom jeweiligen Objekt ab. Für die Grundkörper gilt: texture (Textur, Material), pigment (Farbe), finish (Oberflächenbeschaffenheit) und normal (Normalenvektor). Für eine Kamera sind location und look_at Eigenschaften, für eine Lichtquelle ist color eine Eigenschaft, ebenso die Angabe ihrer Position als Vektor .

  11. Ein Beispiel
  12. soll die Syntax von Objekten, Methoden, Eigenschaften verdeutlichen: Die Syntax der übrigen Körper ist in der PoV-Hilfe erklärt, eine deutschsprachige Hilfeseite findest du unter http://www.mbork.de/frame.htm (inhaltlich ok, chaotische Rechtschreibung und schlechte Übersetzung aus dem Englischen). Auch meine PoV-Theorie-Seite kann Dir sicher manchmal weiterhelfen.

    Ein Kegel bzw. ein Kegelstumpf wird wie folgt programmiert:

    cone {<0,0,0> 2 <0,4,0> 0.5
         // Mittelpunkt des Grundkreises ist der Ursprung
         // 2 ist der Radius des Grundkreises
         // es folgt der Mittelpunkt des Deckkreises
         // dann der Radius des Deckkreises, 0, wenn ein Kegel
    
            texture {                // es gibt auch vorgefertigte T.
                pigment {color Red}  // achte auf Groß-/Kleinschreibung!
                                     // vorgefertigte Farben in colors.inc
                finish {
                     ambient 0.3     // 30% Umgebungslicht
                     diffuse 0.5     // 50% Streulicht
                     reflection 0.1  // 10% Reflexionsfähigkeit
                        }            // Ende der Oberflächenbeschaffenheit
    
                               // weitere Angaben sind möglich
                               // es gibt auch vorgefertige
                               // Oberflächenbeschaffenheiten
    
                   }//Ende der Textur
    
            scale <1,2,1>         // wird mit Faktor 2 in y-Richtung gestreckt
            translate <10,0,0>    // wird 10 LE in x-Richtung verschoben
            rotate <0,0,20>       // sein Schwerpunkt wird um 20 Grad
                                  // um die z-Achse gedreht
                                  // beachte: Methoden sind nicht kommutativ !
            normal{bumps 0.2 scale 3}// Es wird eine Oberfläche mit
                                     // 20% Beulen simuliert, die auf
                                     // das 3-fache in alle
                                     // Richtungen vergrößert werden.
         }//Ende des Kegelstumpfs
    
    


    Anmerkung 1:
    für mehrere Zeilen umfassende Kommentare wird wie auch in PHP /* ... */ benutzt.

    Anmerkung 2:
    Nicht nur der Normalenvektor, auch Texturen (z.B. Jade, Holz, Marmor, ... können verschoben, rotiert oder vergrößert und verkleinert werden. Farben können, um deren Intensität zu erhöhen bzw. zu schwächen mit einem Faktor multipliziert werden.



  13. Ein Startskript zum Kopieren spart Tipparbeit:

  14. // Persistence of Vision Ray Tracer Scene Description File
    // Dateiname: ... .pov
    // Version: 3.6
    // Beschreibung: ...........
    // Datum: .............
    // Autor: ..........
    
    // ==== Standard POV-Ray Includes ====
    #include "/opt/povinc/colors.inc"          // Standard Color definitions
    #include "/opt/povinc/textures.inc"        // Standard Texture definitions
    // ------------------------ ENDE des PROGRAMMKOPFES ----------
    
    // ------------------------- DEKLARATIONEN -------------------
    
    // ------------------------- ENDE der DEKLARATIONEN ----------
    
    // ------------------------- VERARBEITUNGSTEIL ---------------
    light_source { <10, 10, -10>  color White }
    
    camera {
      location  <0.0, 2.0, -15.0>
      right x*image_width/image_height //gegen Verzerrungen von Kugeln
      look_at   <0.0, 0.0,  0.0> }
    
    // ------------------------- ENDE des VERARBEITUNGSTEILS --------
    
    




© 2010 Asti PoVRay-Site Mathematische Streiflichter Algorithmische Kunst