Beschreibungen und Beispiele zum Raytracer POV-Ray von Friedrich A. Lohmüller
    Kleines Include-Dateien-Tutorial für POV-Ray
English English English

Home
- POV-Ray Tutorial

  - POV-Ray Details

  - Über Variable

  - Ein kurzes
    Include File Tutorial
      Wozu Include Files?
      Eigene Include Files
        und wie aufrufen.
      Schreibweisen, ".inc"
        "#local / #declare"
      Wo speichern?
    >Design von Include Files
      Eigene Elemente
        zum 'Insert Menu'


                                                 

Die Gestaltung von eigenen Include-Dateien.

Für ein 'gutes Design' von Include-Dateien schaue man sich die Art wie die POV-Ray-Standard-Include-Dateien gestaltet wurden näher an:
// POV-Ray 3.6/3.7 sample include file "NAME.inc"
// author, date:
//---------------------------------------------------------
#ifndef( NAME_Inc_Temp)
#declare NAME_Inc_Temp = version;
#version 3.6;
//---------------------------------------------------------
    // .... your include file content
//---------------------------------------------------------
#version NAME_Inc_Temp;
#end
//------------------------------------- end of include file
Dies Methode garantiert 2 Dinge auf einmal:
1. Es vermeidet unnötiges erneutes Lesen von schon gelesen Include-Dateien.
2. Es ändert die Arbeitsweise von POV-Ray in den Modus '#version 3.6;' während des Parsens (lesen und umsetzen in rechenbaren Programmcode) des Inhaltes der Include-Datei und ein Zurückwechseln in den Versionsmodus der Szenendatei von dem aus die Include-Datei aufgerufen wurde.

  Für eine Include-Datei namens 'NAME.inc' deklariert man eine globale Variable namens 'NAME_Inc_Temp' welche die POV-Ray-Versionsnummer enthält, welche die aufrufende POV-Ray-Szenendatei gerade verwendet.
  Wenn diese Variable bereits deklariert ist, dann wurde die Include-Datei bereits irgendwann vorher gelesen und wird dann nicht nochmal gelesen sondern übersprungen. Auf diese Art und Weise wird die unnötige nochmalige Aktion des Parsens vermieden. Diese Versionsnummer kann dann am Ende wieder zurückgesetzt werden.
  POV-Ray kann vom Modus der gegenwärtigen Version (wie z.B. 3.6 oder 3.7) für bestimmte Textabschnitte in den Modus einer früheren Version wechseln: '#version 3.6;' und dann durch '#version 3.7;' wieder zurückwechseln. Dies erlaubt einige (wenn auch nicht eine totale) Rückwärts-Kompatiblität zum Syntax von älteren Versionen.
Hier wird die bedingte Anweisung '#ifndef (VARIABLE) /*Lies die Include-Datei im Modus ... */ #end' verwendet um die gegenwärtige Versionsnummer zu speichern, für den Inhalt solange zu 3.6 zu wechseln und am Ende die gegenwärtige Versionsnummer wieder zurückzuspeichern.


Wie man sicherstellt, dass alle benötigten Standard-Include-Dateien geladeen werden: Eine weitere gute Idee ist es sicherzustellen, dass alle benötigten Standard-Include-Dateien , welche in dieser Include-Datei verwendet werden (z.B. color.inc, textures.inc, shapes.inc, shapes.inc etc.), auch geladen werden, auch wenn die aufrufende Szenendatei diese nicht lädt (roter Teil):
// POV-Ray 3.6/3.7 sample include file "NAME.inc"
// author, date:
// What's that: ...
//---------------------------------------------------------
#ifndef( NAME_Inc_Temp)
#declare NAME_Inc_Temp = version;
#version 3.6;
//---------------------------------------------------------
#ifndef(  Colors_Inc_Temp)
#include "colors.inc"
#end
#ifndef(  Textures_Inc_Temp)
#include "textures.inc"
#end
#ifndef(  Shapes_Inc_Temp)
#include "shapes.inc"
#end
#ifndef(  Shapes2_Inc_Temp)
#include "shapes2.inc"
#end
//---------------------------------------------------------

    // .... your include file content

//---------------------------------------------------------
#version NAME_Inc_Temp;
#end
//------------------------------------- end of include file

Kommentare mit Inhaltsbeschreibung und Anwendungsbeispiel:
Es ist ferner empfehlenswert einige Kommentarzeilen mit einer guten Beschreibung darüber, was diese Include-Datei macht anzufügen. Ebenso sollte in Kommentarklammern /* ... */ ein Anwendungsbeispiel angefügt werden, das zeigt, wie man diese Include-Datei aufrufen kann!


....
top

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