Mini tutorial animation POVray

A la demande pressante de mon fils Nicolas, j'ai vite torché quelques explications sur une façon de faire des animations àlc avec POV et un peu de scriptage. La méthode canonique consiste en l'utilisation des fonctionnalitées ad-hoc de POV, mais ne les utilisant pas, je ne les connais pas. L'autre méthode consiste à piloter povray à partir d'un script écrit dans un langage quelconque. Nicolas parlant le fourchelangue, nous allons utiliser Python.

Le source de l'image

Restons simple. Juste un plan de sol, une caméra, quelques lumières et un objet qui va bouger. Nous utilisons la variable clock, prédéfinie par pov à partir de la valeur donnée à l'option +k de la ligne de commande.

#include "colors.inc"

box { <-1, -1, -1>, <1, 1, 1> pigment { color White }
        rotate <clock, clock/2, clock/3> }

plane   { y, 0  pigment { color Gray30 } }

camera  {
        location  <-10, 4, -2>
        look_at <0, 0, 0>
        angle   30
        }

light_source    { <-5, 15, 4> color Orange }
light_source    { <-15, 15, -5> color Blue }

Le script de pilotage

Le principe est simple: nous allons, dans une boucle, confectionner une ligne de commande pour povray où le nom de l'image de destination et l'option +k seront basés sur l'indice de la boucle.

#!/usr/bin/env python

import os

options = " +w180 +h135 +q9 +a -d -v "
source  = "toto.pov"
povray  = "/home/tth/MyLocal/bin/povray"

for valeur in range(0,180):
        destination = " -ototo%03d.png" % valeur
        horloge = " +k%d " % valeur
        foo = destination + options + horloge
        commande = povray + " -i"+source + foo
        print commande
        os.system(commande)

Pour le nom de l'image résultante, nous allons utiliser le format %03d afin que la numérotation soit de la forme 000 001 002 ... 041 041 ... 665 665, ce qui facilite bien la vie dans les étapes ultérieures. N'est-ce pas monsieur Léon ?

L'assemblage

Je connais deux solutions: convert pour faire des Gifs animées, et mencoder pour faire les .AVI que c'est le br*nx à paramétrer. Hélas, la marge de cette page est trop petite pour d'autres explications. Bon courage à ceux qui tenteront de lire ma manpage de mencoder.

Le résultat

Voilà, c'est fait un petit peu trop à la rache, mais le résultat est là. Nicolas a maintenant un peu de grain à moudre, et il va bientôt vous présenter ses propres productions animatiques.