Voici un code d'exemple pour vous montrer comment utiliser des variables :
Code : Autre1
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 : Autre1
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 !

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 : Autre1
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 : Autre1
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...
Mais, c'est vrai, vous ne devriez jamais avoir besoin de mettre des
object dans d'autres
object.
Voici un autre exemple d'utilisation de variables :
Code : Autre1
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

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