Un exemple simple pour commencer.

Ce simple exercice vous permettra de faire vos premiers pas avec PovRay sans trop de difficulté, et d'en comprendre la philosophie. En effet utiliser du texte pour décrire une scène 3D demande plus d'efforts au début mais vous permettra aussi d'aller très loin...
Deux fichiers vous permettent de commencer sans trop de difficultés. Copier le fichier include : basics.inc et le fichier pov : TP0-0.pov dans votre répertoire de travail.
Lancer Povray sur ce fichier (double cliquer sur TP0-0.pov). Puis lancez "Run". Vous devez voir apparaître l'image ci-contre. Un fichier TP0-0.bmp a été créé dans votre répertoire de travail.
Les 3 axes sont : rouge pour X, vert pour Y et bleu pour Z. Le damier est composé de case de UN de coté. Vous pouvez changer le point de vue en changeant la caméra. Il suffit de commenter (ajouter // au debut) :
//vue_courante()
et de décommenter une autre, par exemple :
vue_dessus(distance_camera)

Vous êtes maintenant prêt à commencer...
0.Pour commencer :
Réalisons une géométrie simple : une sphère rouge telle qu'elle est présentée sur l'image de droite.
  • Placer la sphère au centre de la case grise, à proximité de l'axe . Utilisez le menu Insert/Shapes(Shorter Versions)/Sphere et modifiez les valeurs  mises par defaut.  La syntaxe de la sphere est : sphere { <centre>  rayon } 
  • La sphère est noire car il n'a pas de couleur associée. Ajoutez le champs pigment { color ....} pour afficher la sphère en rouge. Attention la couleur doit se trouver DANS la déclaration de la sphère.
  • Ajouter une reflexion avec finish { phong ... }
  • Utiliser une variable: R pour définir le rayon avec l'instruction : #declare R=0.3; . La déclaration doit se trouver AVANT son utilisation. Attention au ";". 
A la fin de cette étape vous devez produire l'image qui est ci-contre.
1. Rendu : transparence & réflexion :
Pour obtenir le rendu de la figure de droite :
  • passer la bille en gris avec une transparence de 50%,
  • puis ajouter reflection {0.7} dans finish{ ...}.


2. Macro et générateur aléatoire :
Un avantage énorme de la "programmation" est de pouvoir répéter une séquence d'instruction; ici l'instanciation d'une géométrie dont on fera varier aléatoirement la position.
Commencer par transformer l'objet sphere en macro : #macro MySphere(X,Y,R) ... #end. La sphère a disparue car la macro ne l'instancie pas. Pour ce faire ajouter la ligne d'appel à la macro : Mysphere(0.5,0.5,0.3). Le résultat doit être identique à celui de l'étape précédente.

Avec les instructions rand(...) et seed(...), placer une sphère aléatoirement sur l'une des 5x5 cases visibles sur le damier.
Pour suivre les valeurs calculées par rand, vous pouvez afficher des messages avec :
#debug concat("R1=",str(R1,1,5),"/n"). Le résultat s'affiche dans la fenêtre dédié : celle de l'onglet le plus à gauche.
3. Boucle "while" pour les répétitions :
Répéter maintenant le tirage aléatoire 50 fois sur une zone de 10x10 cases. La boucle est réalisée avec : #while ( i < 50 ) .... #end. "i" est incrémenté par #declare i=i+1;
Modifier aussi la macro "MySphere" pour faire varier le rayon des sphères aléatoirement de 0 à 0.5.

Remarquer sur l'image de droite la réflexion des sphères entre elles...
4. Placer des objets dans une scène
On passe en extérieur... Reprendre le paysage de Christoph Hormann (paysage.pov) et remplacer les arbres par des boules qui avec ce nouvel éclairage semblent laiteuses...
  • Intégrer la déclaration de la macro MySphere(...),
  • Remplacer le positionnement Pos des "arbres" (TreeA) par celui des sphères (MySphere)
  • Noter au passage le calcul de Pos et la syntaxe de la fonction trace : 
    • PosObj= trace (  ObjectName, RayStartingPoint, RayDirection, NormObj );
Déterminer le rayon des boules pour une image comparable à celle de droite.

5. Changer la texture de la topographie
Dans le fichier, retrouver et examiner la définition de la texture de la topographie. Remplacer là par un simple damier de couleur (checker).

Extension : remplacer les boules par des pièces d'échec (on en trouve sur internet) en les inclinant correctement (normale à la surface).