Aller au menu - Aller au contenu

Icône Les variables

Mise à jour : 01/07/2010
525 visites depuis 7 jours, dont 0 sur ce chapitre classé 218/786
Voici un chapitre qui ne devrait pas vous poser trop de problèmes, mais qui va pourtant vous simplifier grandement certaines tâches répétitives...
POV-Ray propose un système assez simple de langage de programmation, permettant, entre autres, d'utiliser des variables...
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Présentation

Tout d'abord, qu'est-ce qu'une variable exactement ?
Une variable est un raccourci, c'est un nom qui désigne quelque chose généralement plus long et plus fatigant à écrire.
Oui, exactement : les variables sont principalement là pour nous simplifier la vie !

Qu'est-ce qu'une variable peut contenir, en pratique ? A peu près n'importe quoi... o_O
Eh oui ! Vous pourrez utiliser vos variables pour définir des nombres, des phrases, mais aussi des couleurs, des textures, des objets, des unions... :D
C'est particulièrement utile lorsqu'une scène comporte plusieurs objets identiques : une petite variable, et hop ! On divise le travail par 3, 5, 100... :lol:

Définir une variable

Dans certains langages de programmation (comme le C par exemple), chaque variable ne peut contenir qu'un seul type de données (un nombre, une lettre, ...).
Mais POV-Ray n'est pas prévu pour être aussi complexe, et les variables ne sont donc pas typées, ce qui veut dire qu'une même variable peut aussi bien contenir un nombre qu'un vecteur, ou n'importe quoi d'autre.

Pour définir une variable, il faut ajouter cette ligne dans votre code :
Code : Autre
1
#declare Trois = 3;

Remarquez que :
  • la ligne commence par un "#" : toutes les lignes utilisant le "langage de programmation" de POV-Ray (je mets des guillemets car ce n'est pas un véritable langage de programmation à proprement parler) commenceront par un "#" ;
  • de même, la ligne finit par un ";" : ce sera aussi le cas pour toutes les autres lignes utilisant ce "langage" ;
  • cette ligne sert à la fois de déclaration de variable et d'initialisation. Dans POV-Ray, une telle différence n'existe pas ;
  • bien entendu, au lieu de mettre Trois = 3, j'aurais pu mettre autre chose... par exemple :

Code : Autre
1
2
3
4
5
6
7
8
#declare Vecteur = <1,2,2>;
#declare rouge = pigment {
  rgb <1,0,0>
};
#declare maSphere = sphere {
  Vecteur,
  1
};


Comme vous le voyez, on peut définir à peu près tout et n'importe quoi. :-°

A présent, voyons comment utiliser ces variables...

Utiliser ses variables

Voici un code d'exemple pour vous montrer comment utiliser des variables :
Code : Autre
1
2
3
4
5
6
7
8
9
10
11
12
#declare posX = 5;
#declare Vecteur = <1,posX,2>;
#declare rouge = pigment { rgb <1,0,0> };
#declare maSphere = sphere {
  Vecteur,
  1+posX/3
};
 
sphere {
  maSphere
  pigment { rouge }
}


Même si notre variable rouge contient la section pigment, il FAUT mettre rouge dans une section pigment... ce n'est pas comme si POV-Ray copiait le contenu de rouge.


C'est vrai : si l'on veut changer notre objet, et, par exemple, mettre dans maSphere une boîte au lieu d'une sphère, il faudra changer également l'endroit où maSphere est appelée :
Code : Autre
1
2
3
4
5
6
7
8
9
10
(...)
#declare maSphere = box {
  Vecteur,
  2*Vecteur
};
 
box {
    maSphere
    pigment { rouge }  
}


Ce qui peut vite devenir fatigant... :(
Heureusement, on a pensé à nous ! :D Et il existe un objet capable de contenir n'importe quoi. En réalité, c'est une section qui peut contenir presque n'importe quoi : la section object.
Code : Autre
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#declare maSphere = sphere {
  Vecteur,
  1
};
#declare maBoite = box {
  Vecteur,
  2 * Vecteur
};
 
object {
    maSphere
    pigment { rouge }  
}
 
object {
    maBoite
    pigment { rouge }  
}


Quand je vous disais que object pouvait contenir presque n'importe quoi, je n'avais pas menti :
Code : Autre
1
2
3
4
5
6
7
8
object {
  object {
    object {
      maSphere
      pigment { rouge }  
    }
  }
}

En effet, il est possible de mettre un object dans un autre object... :o
Mais, c'est vrai, vous ne devriez jamais avoir besoin de mettre des object dans d'autres object. :D

Voici un autre exemple d'utilisation de variables :
Code : Autre
1
2
3
4
5
6
#declare rayon1 = 5;
#declare rayon2 = 7;
torus {
  (rayon1+rayon2)/2,
  rayon2-rayon1
}

Cela créera un tore comme ceci (sans la vue de coupe ^^ ) :
Image utilisateur

En principe, utiliser les variables ainsi ne devrait pas être trop compliqué. ^^

Re-définir une variable

Souvent, on aimerait modifier une variable après l'avoir définie. Comment faire ? POV-Ray nous offre une méthode extrêmement simple : en la re-déclarant !
Code : Autre
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#declare Zero = 3*2;
sphere {
  <Zero, Zero, Zero>,
  2 + Zero
}
 
#declare Zero = 0;
 
sphere {
  <Zero, Zero, Zero>,
  2 + Zero
}
 
#declare Zero = sphere {
  <Zero, Zero, Zero>
  2 + Zero
};


Ce dernier exemple est particulièrement intéressant : en effet, on re-déclare Zero, qui était un nombre, en une sphère : ce qui montre bien que chaque variable peut contenir n'importe quoi ; mais on utilise également Zero dans sa propre re-définition ! En effet, Zero ne prendra sa nouvelle forme de sphère qu'après le ";".
Ainsi, il est également possible de faire ceci :
Code : Autre
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#declare position = 0;
sphere {
  <position, 0, 0>
  0.1
}
 
#declare position = position + 1;
sphere {
  <position, 0, 0>
  0.1
}
 
#declare position = position + 1;
sphere {
  <position, 0, 0>
  0.1
}

De cette manière, on peut incrémenter une variable, en lui donnant une valeur dépendant de son ancienne valeur !

Attention !

Malgré l'apparente simplicité des variables, il y a certaines erreurs que l'on retrouve très souvent.
  • Une variable ne DOIT pas avoir un nom déjà réservé par POV-Ray. Impossible donc d'appeler votre sphère sphere, pigment ou même rgb.
  • Toute déclaration DOIT être une assignation. Impossible d'utiliser #declare sans signe "=" :

Code : Autre
1
#declare OK;

n'est donc pas correct ! Il faudrait mettre :
Code : Autre
1
#declare OK = true;

par exemple...

Enfin, attention à ne pas utiliser de variable avant de l'avoir définie au moins une fois !

Si vous suivez ces conseils, vous ne devriez pas rencontrer trop de bugs. ;)

Commentaires

Même s'ils n'ont pas de rapport direct avec les variables, les commentaires sont vite utiles dès que vous commencez à utiliser ce "langage de programmation".
Un commentaire est un texte, situé dans votre scène, qui a pour SEUL et UNIQUE but de donner des explications sur votre scène.

Écrire des commentaires dans POV-Ray se fait de la même façon que dans de nombreux langages.
Tout ce qui est placé entre // et une fin de ligne est un commentaire.
Tout ce qui est placé entre /* et */ est un commentaire, même si celui-ci s'étale sur plusieurs lignes :
Code : Autre
1
2
3
4
5
6
7
sphere { // Ceci est une sphère
  <0,0,0>
  1
  /* Je ne met pas de couleur
   * ici car ce n'est qu'un
   * exemple. */
}


Si vous voulez ignorer temporairement une partie de code, n'utilisez pas de commentaire. Nous verrons dans les prochains chapitres comment ignorer proprement une partie de code.

Q.C.M.

Que peut-on mettre dans une variable ?
Comment créer une nouvelle variable appelée Zero ?

Statistiques de réponses au QCM

Je vous l'accorde, les variables ne sont, pour l'instant, pas aussi fantastiques que je vous l'avais dit :( ... Mais attendez ! Le prochain chapitre vous permettra d'en tirer pleinement profit ! ;)
Chapitre précédent Sommaire Chapitre suivant

Partager

Il n'y a pas encore de commentaire pour ce tuto.