Martin Jude

Ressources gratuites

Des scripts After Effects que j'utilise moi-même — copier, coller, c'est fait.

After Effects

Dupliquer & renommer les calques

Duplique le calque sélectionné N fois dans la composition active, en incrémentant automatiquement le nom et en décalant le point d'entrée de chaque copie.

script.jsx
// Duplicate & Rename Layers
// Duplicates the selected layer(s) N times, incrementing name and stagger offset.
(function duplicateAndRename() {
  var comp = app.project.activeItem;
  if (!(comp && comp instanceof CompItem)) {
    alert("Select or open a composition first.");
    return;
  }

  var selectedLayers = comp.selectedLayers;
  if (selectedLayers.length === 0) {
    alert("Select at least one layer to duplicate.");
    return;
  }

  var count = parseInt(prompt("How many copies?", "5"), 10);
  var staggerFrames = parseInt(prompt("Stagger offset (frames)?", "2"), 10);
  if (isNaN(count) || count < 1) return;

  app.beginUndoGroup("Duplicate & Rename Layers");

  for (var i = 0; i < selectedLayers.length; i++) {
    var source = selectedLayers[i];
    var baseName = source.name.replace(/\s\d+$/, "");

    for (var n = 1; n <= count; n++) {
      var copy = source.duplicate();
      copy.name = baseName + " " + (n + 1);
      copy.startTime = source.startTime + n * staggerFrames * comp.frameDuration;
    }
  }

  app.endUndoGroup();
})();
After Effects

Expression d'overshoot

Expression à coller sur Scale ou Position qui ajoute un léger rebond ressort par-dessus vos keyframes existantes — aucune keyframe supplémentaire nécessaire.

overshoot.js
// Overshoot Ease Expression
// Apply to Scale or Position. Adds a spring overshoot on top of existing keyframes.
amp = 0.08; // overshoot amount (fraction of the value change)
freq = 3.0; // oscillations per second
decay = 6.0; // how quickly the overshoot settles

n = 0;
if (numKeys > 0) {
  n = nearestKey(time).index;
  if (key(n).time > time) n--;
}

if (n === 0) {
  value;
} else {
  t = time - key(n).time;
  v = velocityAtTime(key(n).time - thisComp.frameDuration / 10);
  value + v * amp * Math.sin(freq * t * 2 * Math.PI) * Math.exp(-decay * t);
}