Skip to main content

valueAtTime e velocidade

valueAtTime permite 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ás
valueAtTime(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 layer
valueAtTime(time - delay)

Referenciando outra layer

// copia a posição de outra layer com delay
var 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 atual
velocityAtTime(key(1).time) // velocidade no momento de um keyframe

Principalmente 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.