Einführung in die Beschreibungssprache des Raytracers POV-Ray       - Seite 10
von Friedrich A. Lohmüller
EnglishEnglish 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
      sphere, box, cylinder,
      cone, torus, plane.
      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
                                       

#include "MyObject.inc" - Fertig-Objekte zur mehrmaligen Verwendung!

   Ein einmal konstruiertes Objekt kann man als gebrauchsfertiges Objekt in einer eigenen Include-Datei speichern. Mit dieser Methode kann man Objekte später in jeder anderen Szene erneut verwenden, ohne die gesamte Definition noch einmal schreiben oder kopieren zu müssen!
    Die Aufspaltung größerer Szenen in kleinere Bestandteile durch die Verwendung von Include-Dateien ist eine elementare Technik des modularen Arbeitens - ohne diese Technik ist es nahezu unmöglich wirklich große und komplexe Projekte zu verwirklichen.
Beipielobjekt:
Zu erst definieren wie ein Objekt 'Column_1' als Makro:
//----------------- macro Column_1(...)
#macro Column_1( H_C,  // column height
                 R_B,  // base radius
                 R_min,// border radius
                 T_S,  // top scale
               ) //---------------------
union{
 cone{ <0,0,0>,R_B,<0,H_C,0>,R_B*T_S}
 torus{ R_B,R_min translate<0,R_min,0>}
 torus{ R_B*T_S,R_min*T_S
        translate<0,H_C-R_min*T_S,0>}
 }// end Column
#end //------------------- end of macro 

Erstellung einer Include-Datei:
Für eine Include-Datei eines einzelnen Objekts
sollte man den Namen der Include-Datei
entsprechend dem Namen des Objekts wählen!

  Zu Namenswahl siehe meine Hinweise bei "#declare"!
Hier erstellen wir eine Datei 'Column_1.inc':
// POV-Ray include file "Column_1.inc"
//-------------------------------------
#ifndef( Column_1_Inc_Temp)
#declare Column_1_Inc_Temp = version;
#version 3.6;
//-------------------------------------
#macro Column_1( H_C,  // column height
                 R_B,  // base radius
                 R_min,// border radius
                 T_S,  // top scale
               ) //--------------------
//-------------------------------------
union{
 cone{ <0,0,0>,R_B,<0,H_C,0>,R_B*T_S}
 torus{ R_B,R_min translate<0,R_min,0>}
 torus{ R_B*T_S,R_min*T_S
        translate<0,H_C-R_min*T_S,0>}
 }// end Column
#end// ------------------- end of macro
//-------------------------------------
#version Column_1_Inc_Temp;
#end 
// ---------------- end of include file 
Wohin mit der Include-Datei?
Diese Datei müssen wir entweder im gleichen Verzeichnis wie unsere Szenendatei (Extension'.pov') speichern, oder in einem Include-Dateien-Verzeichnis, das in den Include-Dateien-Pfaden (Library_Path) von POV-Ray verfügbar ist.


Column_1 macro
Das Makro Column_1( ... ) aufgerufen durch:
object{Column_1(3.5, // height
                0.5, // base r
                0.06,// border r
                0.75,// top scale
              ) //---------------
  texture{
    pigment{color rgb<1,0.9,0.8>}
    normal{ bumps 0.5 scale 0.01}
    finish{ phong 0.1 }
  } // end texture
  translate<0,0,0>
} //-------------------------- 
Szenentext Makro-Test: Column_1_macro_test.pov

Anmerkung: Die roten Teile des Include-Dateien-Textes wurden hinzugefügt um zu vermeiden, dass das selbe Objekt nicht erneut deklariert wird, wenn es bereits einmal eingefügt wurde.
Zudem wechselt dieser Teil die aktuell verwendete Version von POV-Ray zurück in diejenige Version, für die diese Include-Datei geschrieben wurde, auch wenn wir eines Tages eine neuere Version in Gebrauch haben.

Anmerkung: Wenn wir eine Include-Datei mit dem Befehl #include "MyObject.inc", einfügen, so wird der Text dieser Include-Datei von POV-Ray Zeichen für Zeichen genau anstelle des Befehls während dem Parsen eingefügt. Dies muss immer vor der Stelle passieren, an der wir das Objekt dieser Include-Datei verwenden.
Definiert der Text der Include-Datei ein vollständiges Objekt, das wir mehrfach in einer Szene verwenden wollen, so müssen wir die Include-Datei nur einmal einfügen!

Aufruf des Objektes aus Include-Datei:
Hier binden wir 'Column_1.inc' ein:   (nur einmal!)
//---------------------------------------
#declare Column_Texture =
 texture{ pigment{ color rgb<1,0.95,0.8>}
          normal { bumps 0.5 scale 0.01}
          finish { phong 0.1 }
        } // end of texture
//-------------------------------------// 
#include "Column_1.inc"
//-------------------------------------//
union{ //--------------------------------
 #local Nr = 0;     // start
 #local EndNr = 10; // end
 #while (Nr< EndNr)
 union{ // inner union
   object{ Column_1(3.5, 0.5, 0.06, 0.75)
           translate<-2,0,0>}
   object{ Column_1(3.5, 0.5, 0.06, 0.75)
           translate< 2,0,0>}
   translate<0,0,Nr*2.5>
 } // end inner union
 #local Nr = Nr + 1;  // next Nr
 #end // --------------- end of loop
texture{  Column_Texture }
rotate<0,0,0>
translate<0,0,0>
} // end of union -----------------------



Column_1_rows
Säulenreihen

Die Beschreibung dieser Szene für POV-Ray:
Szenen-Datei: Column_1_Row.pov
Verwendete Include-Datei: Column_1.inc
(Man speichere beide Dateien mittels
Rechtsklick + 'Ziel speichern unter'
in dasselbe Verzeichnis und starte
die Datei 'Column_1_Row.pov' in POV-Ray.)


Dieser Mechanismus eignet sich auch vorzüglich dazu, sich seine selbstentwickelten Lieblingsfarben und -texturen als Datei "My_tex.inc" abzulegen! Ein Möbellager oder eine Flugzeug-Sammlung läßt sich ebenso erstellen!!!


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