Aperçu d’une vidéo Endless Bounces
Experiment2026Featured

Endless Bounces

Moteur de simulation physique qui génère des vidéos satisfaisantes prêtes à publier sur TikTok.

Format
1080×1920 @ 60 fps
Audio
Remixé image par image
Stack
PythonPygameFFmpeg

À propos

Une balle doit s’échapper d’une série d’anneaux concentriques percés d’un trou avant la fin du chrono. Chaque anneau franchi disparaît dans une pluie de particules et les suivants se resserrent. Le projet est un générateur complet : la simulation tourne, puis se transforme automatiquement en vidéo verticale prête à poster.

Mon rôle

  • Moteur physique maison : intégration d’Euler semi-implicite, restitution supérieure à 1 pour que la balle accélère, plafond de vitesse et détection de franchissement par intersection segment/cercle pour éviter le tunneling
  • Rendu procédural des anneaux : trous angulaires aléatoires avec seed reproductible, rotation, dégradés radiaux ou par anneau, traînée et particules de disparition
  • Pipeline d’export déterministe : delta time fixe pendant la capture pour garantir un nombre exact de frames, puis assemblage FFmpeg en H.264 optimisé mobile
  • Reconstruction de la bande-son : chaque rebond est enregistré avec son timestamp et son volume dans un JSON, que FFmpeg remixe ensuite piste par piste

Impact

  • Chaîne complète simulation → vidéo publiable, sans aucune étape de montage manuel
  • Audio parfaitement synchronisé avec l’image, ce qu’une capture temps réel ne permet pas d’obtenir
  • Une centaine de paramètres centralisés qui permettent de décliner de nouvelles variantes visuelles sans toucher au moteur
  • Compte TikTok @endlessbounces alimenté avec les vidéos produites

Galerie

Profil TikTok @endlessbounces et sa grille de vidéos publiées
Le compte @endlessbounces : une palette différente par vidéo
Vidéo Endless Bounces en palette verte, 14 anneaux restants
Variante verte — 36,4 K vues
Vidéo Endless Bounces en palette bleue, 47 anneaux restants
Variante bleue — 13,8 K vues
Vidéo Endless Bounces en palette orange, 10 anneaux restants
Variante orange — dégradé rouge vers jaune