valueAtTime e velocidade
valueAtTimepermite que uma propriedade acesse seu próprio valor em qualquer momento no tempo. É a base dos delays, trails e do inertial bounce.
Básico
// acessa o valor 0.5s atrásvalueAtTime(time - 0.5)Aplicado numa propriedade animada, a layer copia sua própria animação com delay.
Múltiplas layers seguindo a mesma animação com delay progressivo:
var delay = (index - 1) * 0.1; // 0.1s de delay por layervalueAtTime(time - delay)Referenciando outra layer
// copia a posição de outra layer com delayvar outraLayer = thisComp.layer("Leader");outraLayer.transform.position.valueAtTime(time - 0.3)Trail de layers seguindo uma líder com delays progressivos.
velocityAtTime
Retorna a velocidade de uma propriedade num determinado momento:
velocityAtTime(time) // velocidade atualvelocityAtTime(key(1).time) // velocidade no momento de um keyframePrincipalmente usado no inertial bounce.
Inertial bounce
n = 0;if (numKeys > 0) { n = nearestKey(time).index; if (key(n).time > time) n--;}if (n == 0) { t = 0;} else { t = time - key(n).time;}if (n > 0) { v = velocityAtTime(key(n).time - thisComp.frameDuration / 10); amp = 0.08; freq = 3.0; decay = 6.0; value + v * amp * Math.sin(freq * t * 2 * Math.PI) / Math.exp(decay * t);} else { value;}Lê a velocidade no momento do último keyframe e cria um bounce decrescente. Ajusta amp (intensidade), freq (frequência) e decay (quão rápido para).
smooth()
Suaviza uma propriedade calculando uma média ao longo do tempo:
smooth(0.2, 5) // janela de 0.2s, 5 amostrasÚtil pra suavizar dados ruidosos: rastreamento de posição, dados de áudio, qualquer coisa que tremula.