Stagger, Delay e Animação de Sistema
Animar um elemento é simples. Animar 20 de forma coerente, sem passar horas copiando keyframe, é onde expressão entra.
Stagger
Em vez de 10 elementos entrarem ao mesmo tempo (mecânico, pesado visualmente), cada um entra com um pequeno delay em relação ao anterior. Sensação de cascata.
Manual: seleciona os keyframes de múltiplas layers no mesmo frame, Keyframe Assistant > Sequence Layers. O after espaça tudo na timeline.
Com expressão: anima só a layer principal, as outras acompanham automaticamente. Se mudar o timing da primeira, as outras seguem.
delay = 3; // frames de delay entre cada layerd = delay * thisComp.frameDuration * (index - 1);valueAtTime(time - d)Cada layer pega o valor que a anterior teria d segundos atrás. Cópia atrasada.
Index é ouro
index é o número da layer na timeline (layer 1 = 1, layer 2 = 2…). Usar index em expressões cria animações que se diferenciam automaticamente por posição na timeline, sem ajustar nada manualmente em cada layer.
Index-based animation
Derivar valores direto do index. Exemplos práticos:
// rotação escalonada por layertime * (index * 30)// layer 1 gira a 30°/s, layer 2 a 60°/s, layer 3 a 90°/s...// hue diferente por layer — distribui cores pelo espectro automaticamenteh = (index / thisComp.numLayers) * 360;valueAtTime
valueAtTime(t) retorna o valor de uma propriedade num tempo diferente do atual. Base pra delays e trails:
delay = 0.1; // segundosvalueAtTime(time - delay)Aplicado numa propriedade animada, a layer copia os keyframes mas atrasados. Ótimo pra trails e seguimentos.
Text Animator: stagger nativo pra texto
O after tem um sistema próprio pra isso em texto. Eu costumava ignorar, hoje uso sempre.
- Seleciona o text layer
Animate > Position(ou outra propriedade)- Adiciona um Range Selector
- Anima o Start e End do Range Selector
O Range Selector define quais caracteres são afetados. Based On define a unidade: caractere, palavra ou linha.
Advanced Selector
Troca pelo Wiggly ou adiciona um Expression Selector pra controle fino por caractere. O modo Smooth ou Spring dá resultado bem mais orgânico entre os caracteres.
Na prática: animo Position Y e Opacity ao mesmo tempo com o mesmo Range Selector. Entra de baixo com fade. Funciona em quase qualquer contexto.
Nulo como hub de controle
Pra projetos com muitos elementos que precisam de timing coordenado, centraliza tudo num lugar:
- Cria um nulo chamado
CONTROLS - Adiciona um Slider Control (
Effect > Expression Controls > Slider) - Nas layers, referencia o slider via expressão
delay = thisComp.layer("CONTROLS").effect("Delay Frames")("Slider");d = delay * thisComp.frameDuration * (index - 1);valueAtTime(time - d)Agora você controla o delay de todas as layers com um único slider. Keyframe o slider em vez de mexer em cada layer.
FX Console ajuda aqui
Pra achar efeitos sem navegar em menu: Ctrl+Space e digita “slider”. Instala o FX Console se ainda não tem.