Scripts que Uso no Dia a Dia no after
Esses scripts resolvem problemas reais que aparecem todo dia. Alguns são simples, outros mais elaborados, todos economizam tempo real.
Renomear layers com numeração
// Renomeia layers selecionadas com prefixo + númerovar comp = app.project.activeItem;var selected = comp.selectedLayers;
if (selected.length === 0) { alert("Selecione ao menos uma layer.");} else { app.beginUndoGroup("Renomear layers"); for (var i = 0; i < selected.length; i++) { selected[i].name = "Element_" + ("00" + (i + 1)).slice(-2); } app.endUndoGroup();}Distribuir layers no tempo
// Distribui as layers selecionadas com intervalo de X segundosvar comp = app.project.activeItem;var layers = comp.selectedLayers;var interval = 0.1; // segundos entre cada layer
app.beginUndoGroup("Distribuir layers");for (var i = 0; i < layers.length; i++) { var duration = layers[i].outPoint - layers[i].inPoint; layers[i].startTime = i * interval; layers[i].inPoint = layers[i].startTime; layers[i].outPoint = layers[i].startTime + duration;}app.endUndoGroup();Copiar expressão para layers selecionadas
// Cola uma expressão de Opacity em todas as layers selecionadasvar comp = app.project.activeItem;var layers = comp.selectedLayers;var expressao = "wiggle(2, 30)";
app.beginUndoGroup("Aplicar expressao");for (var i = 0; i < layers.length; i++) { var opacity = layers[i].property("Opacity"); opacity.expression = expressao;}app.endUndoGroup();Criar nulo controller automaticamente
// Cria um nulo e parenta todas as layers selecionadas a elevar comp = app.project.activeItem;var selected = comp.selectedLayers;
if (selected.length === 0) { alert("Selecione as layers para parear."); exit();}
app.beginUndoGroup("Criar nulo controller");
var nullLayer = comp.layers.addNull(comp.duration);nullLayer.name = "CTRL_" + selected[0].name;nullLayer.label = 2; // vermelho
for (var i = 0; i < selected.length; i++) { selected[i].parent = nullLayer;}
nullLayer.selected = true;app.endUndoGroup();Exportar dados de posição para JSON
// Exporta posição de todas as layers por framevar comp = app.project.activeItem;var fps = comp.frameRate;var totalFrames = Math.round(comp.duration * fps);var result = "{";
for (var i = 1; i <= comp.numLayers; i++) { var layer = comp.layer(i); result += '"' + layer.name + '": [';
for (var f = 0; f < totalFrames; f++) { var t = f / fps; var pos = layer.property("Position").valueAtTime(t, false); result += '[' + pos[0].toFixed(2) + ',' + pos[1].toFixed(2) + ']'; if (f < totalFrames - 1) result += ','; }
result += ']'; if (i < comp.numLayers) result += ',';}
result += '}';
var file = new File("~/Desktop/ae_positions.json");file.open("w");file.write(result);file.close();alert("Exportado para ~/Desktop/ae_positions.json");