Skip to main content

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úmero
var 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 segundos
var 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 selecionadas
var 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 ele
var 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 frame
var 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");