Le principe de l'évolution est beaucoup plus rapide en informatique que chez le bipède.
Vous
avez fait une jolie démo graphique et vous voudriez la transformer en
vidéo pour l’uploader sur Dailymotion par exemple, et ce, sans utiliser
votre caméscope… C’est possible!
Il vous suffit de prendre plusieurs screenshots par seconde (24 par
exemple)! Biensûr en temps réel, dès que vous afficher plus d’un ou
deux triangles à l’écran ca devient difficile… Qu’à cela ne tienne!
Nous n’avons qu’à jouer la scène au ralentit ou plutôt au rythme
nécéssaire.
Nous allons en fait mettre à jour les objets de notre scène en leur fournissant le temps qui nous arrange.
Si je veux par exemple que ma vidéo tourne à 24 images per secondes, je procèderais comme suit:
timeUnit = 1.f/24.f;
boucle principale:
{
Mise à jour de la scène avec temps = timeUnit.
Dessin de la scene.
Screenshot!
}
Nous utiliserons ensuite un logiciel comme VideoMach pour compiler toutes les images en une vidéo et hop, le tour est joué!
Pour l’exemple, nous réutiliserons le code du feu d’artifice.
Si ce n’est pas déjà fait, je vous conseil d’allez y jeter un oeil
histoire de comprendre les quelque modifications/ajouts que nous allons
lui apporter.
Tout d’abord, une fonction ‘Screenshot’ (très simple grace à SOIL):
size_t WINDOW_WIDTH = 640; size_t WINDOW_HEIGHT = 480; //////////////////////////////////////////////////////////// /// Sreenshot //////////////////////////////////////////////////////////// void Screenshot(const std::string& filename) { if (!SOIL_save_screenshot((filename+".bmp").c_str(), SOIL_SAVE_TYPE_BMP, 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT)) { std::ostringstream oss; oss << "Failed to save image \"" << filename << "\". Reason : " << SOIL_last_result(); throw std::runtime_error(oss.str()); } }
Vous noterez la présence des variables globales WINDOW_WIDTH et WINDOW_HEIGHT peut élégantes, mais simples pour l’exemple!
Ensuite dans le ‘main’:
On définit juste timeUnit: » float timeUnit = 1.f/24.f; »
Et un compteur qui servira à nomer les images: » size_t i = 0; »
Puis tout ce joue dans la boucle principale:
Le reste ne change pas, mise à part peut-être un test de sortie de boucle différent.
ATTENTION: Cette opération nécessite beaucoup d’éspace disque! 1,3 Go pour le feu d’artifice! Veillez donc à en avoir assez et surtout à ne pas faire de boucle infinie!
Une foi nos quelques images générée, encore faut-il les transformer en vidéo. Je ne connais que VideoMach mais je suppose qu’il existe beaucoup d’autres logiciel dédié à cet effet!
Si vous voulez utiliser VideoMach, pour une utilisation simple, vous
avez juste à aller dans « fichier/open» , séléctionner
l’ensemble de vos image puis « open» ,. Idem pour choisir une
ou plusieurs musiques. Ensuite, vous n’aurez qu’à cliquer sur le petit
disque-dur, choisir codec vidéo et audio, nom du fichier de sortie etc..
Voilà, je vous donne la source (voir ‘ATTENTION’ plus haut), et la vidéo DailyMotion: