Skip to main content

Sistema de animação modular

Em vez de cada layer ter sua própria animação independente, você cria uma estrutura onde mudar a master atualiza tudo, e mudar um parâmetro no nulo responde em todo o sistema.

A estrutura

[NULL "CONTROLES"]
├── Slider: Delay entre layers (frames)
├── Slider: Velocidade geral
└── Checkbox: Ativar/desativar efeito
[LAYER_MASTER] (pode ser invisível, só carrega a animação)
└── Keyframes de Position/Scale/Opacity
[LAYER_01, 02, 03...] (layers visíveis)
└── Expressões que referenciam LAYER_MASTER com delay

Implementação

O nulo de controles

Crie um nulo e adicione:

  • Slider “Delay” (default: 3)
  • Slider “Scale Multiplier” (default: 100)
  • Checkbox “Show Grid” (default: 1)

A layer master

Crie uma layer (pode ser um nulo) com a animação que você quer que todas façam:

Frame 0: Position Y = 1200 (embaixo da tela)
Frame 20: Position Y = 500 (posição final)

Adicione loopOut() se quiser que o sistema repita.

As layers escravas

Em cada layer visível, aplique em Position:

var ctrl = thisComp.layer("CONTROLES");
var delayFrames = ctrl.effect("Delay")("Slider");
var delay = delayFrames * thisComp.frameDuration;
// delay proporcional ao index
var myDelay = delay * (thisLayer.index - 1);
thisComp.layer("LAYER_MASTER").transform.position.valueAtTime(time - myDelay)

Adicionando variação

Para que as layers não sejam cópias idênticas:

var ctrl = thisComp.layer("CONTROLES");
var delayFrames = ctrl.effect("Delay")("Slider");
var delay = delayFrames * thisComp.frameDuration;
var myDelay = delay * (thisLayer.index - 1);
var scaleMult = ctrl.effect("Scale Multiplier")("Slider") / 100;
var masterScale = thisComp.layer("LAYER_MASTER").transform.scale.valueAtTime(time - myDelay);
[masterScale[0] * scaleMult, masterScale[1] * scaleMult]

Sistema de reveal

Padrão muito usado: elemento que se revela após um delay baseado no index.

// opacidade que aparece após (index * delay) segundos
var delay = thisLayer.index * 0.1;
var duration = 0.3; // segundos para ir de 0 a 100%
linear(time, thisLayer.inPoint + delay, thisLayer.inPoint + delay + duration, 0, 100)

Adicione em Opacity de qualquer número de layers. Cada uma aparece após um delay progressivo.

Exportando como template

  1. Finalize o sistema numa comp limpa
  2. Salve como Animation Preset (Animation > Save Animation Preset)
  3. Ou salve o projeto como .aep base

Quando precisar, abra o template, mude os conteúdos das layers, e o sistema de expressões funciona sem alteração.