Faire rebondir une animation, la faire osciller comme un ressort autour de son point d’arrivée — c’est un classique de l’animation. Vous trouvez des dizaines de scripts et d’extensions qui créent ce type de comportement. Beaucoup sont sophistiqués, payants, et demandent un vrai apprentissage pour les exploiter.
Springs or Bounces, c’est l’opposé : l’outil le plus simple possible. Vous sélectionnez des propriétés animées, vous cliquez sur un bouton, et vous réglez un Pseudo Effect dans le panneau Effets.
L’outil vous permet de choisir entre deux comportements : des oscillations (Springs) autour de la valeur finale — on utilise aussi le terme Overshoot — et des rebonds (Bounces) comme une balle qui perd de l’énergie. L’animation s’adapte à la vitesse finale avec comme contrainte qu’elle ne s’applique pas aux propriétés qui ne peuvent pas recevoir la méthode velocityAtTime() dans les expressions, ce qui est le cas pour l’Orientation (en 3D) ou les propriétés de couleurs ou de tracés par exemple.
Ce petit projet de scripting est devenu un exercice de Vibe Coding : explorer comment faire des boutons SVG, comment construire des Pseudo Effects.
Installation
- Téléchargez le dernier fichier .zxp dans les releases GitHub.
- Allez dans Fichier > Scripts > Installer le panneau ScriptUI…
- Sélectionnez le fichier téléchargé et cliquez sur Redémarrer After Effects
- Ouvrez-le via Fenêtre > Springs or Bounces.jsx
Un panneau – 4 boutons
Applique une oscillation amortie après une image clé, quand la vitesse devient nulle, à la fin d’une animation ou dans une pause entre des mouvements. Pour une bonne oscillation, surtout pas de lissage mais au contraire une accélération. Vous contrôlez :
- Expressions — Active ou désactive l’expression
- Amplitude — Augmente ou diminue la vitesse acquise au départ de l’oscillation
- Frequency — Nombre d’oscillations par seconde
- Number of springs — Nombre d’oscillations de part et d’autre de la valeur finale (pas nécessairement un nombre entier)
- Extra damping — Augmente le taux de décroissance des oscillations
- Rebounds — Une case pour forcer un rebond ce qui peut être utile avec un pourcentage qui ne peut pas dépasser 100% (pour un vrai rebond, utilisez Bounces)
La propriété rebondit sur sa destination comme une balle. Chaque rebond est plus court que le précédent, jusqu’à s’immobiliser. Vous contrôlez :
- Expressions — Active ou désactive l’expression
- First bounce duration (f) — la durée du premier rebond en images
- Damping — le pourcentage que chaque rebond perd par rapport au
précédent - Amplitude — l’intensité du rebond initial
Efface l’expression et le contrôle de toutes les propriétés sélectionnées. Si vous en aviez sélectionné plusieurs et que seules certaines portaient l’effet, les autres gardent leur contrôle (renommé pour éviter les orphelins).
Ouvre un court guide dans le script.
Choix de design
L’animation produite s’appuie sur les images clés que vous avez créées. Le script crée une expression qui regarde la vélocité avec laquelle votre propriété arrive à sa destination — la dernière image clé ou une pause dans l’animation — puis laisse cette énergie se dissiper en rebonds ou oscillations à partir de là.
Bounces atterrissent exactement sur les images.
Chaque rebond dure un nombre entier d’images. Le premier dure « First bounce duration (f) », les suivants se réduisent chacun de Damping % jusqu’à zéro. Chaque rebond se fait exactement sur une image.
Springs définit un nombre d’oscillations
Vous contrôlez exactement le nombre d’oscillations, c’est moins exact physiquement mais plus précis à contrôler.
Les contrôleurs.
Le script crée un Pseudo Effect pour chaque application — un par calque ou un par propriété selon le modificateur Alt-clic (Option sur Mac) :
Si par exemple vous sélectionnez Position, Echelle et Rotation et appliquez un Spring, un Pseudo Effect nommé ‘Springs – Position, Echelle, Rotation‘ est ajouté, (au-delà de trois propriétés, ils sont numérotés), si vous maintenez Alt / Option enfoncé : trois Pseudo Effects sont ajoutés nommés : ‘Springs – Position‘, ‘Springs – Echelle‘, ‘Springs – Rotation‘.
Ré-appliquer le script sur une propriété déjà pilotée la détache de son ancien contrôle d’abord — supprimé s’il n’y a rien d’autre qui l’utilise — aucun effet orphelin n’est jamais laissé traîner.
Ctrl-clic (Cmd sur Mac) met le contrôle sur un calque partagé appelé « Control Layer » si vous préférez tout piloter depuis un seul endroit. Les caméras, lumières et modèles 3D, qui ne peuvent pas avoir d’effets, l’utilisent automatiquement.
Vibe Coding et explorations techniques
Dans ce script je teste une autre façon d’utiliser des Pseudo Effects.
Normalement, pour ajouter un Pseudo Effect à un script, vous :
- le créez avec Pseudo Effect Maker
- l’exportez en .ffx
- convertissez le .ffx en binary blob (à l’aide d’un autre script)
- recopiez ça dans votre code JSX
Le binary blob est une chaîne binaire encodée illisible, modifier un paramètre du Pseudo Effect implique de tout recommencer !
Mais quand j’ai vu que l’extension Atom générait des Pseudo Effects à la demande, j’ai découvert qu’on pouvait les génèrer directement les Pseudo Effects en structures de données lisibles. Les paramètres sont maintenant en clair dans le script. Je peux éditer le Pseudo Effect directement dans le script.
Mais les Pseudo Effects posent pas mal de problèmes et sont une très vieille technologie, il serait temps qu’Adobe fasse quelque chose à ce sujet comme je le propose ici : une demande de fonctionnalité que j’ai ouverte sur le forum Adobe.
J’ai aussi expérimenté la création des boutons à partir de chemins SVG — `M`, `L`, `C` dessinés avec l’API `Graphics` de ScriptUI
Le tout a été vibe vodé avec Claude Code (application Desktop) et l’extension Atom.



