vers l'index général de l'aide

vers la page sur les animations

exemples d'animations simples

Essayons d'animer une boule qui roule par terre, et voyons pas à pas l'élaboration de cette petite animation.

plantons le décor

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 }
}


  

La sphère est demandée sur le plateau !!!!

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
}


  

silence !!!! Ca tourne....

... 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)


une mise en scène plus dynamique

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)


et le web, dans tout ça ?

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)