vers l'index général de l'aide
vers la page sur les animations
Essayons d'animer une boule qui roule par terre, et voyons pas à pas l'élaboration de cette petite animation.
Comme d'habitude, prenez une camera, une source lumineuse, et un plan sur lequel notre boule va pouvoir rouler (au hasard..., heu..., un échiquier !!!):
camera { location <2,4,-4> right x*160/120 up y angle 40 look_at <0,1,0> } background { color rgb 0 } light_source { <20,10,-10> color rgb 1 spotlight radius 10 falloff 20 tightness 5 point_at <0,0,0> } plane { y, 0 pigment { checker color rgb 0 color rgb 1 scale 2 } }
Bien, le décor est planté. Voici maintenant notre star:
sphere { 0, 1 pigment { radial frequency 2 rotate x*90 color_map { [0.00 color YellowGreen ] [0.33 color YellowGreen ] [0.33 color OrangeRed ] [0.66 color OrangeRed ] [0.66 color SteelBlue ] [1.00 color SteelBlue ] } } translate y }
... Action !!! La sphère commence sa lente et inéxorable progression. Comme elle est bien centrée à l'origine, il n'y a pas de problème pour la rotation autour de l'axe z. Elle va effectuer un tour complet pendant l'animation, et elle va ainsi parcourir 2*pi le long de l'axe x. Nous allons donc la faire démarrer en x=-pi, et elle terminera en x=pi. La transformation de la sphère va donc être:
rotate -z*360*clock // la rotation autour de l'axe z translate y - pi*x // son point de départ... translate x*2*pi*clock // ... et son parcours sur l'axe x
Les options de la ligne de commande utilisées sont:
- +KFF20 : 20 images à générer
- +W160 : largeur de l'image: 160
- +H120 : hauteur de l'image: 120
- +A0.5 : seuil d'anti-aliasing: 0.5
- -J : pas de jitter utlisé
... et voici le résultat :
format MPG 160x120 (20 Ko)
La caméra, elle aussi, peut être animée, pour donner une animation plus dynamique. On peut par exemple "suivre" le mouvement de la sphère:
camera { location <2,4,-4> right x*160/120 up y angle 40 look_at <-1.5+3*clock,1,0> }
Résultat:
format MPG 160x120 (26 Ko)
On peut aussi "accompagner" le mouvement de la sphère (travelling):
camera { location <2,4,-4> right x*160/120 up y angle 40 look_at <0,1,0> translate (-1 + 2*clock)*x }
Résultat:
format MPG 160x120 (26 Ko)
ou alors tourner autour, un peu (John Woo) ou vraiment beaucoup (Claude Lelouch...):
camera { location <0,4,-5> right x*160/120 up y angle 40 look_at <0,1,0> rotate y*80 // la rotation de départ. Pour Lelouch, rotate -y*160*clock // changer 160 en 3600... et prevoir un tas d'images...;P translate (-pi + 2*pi*clock)*x // la camera pointe toujours sur la sphère }
Résultat:
format MPG 160x120 (42 Ko)
Sur les pages web, on trouve plutôt des animations qui tournent en boucle, sans qu'il n'y ait de saut d'image apparent au moment du "rembobinage". Pour faire rouler notre sphère indéfiniment, il y a deux approches: la force brute et la ruse.
La force brute, c'est que la caméra et la source de lumière suivent la sphère dans son déplacement. Simple, mais pas élégant...
La subtilité, c'est que tous les objets restent immobiles, sauf le plan, qui "glisse" sous la sphère tournant sur elle-même. Mieux même, c'est juste le motif du plan qui se déplace.
Dans un cas comme dans l'autre, le motif du plan va avoir besoin d'une propriété indispensable, il doit être périodique, c'est-à-dire qu'il se répête sur l'axe x (l'axe de déplacement de la sphère), pour qu'au bout de la course, on retrouve exactement le même motif pour le plan. Dans notre cas (checker), un scale pi suffira. Voici le code complet:
#include "colors.inc" camera { location <2,4,-4> right x*160/120 up y angle 40 look_at <0,1,0> } background { color rgb 0 } light_source { <20,10,-10> color rgb 1 spotlight radius 10 falloff 20 tightness 5 point_at <0,0,0> } plane { y, 0 pigment { checker color rgb 0 color rgb 1 scale pi translate -2*pi*clock*x } } sphere { 0, 1 pigment { radial frequency 2 rotate x*90 color_map { [0.00 color YellowGreen ] [0.33 color YellowGreen ] [0.33 color OrangeRed ] [0.66 color OrangeRed ] [0.66 color SteelBlue ] [1.00 color SteelBlue ] } } rotate -z*360*clock translate y }
On n'oubliera pas l'option +KC, puisque que l'on veut une animation en boucle.
Résultat:
format MPG 160x120 (24 Ko)
Note: pour les vidéos AVI et MPG, l'option +KC n'a pas été utilisée, car il semble que le lecteur
multimédia de Microsoft "saute" systématiquement la dernière image quand on le configure en
"rembobinage automatique". Pour le MPG, le rembobinage n'est pas très fluide, il faudrait augmenter
le nombre d'images de l'animation, au détriment de la taille du fichier. Vous pouvez essayer
vous-même.
Rédacteur: Christophe Bouffartigue (Bouf)