vers l'index général de l'aide / vers l'index des directives

#include

objectif

Permettre l'inclusion du contenu d'un autre fichier (contenant des intructions dans le langage de POV-Ray) dans le script courant.

syntaxe

À n'importe quel endroit du script, y compris, si nécessaire, dans les tréfonds des plus obscures structures :

#include "nom_du_fichier.inc"

Le fichier peut avoir n'importe quelle extension, mais ".inc" est une convention ultra-répandue dans le monde de POV-Ray, et officiellement préconisée. POV-Ray est livré avec de nombreux fichiers ".inc" concernant surtout les textures : "colors.inc", "woods.inc", "metals.inc",...

fonctionnement

Il faut considérer #include comme une simple commande de copier-coller. Tout se passe comme si vous aviez tapé le contenu du fichier à l'endroit où vous invoquez #include.

En conséquence, si vous faites référence à un élément défini dans un fichier externe, il est impératif que ce fichier ait été inclus AVANT cette référence !

Les variables locales (déclarées par #local) ont un champ d'action limité au fichier dans lequel elles sont déclarées et manipulées.

stratégie I

Bien entendu, vous pouvez organiser vos scripts comme vous l'entendez, mais il est bon de prendre soin de rendre les choses aussi claires que possible. Si vous travaillez sur une scène nommée "chateau.pov", ce serait une bonne idée de regrouper toutes les définitions de textures dans un fichier nommé "chateau_tex.inc", toutes les définitions d'objets dans "chateau_obj.inc", et toutes les macros dans "chateau_mac.inc" ou encore "chateau.mcr". Alors, le script principal commencerait logiquement par :

#include "colors.inc"
#include "chateau_tex.inc"
#include "chateau.mcr"
#include "chateau_obj.inc"

stratégie II

Afin d'éviter qu'un fichier inclus appelle à son tour un autre fichier qui a déjà été inclus (occasionnant une petite perte de temps et de mémoire), voire pire, deux fichiers s'appellant l'un l'autre, indéfiniment, il existe une technique simple, qui est par ailleurs utilisée dans les fichiers .inc standard de POV-Ray.

Cette technique consiste à définir une variable dans le fichier à inclure, et de conditionner la lecture du contenu du fichier inclus à la non-existence préalable de cette variable. Comme ceci :

//---- debut du fichier "essai.inc" -----//
#ifndef (Inclus_Essai)

  #declare Inclus_Essai = 1;

  (...contenu du fichier...)

#end
//---- fin du fichier "essai.inc" -----//

La première fois que POV-Ray lit ce fichier, il se demande (#ifndef) si la variable Inclus_Essai existe. Comme c'est la première fois, elle n'existe pas, et il poursuit donc la lecture du contenu du fichier, qui commence par la définition de cette variable ! Ensuite, si jamais le fichier "essai.inc" était à nouveau inclus, la réponse à la première question sera différente (puisque, désormais, la variable existe), et POV-Ray ne lira PAS le contenu du fichier une nouvelle fois !

remarque

Avant l'apparition de POV-Ray 3.1 et ses macros, il était courant d'utiliser des fichiers ".inc" s'appelant eux-mêmes, pour créer des structures récursives (arbres..), où des objets paramétrables. Certains, comme Chris Colefax, ont excellé dans l'écriture de scripts pouvant faire des choses dont on aurait même pas osé rêver. Les macros ont rendu ce procédé obsolète, et la plupart de ces scripts ont été, depuis, convertis en macros, plus souples et plus rapides.

Rédacteur: Fabien Mosen