python-visual
python-visual, encore appelé VPython, est un package de graphisme 3D pour le langage de programmation Python, créé par David Scherer en 2000 sous le nom de "Visual". VPython permet de créer facilement des formes 3D en mouvement et des animations. Il est accessible aux personnes ayant une expérience limitée en programmation. Étant donné qu'il est basé sur Python, il offre également de nombreuses possibilités pour les programmeurs ou chercheurs.
Pré-requis
- Disposer des droits d'administration.
- Disposer d'une connexion à Internet configurée et activée.
- Avoir les pilotes de sa carte graphique installés et à jour.
Installation
Il suffit d'installer le paquet python-visual.
Pour les versions précédentes d'Ubuntu, l'installation sera plus compliquée, se référer à cette page.
Utilisation
Visitez le site internet de Vpython, ainsi que la page de documentation.
Pour démarrer avec un exemple simple, créez, avec votre éditeur de texte préféré, le script balle.py
, qui contiendra :
from visual import * floor = box (pos=(0,0,0), length=4, height=0.5, width=4, color=color.blue) ball = sphere (pos=(0,4,0), radius=1, color=color.red) ball.velocity = vector(0,-1,0) dt = 0.01 while 1: rate (100) ball.pos = ball.pos + ball.velocity*dt if ball.y < ball.radius: ball.velocity.y = abs(ball.velocity.y) else: ball.velocity.y = ball.velocity.y - 9.8*dt
Ouvrez ensuite une console, déplacez vous dans le répertoire contenant le fichier balle.py
, et exécutez le script avec :
python balle.py
Vous devriez voir apparaître une nouvelle fenêtre contenant l'animation d'une balle rebondissant sur un sol.
Exporter au format vidéo en passant par pov
python-visual ne supporte pas de fonctionnalité pour exporter votre animation en fichier vidéo. Afin de remédier à ce problème, il existe une solution consistant à :
- Exporter la scène courante de l'animation en fichier
pov
, grâce au modulepovexport
, à intervalle régulier de l'animation. Cela créera, par exemple, des fichersanim00.pov
,anim01.pov
…anim099.pov
. Les fichierspov
sont des fichiers textes. - Convertir chacun des fichiers
pov
obtenus en fichierpng
, grâce à l'outil en ligne de commandepovray
. - Assembler toutes les images obtenues en une vidéo
anim.avi
, grâce à l'outils en ligne de commande mencoder.
Téléchargement du module Python povexport.py
povexport est une module Python disponible sur le site vpython.org à cette adresse (clic droit + Enregistrer la cible du lien sous…).
Après décompression de l'archive zip, vous obtiendrez trois fichiers (attention, l'archive ne contient pas de répertoire, directement les trois fichiers) :
- povexport.py
- povexample.py
- povexample_wood.py
C'est bien entendu le premier fichier, povexport.py
qui est important. Pour faire simple, il doit être présent dans le même répertoire que votre script VPython
. (Les habitués de Python placeront ce script dans un répertoire du PYTHONPATH
par exemple.)
Installation de l'outil povray
Il suffit d'installer le paquet povray.
Écriture du nouveau script VPython
Reprenons notre script d'animation de balle ci-dessus, et modifions le pour créer des fichiers pov
à intervalles réguliers durant l'animation, nous appellerons ce script balle_video.py
:
from visual import * import povexport import os #creating a directory for stocking *.pov files pov_output = 'pov_output' if not os.path.isdir(pov_output): os.mkdir(pov_output) #necessary when exporting to pov file to capture all the scene scene.range = 7 floor = box (pos=(0,0,0), length=4, height=0.5, width=4, color=color.blue) ball = sphere (pos=(0,4,0), radius=1, color=color.red) ball.velocity = vector(0,-1,0) dt = 0.01 for image_num in range(100): rate (100) ball.pos = ball.pos + ball.velocity*dt if ball.y < ball.radius: ball.velocity.y = abs(ball.velocity.y) else: ball.velocity.y = ball.velocity.y - 9.8*dt #exporting to pov file basename = 'balle%3.3i.pov' % (image_num,) filename = os.path.join(pov_output,basename) povexport.export(filename=filename) print filename
Après avoir vérifié que le fichier povexport
est bien présent dans le même répertoire que balle_video.py
, l'exécution du script :
python balle_video.py
va créer 100 fichiers balleXXX.png dans le sous-répertoire pov_output
.
Création des fichiers images png
Déplacez vous dans le répertoire pov_output
:
cd pov_output
La syntaxe pour créer un fichier image png
à partir du fichier texte pov
est :
povray +Oballe000.png balle000.pov
Afin de traiter les 100 fichiers en une seule commande, on va utiliser une boucle. (voir ce tutoriel pour une introduction aux scripts shell) :
for file in *.pov; do povray +O${file%.pov}.png $file; done
qui a créer 100 fichiers png.
Création du fichier image avi
Nous pouvons maintenant encoder les fichiers images png
en fichier vidéo, grâce à mencoder :
mencoder mf://*.png -mf w=320:h=240:fps=10:type=png -ovc lavc -o balle.avi
et visualiser la vidéo créée à l'aide d'un lecteur vidéo.
Désinstallation
Pour supprimer cette application, il suffit de supprimer le paquet python-visual.