A propos de POV-Ray




Parmi tous les logiciels d'image de synthèse, POV-Ray (ou Persistence Of Vision Raytracer) se distingue de part sa conception. Premièrement, c'est un programme qui est entièrement gratuit et qui est développé et supporté par une grande équipe. Deuxièmement, il existe pour la plupart des plateformes actuelles (Windows, DOS, Unix, Linux, Mac, OS/2, Amiga, etc...) avec une pleine compatibilité. Troisièmement, une scène se décrit en utilisant un langage proche du langage C. Cette manière de faire peut sembler lourde et difficile à première vue, mais avec un peu d'entraînement, il est aisé de faire des choses très spectaculaires. De plus, le langage comporte des directives de compilation qui permettent de faire des boucles, des tests, et autres choses utiles. Il est donc tout à fait possible de décrire une lignée d'objets sans devoir tous en tenir compte, mais simplement en incluant une boucle. La plupart des fonction mathématiques sont supportées, il est aussi bien entendu possible d'utiliser des générateurs aléatoires, qui avec des tests et des boucles donnent des choses très intéressantes (voir les exemples dans les images que j'ai crées). De plus, et ce n'est pas des moindres, les variables dont supportées (en fait comme dans tout langage de programmation). Il est aussi possible de définir une macro qui permet de rassembler des opérations répétitives, mais avec plusieurs paramètres, par exemple faire une jolie plate-bande.
La multitude de formes d'objets que l'on peut obtenir est aussi impressionnante, et les combinaisons de ces formes étendant à l'infini les moyens de s'exprimer. L'avantage sur la plupart des autres programmes d'image de synthèse est que la plupart des objets sont calculés mathématiquement, c'est-à-dire que par exemple une sphère sera parfaite et non constituée de polygones (ce qui a aussi des inconvénients, mais qui sont facilement contournés). Ceci permet de faire très facilement des formes mathématiques assez intéressantes; regardez cette image. Pour habiller les objets, les possibilités de leur donner des textures est tout aussi impressionnante. On peut aisément imiter la plupart des matières : métaux, bois, plastique, pierre, eau, tissu, peau, plantes, ou aussi créer des matières qui n'existent pas.
Il est aussi utile de savoir que le programme fait intervenir le ray-tracing pour tous ses calculs, ce qui permet d'améliorer le réalisme tout en ayant des temps de calcul pas trop longs...
Parmi ses autres possibilités on peut par exemple ajouter des effets d'atmosphère qui rendront visible un faisceau lumineux, et de varier la densité en fonction de l'espace et du temps, afin d'imiter par exemple de la fumée de cigarette ou aussi de faire du feu.
Au sujet de l'animation, elle est hélas pas trop puissante, mais avec une certaine expérience, il est possible de faire de beaux mouvement. De plus, il existe des macros et autres includes pour faciliter la tâche.

Pour une liste non exhaustive de ses caractéristiques, allez ici.

Bon, pour illustrer le langage, voici un exemple simple:

Je voudrais poser une sphère sur un sol carrelé. Je vais pour commencer décrire la sphère comme ceci :

   sphere {
      <0, 1, 0>, 1
      texture {
         pigment {color red 1 green 0 blue 0}
         finish  {specular 0.4}
      }
   }

Voici l'explication : sur la première ligne, j'ai indiqué à POV-Ray que je veux faire une sphère. Les accolades ({ et }) permettent d'indiquer ce qui est dans la description de la sphère. Sur la seconde ligne, j'ai mis les coordonnées tridimensionnelles du centre entre les crochets (< et >). La première valeur est (je l'ai décidé...), la coordonnée gauche-droite, la seconde haut-bas et la dernière devant-derrière. La valeur suivante est le rayon de la sphère. Donc notre sphère a un rayon d'une unité, et est décalée vers le haut d'une unité afin que sont point le plus bas soit à l'origine. Une unité n'a pas de grandeur déterminée, c'est à celui qui fait la scène de décidé ce qu'elle représente (par exemple un mère, un mm, un km, 2.37 dm...). Sur la troisième ligne j'ai mis que l'on va s'occuper de la texture de cette sphère. En quatrième ligne le mot pigment veut dire qu'in décrit la ou les couleurs de la surface, dans ce cas rouge (on travaille sur les composants rouge, vert et bleu des couleurs avec des valeurs allant de 0 à un). Finish sert à décrire la surface de la sphère, pour la rendre réfléchissante, lumineuse, comme du verre ou autre. Dans notre cas specular indique que l'on veut avoir un reflet de la future lampe. Bon, assez discuté, on va mettre le sol!

   plane {
      y, 0
      pigment {checker color rgb 0 color rgb 1 scale 0.5}
      finish {reflection 0.25}
   }

Pour ce sol, on a employé un plan infini (il s'étend à l'infini et est par la même occasion infiniment mince). Le y signifie que le vecteur perpendiculaire est dans la direction du haut (comme un sol de maison normal) et à 0 unité de l'origine (donc tous les points du sol seront à y=0).
Le mot-clé checker signifie que l'on veut des carreaux avec les deux couleurs décrites après. Comme on veut que le sol soit 'ciré' (la sphère s'y reflétera), on a mis le mot clé reflection suivi d'une valeur.
Voilà. On a posé nos objets, mais il sont dans la pénombre! Il faut les éclairer pour pouvoir les observer. Pour cela on place une lampe :

   #declare Intensite=0.85;
   light_source {
      <2, 4.5, -10>, color rgb <0.85, 0.95, 1>*Intensite
   }

Cette lampe est théoriquement un point lumineux infiniment petit qui éclaire uniformément dans toutes les direction. C'est une piètre approximation d'une lampe, mais on va s'en contenter pour cet exemple. Pour la décrire, on met d'abord les coordonnées du point lumineux puis sa couleur, dans ce cas du jaune tirant sur le blanc. Cette valeur permet également de contrôler l'intensité lumineuse; j'ai justement crée et défini une variable Intensite qui se multiplie avec la couleur de base.

C'est bien, mais ce serait encore mieux si on pouvait observer la scène. Il faut donc placer une caméra. On va la mettre à bonne distance et la pointer sur le centre de la sphère. Voici comment on procède :

   camera {
      location <0.2, 2.2, -8>
      look_at <0, 1, 0>
      angle 35
   }

Ici j'ai défini en plus l'angle de vue de la caméra, donc avec cette valeur, on peut également agir sur le zoom. Allez, pour le fun, on va encore mettre un arrière plan uni et bleu ciel :

   background {color rgb 0.5, 0.7, 1>}

Voilà, si vous calculez la scène, ça devrait donner ça :

Pour télécharger ce magnifique programme allez dur le site principal : www.povray.org et choisissez dans la section download la plateforme que vous utilisez.

Pour une autre introduction sur POV-Ray allez .
Et sinon, pour avoir tous les renseigments que vous souhaitez, allez sur le webring de POV-Ray.
Pour d'autres liens ou informations générales sur le ray-tracing, visitez ma page prévue à cet effet.
 
 


Home  |  Présentation  |  Photos  | Images 3D  | Musique  |  Divers  |  Liens


Dernière modification : 9 septembre 1999
© 1999 Emmanuel Keller
A propos de POV-Ray