Skip to main content

time e framerate

time é a variável mais fundamental das expressões. Entender como o tempo funciona abre a porta pra animação procedural sem nenhum keyframe.

A variável time

Tempo atual da comp em segundos. No frame 0, time = 0. No frame 30 de uma comp a 30fps, time = 1.0.

// rotação que cresce com o tempo
time * 90 // 90° por segundo
// position X que move com o tempo
[time * 200, 540] // 200px/s pra direita

frameDuration e frameRate

thisComp.frameDuration // duração de um frame em segundos (1/24 = 0.0416...)
thisComp.frameRate // frames por segundo (24, 30, 60)
// frames → segundos
var frames = 15;
var seconds = frames * thisComp.frameDuration;
// segundos → frames
var frameAtual = Math.round(time * thisComp.frameRate);

Movimentos baseados em tempo

// rotação contínua: 1 volta por segundo
time * 360
// controlada por slider
var speed = thisComp.layer("CONTROLS").effect("Rotation Speed")("Slider");
time * 360 * speed
// oscilação entre -50 e 50 com período de 2 segundos
var amplitude = 50;
var frequency = 0.5;
Math.sin(time * frequency * Math.PI * 2) * amplitude
// contador de frames no source text
Math.floor(time * thisComp.frameRate).toString()

inPoint e outPoint

thisLayer.inPoint // quando a layer começa
thisLayer.outPoint // quando a layer termina
// tempo relativo ao início da layer
var t = time - inPoint;
// t = 0 quando a layer começa, independente de onde está na timeline

Animações baseadas em t em vez de time sempre começam do zero, independente de onde a layer está posicionada na timeline.