Creators Latam · Hoja de animaciones

Video · Animación

Todo entra una vez, sin rebote, y se queda quieto.

Los veintitrés elementos y los diez pares «sí / no», en vivo. Pulsa «Repetir» o «Cámara lenta» en cada uno.

Cinco curvas y el rebote que no usamos

Los elementos

01

Titular apilado con la clave en caja azul

Qué hace
Una a cuatro palabras, una debajo de otra. La clave llega al final y se enciende en una caja azul con texto blanco.
Duración
14 f · 467 ms por palabra en video
300 ms en web
Curva

cubic-bezier(.05, .7, .1, 1)
Detalle
4 f entre palabras · la caja se enciende en 6 f (micro)
Dónde
Gancho de reels y anuncios, y el cambio de idea en el explicativo. Una palabra clave por titular.
Cómo se escribe en Remotion
const a = anim(frame, i * 4, DUR.entrada, 'entrada');       // 14 f, 4 f entre palabras
const estilo = {opacity: a, transform: `translateY(${(1 - a) * 8}px)`};
const azul = anim(frame, 30, DUR.micro, 'micro');               // la caja llega al final, en 6 f
background: `color-mix(in srgb, ${C.encendido} ${azul * 100}%, transparent)`
02

Subtítulo con la palabra que suena en azul

Qué hace
De una a tres palabras por bloque. Se enciende la palabra activa un instante antes de oírla; el bloque cambia con corte seco.
Duración
6 f · 200 ms por palabra en video
150 ms en web
Curva

cubic-bezier(.2, 0, 0, 1)
Detalle
una sola palabra azul a la vez · se enciende 2 f antes de oírla
Dónde
Reels, anuncios y clips de charla, siempre: muchos se ven sin sonido.
Cómo se escribe en Remotion
const d = palabras[i].desde;                       // tiempos de whisper.cpp, en fotogramas
const a = interpolate(frame, [d - 2, d + 4], [0, 1], {
  easing: Easing.bezier(0.2, 0, 0, 1),
  extrapolateLeft: 'clamp', extrapolateRight: 'clamp',
});
const color = mezcla(TINTA, AZUL, a);
03

Rótulo de nombre: primero el fondo, luego el texto

Qué hace
Abajo a la izquierda, 3,5 s. El fondo sale de izquierda a derecha; el nombre entra con un fundido; todo se va con corte seco.
Duración
8 f · 267 ms el fondo, 9 f el texto en video
200 ms en web
Curva

cubic-bezier(0, 0, 1, 1)
Detalle
se sostiene ~3,5 s (aquí 105 f)
Dónde
La primera vez que habla alguien; una vez por persona y por video.
Cómo se escribe en Remotion
const m = anim(frame, ini, 8, 'lineal');          // el fondo se revela
const t = anim(frame, ini + 4, 9, 'lineal');      // el texto llega 4 f después
<div style={{clipPath: `inset(0 ${(1 - m) * 100}% 0 0)`}}>
  <span style={{opacity: t}}>{nombre}</span>
</div>
04

Rótulo de fecha: el mismo gesto del nombre

Qué hace
Día y hora en la primera línea; el lugar debajo. Los datos de ejemplo llevan siempre la palabra «Ejemplo».
Duración
8 f · 267 ms el fondo, 9 f el texto en video
200 ms en web
Curva

cubic-bezier(0, 0, 1, 1)
Detalle
misma entrada que el nombre
Dónde
Cuando el tiempo cuenta: «Martes · 10:47 p. m.» abre «La vida de un chat».
Cómo se escribe en Remotion
// igual que el rótulo de nombre: solo cambia el texto
<Rotulo texto="Martes · 10:47 p. m." ini={6} izq={80} abajo={96} />
05

La cifra sube una vez y se queda quieta

Qué hace
Los dígitos cuentan una vez; la unidad está quieta desde el primer cuadro y el número final se enciende en azul.
Duración
24 f · 800 ms en video
800 ms, una vez en web
Curva

cubic-bezier(.2, 0, 0, 1)
Detalle
azul en 6 f · quieta 1 s como mínimo
Dónde
Una sola cifra por escena. Los precios no cuentan: aparecen quietos.
Cómo se escribe en Remotion
const p = interpolate(frame, [0, 24], [0, 1], {
  easing: Easing.bezier(0.2, 0, 0, 1), extrapolateRight: 'clamp',
});
const valor = Math.round(38 * p);   // tabular-nums: los dígitos no bailan
06

Las barras crecen una por una

Qué hace
Crecen desde la línea base y su valor aparece cuando llegan. Al final, la barra que importa pasa a azul.
Duración
24 f · 800 ms por barra en video
800 ms, una vez en web
Curva

cubic-bezier(.4, 0, 0, 1)
Detalle
6 f entre barras · máximo 6 (con más, todas a la vez)
Dónde
Reporte por vendedor, días, antes y después. Personas en orden alfabético.
Cómo se escribe en Remotion
const largo = (i: number) =>
  MAX * (valor[i] / tope) *
  interpolate(frame, [6 * i, 6 * i + 24], [0, 1], {
    easing: Easing.bezier(0.4, 0, 0, 1), extrapolateRight: 'clamp',
  });
const azul = anim(frame, fin, DUR.micro, 'micro');   // la clave, al final
07

La línea se dibuja; el último punto se enciende

Qué hace
El trazo corre de izquierda a derecha; cuando termina, un punto azul marca el último valor.
Duración
30 f · 1 s en video
300 ms en web
Curva

cubic-bezier(.4, 0, 0, 1)
Detalle
punto azul: 6 f después del trazo
Dónde
Tendencia del día (chats atendidos por hora). Sin cuadrícula y con una sola etiqueta.
Cómo se escribe en Remotion
const L = path.getTotalLength();
const p = interpolate(frame, [0, 30], [0, 1], {
  easing: Easing.bezier(0.4, 0, 0, 1), extrapolateRight: 'clamp',
});
<path strokeDasharray={L} strokeDashoffset={L * (1 - p)} />
08

La espera corre una vez y queda quieta

Qué hace
Las horas corren rápido, una sola vez, hasta las 9:05 a. m.; la línea se llena y la cifra final se enciende.
Duración
30 f · 1 s en video
300 ms en web
Curva

cubic-bezier(.4, 0, 0, 1)
Detalle
nunca en bucle · no en reels de menos de 15 s
Dónde
La tensión del explicativo: «Rosa lleva 10 h 18 min esperando».
Cómo se escribe en Remotion
const p = interpolate(frame, [0, 30], [0, 1], {
  easing: Easing.bezier(0.4, 0, 0, 1), extrapolateRight: 'clamp',
});
const min = Math.round(618 * p);   // 10 h 18 min
const h = Math.floor(min / 60);
const m = String(min % 60).padStart(2, '0');
09

Día 9 de 14: anillo e interruptores

Qué hace
El arco avanza hasta el día 9; después sube el botón del día 9 y su cápsula se enciende en azul. Tres estados: hecho, ahora y por venir.
Duración
24 f el arco · 6 f el botón y 6 f el azul en video
300 ms en web
Curva

cubic-bezier(.4, 0, 0, 1)
Detalle
hecho en tinta · ahora en azul · por venir en gris
Dónde
La historia «Tu piloto», los correos del piloto y la landing. Se elige anillo o hilera por pieza.
Cómo se escribe en Remotion
const C = 2 * Math.PI * r;
const p = interpolate(frame, [0, 24], [0, 1], {
  easing: Easing.bezier(0.4, 0, 0, 1), extrapolateRight: 'clamp',
});
<circle strokeDasharray={C} strokeDashoffset={C * (1 - (9 / 14) * p)} />
const boton = anim(frame, 24, DUR.micro, 'micro');   // sube el botón del día 9
const azul = anim(frame, 30, DUR.micro, 'micro');    // y recién después el color
10

La ruta se dibuja y el mapa se acerca

Qué hace
De lo grande a lo concreto: primero se ve el recorrido, el punto azul marca el destino y la cámara se acerca a él.
Duración
30 f la ruta · 21 f el acercamiento en video
300 ms en web
Curva

cubic-bezier(.4, 0, 0, 1)
Detalle
acercamiento hasta ×1,8 en 21 f (cámara)
Dónde
Dónde está el cliente, el recorrido de un seguimiento o una visita.
Cómo se escribe en Remotion
const p = anim(frame, 6, 30, 'estado');                    // la ruta se dibuja
<path strokeDasharray={L} strokeDashoffset={L * (1 - p)} />
const s = anim(frame, 48, DUR.camara, 'estado', 1, 1.8);     // el mapa se acerca al destino
<div style={{transformOrigin: '900px 250px', transform: `scale(${s})`}} />
11

Cuatro nodos: se enciende uno a la vez

Qué hace
El cable se dibuja, el nodo siguiente se enciende y el anterior pasa a «hecho» en tinta. Tres estados: por venir, hecho y ahora.
Duración
6 f el nodo · 9 f el cable · 30 f entre pasos en video
150 ms en web
Curva

cubic-bezier(.2, 0, 0, 1)
Detalle
cada nodo entra cuando la voz lo nombra
Dónde
Todo el explicativo de dos minutos: el producto completo con un solo foco azul.
Cómo se escribe en Remotion
const t = anim(f, n.cue, 6, 'micro');          // se enciende
const p = anim(f, sig, 6, 'micro');           // pasa a «hecho»
const borde = `color-mix(in srgb, ${C.tinta} ${p * 100}%,
  color-mix(in srgb, ${C.encendido} ${t * 100}%, ${C.linea}))`;
const cable = anim(f, n.cue - 8, 14, 'estado');   // el cable se dibuja antes
12

La burbuja de Rosa llega sin rebote

Qué hace
Aparecen tres puntos, se van y llega el mensaje; la hora sale al final. Nunca crece de golpe ni rebota.
Duración
14 f · 467 ms en video
300 ms en web
Curva

cubic-bezier(.05, .7, .1, 1)
Detalle
escala de 0,92 a 1 · hora en 6 f
Dónde
La escena de tensión («Rosa escribió a las 10:47»), los anuncios del problema y la landing.
Cómo se escribe en Remotion
const t = interpolate(frame, [34, 48], [0, 1], {
  easing: Easing.bezier(0.05, 0.7, 0.1, 1), extrapolateRight: 'clamp',
});
const y = 12 * (1 - t);
const s = 0.92 + 0.08 * t;   // desde la cola de la burbuja
13

El seguimiento sale solo, «aprobado por ti»

Qué hace
La única burbuja encendida llega desde la derecha y, un instante después, aparece «Seguimiento automático · aprobado por ti».
Duración
14 f · 467 ms en video
300 ms en web
Curva

cubic-bezier(.05, .7, .1, 1)
Detalle
el rótulo aparece 18 f después, con fundido lineal de 9 f · solo en horario de atención
Dónde
El centro de todo anuncio o reel del producto, y «Cómo funciona» en la landing.
Cómo se escribe en Remotion
const a = anim(frame, ini, DUR.entrada, 'entrada');   // 14 f
const x = (1 - a) * 28;                                // llega desde la derecha
<div style={{opacity: a, transform: `translateX(${x}px)`}} />
const aprobado = interpolate(frame, [33, 42], [0, 1]); // fundido lineal, 9 f
14

El chat recibe el nombre de su vendedor

Qué hace
«Sin dueño» se apaga; «Asignado a Ana» entra 8 px más abajo y se enciende en azul al final.
Duración
14 f · 467 ms en video
300 ms en web
Curva

cubic-bezier(.05, .7, .1, 1)
Detalle
el azul llega en 6 f (micro)
Dónde
«Cada chat con su vendedor», las demos de Kommo y el nodo 2 del explicativo.
Cómo se escribe en Remotion
const t = interpolate(frame, [8, 22], [0, 1], {
  easing: Easing.bezier(0.05, 0.7, 0.1, 1), extrapolateRight: 'clamp',
});
const y = 8 * (1 - t);
const azul = interpolate(frame, [26, 32], [0, 1]);
15

Reencuadre lento: el reel se acerca un poco

Qué hace
El corte seco se queda quieto y la imagen se acerca despacio, en línea recta. Nunca más de 115 %.
Duración
lo que dure la escena (aquí 3 s) en video
Curva

cubic-bezier(0, 0, 1, 1)
Detalle
lineal, sin curva · origen al 35 % del alto
Dónde
Reels con un solo plano: gancho, cifra y teléfono. Mantiene vivo el cuadro sin cortar.
Cómo se escribe en Remotion
const s = 1 + (hasta - 1) * Math.min(1, frame / dur);   // lineal: 100 → 115 %
<div style={{transformOrigin: '50% 35%', transform: `scale(${s})`}} />
16

El interruptor: la perilla sube, el nombre entra

Qué hace
Las dos cápsulas quedan quietas un instante; la perilla derecha sube y, al llegar arriba, suena un clic. Después sale el nombre.
Duración
15 f · 500 ms en video
300 ms en web
Curva

cubic-bezier(.4, 0, 0, 1)
Detalle
cápsulas quietas 3 f · clic suave a −20 dB en el f 18 · el logo nunca se pone azul
Dónde
Cierra todo video de Creators Latam. En los videos de Martín como autor, la perilla no se anima.
Cómo se escribe en Remotion
const p = interpolate(frame, [3, 18], [0, 1], {
  easing: Easing.bezier(0.4, 0, 0, 1),
  extrapolateLeft: 'clamp', extrapolateRight: 'clamp',
});
const cy = 99.8 - p * 80.4;   // centro del botón
17

El cierre: la marca, una frase y un botón

Qué hace
Primero la perilla y el nombre; después la frase con el personaje; al final el botón. El personaje solo aparece aquí.
Duración
14 f · 467 ms por elemento en video
300 ms en web
Curva

cubic-bezier(.05, .7, .1, 1)
Detalle
cada elemento, 14 f · el botón es el único azul
Dónde
El final de toda pieza: un solo pedido y el logo llega al final.
Cómo se escribe en Remotion
const nom = anim(f, 18, DUR.entrada, 'entrada');        // el nombre, tras la perilla
const tit = anim(f, L(e.cueTitular), DUR.entrada, 'entrada');
const bot = anim(f, L(e.cueBoton), DUR.entrada, 'entrada');
opacity: bot, transform: `translateY(${(1 - bot) * 8}px)`
18

El titular sube desde una línea invisible

Notion
Sube en ~0,33 a 0,4 s; la segunda línea entra ~0,08 s después; se sostiene 1,8 a 2,3 s y se corta.
Nosotros
Sube con la curva de entrada y la segunda línea llega un instante después. Se sostiene y sale con corte seco.
Duración
10 f · 333 ms en video
300 ms en web
Curva

cubic-bezier(.05, .7, .1, 1)
Detalle
10 f · segunda línea 3 f después
Cómo se escribe en Remotion
const y = (1 - anim(frame, 3 * i, 10, 'entrada')) * 112;   // % de la altura de la línea
<div style={{overflow: 'hidden'}}>
  <div style={{transform: `translateY(${y}%)`}}>{linea}</div>
</div>
19

Una palabra se subraya en azul

Notion
Un subrayado a mano se dibuja en ~0,45 s sobre la palabra «new».
Nosotros
Subrayado azul que se dibuja de izquierda a derecha. Helvetica Bold, sin cursiva ni trazo a mano.
Duración
12 f · 400 ms en video
300 ms en web
Curva

cubic-bezier(.4, 0, 0, 1)
Detalle
12 f · 400 ms
Cómo se escribe en Remotion
const sub = anim(frame, 18, 12, 'estado');
<i style={{transform: `scaleX(${sub})`, transformOrigin: 'left'}} />
20

El cursor viaja, hace clic y aparece el resultado

Notion
Cursor visible y clic sobre el elemento; un solo clic por escena.
Nosotros
Viaja con la curva de estado, espera un instante, hace clic y enseguida aparece el resultado.
Duración
21 f el viaje · 5 f el clic en video
300 ms en web
Curva

cubic-bezier(.4, 0, 0, 1)
Detalle
viaje 700 ms · espera 4 f · clic 150 ms · resultado 4 f después
Cómo se escribe en Remotion
const p = interpolate(frame, [0, 21], [0, 1], {
  easing: Easing.bezier(0.4, 0, 0, 1), extrapolateRight: 'clamp',
});
const x = x0 + (x1 - x0) * p;
const y = y0 + (y1 - y0) * p;   // recto
21

Se escribe solo dentro de un campo

Notion
Escribe letra por letra, ~15 letras por segundo, con cursor; en el lanzamiento, a tamaño gigante.
Nosotros
La cámara llega al campo y escribe con el cursor fijo. Una frase de 2 s como máximo.
Duración
21 f el acercamiento · 2 f por letra en video
300 ms en web
Curva

cubic-bezier(.4, 0, 0, 1)
Detalle
acercamiento 21 f · 2 f por letra (66 ms)
Cómo se escribe en Remotion
const n = Math.floor((frame - 24) / 2);              // 2 f por letra (66 ms)
const texto = FRASE.slice(0, Math.max(0, n));
const z = anim(frame, 0, DUR.camara, 'estado', 1, 1.3);   // la cámara llega al campo
22

Acercamiento al detalle, el resto atenuado

Notion
Un acercamiento corto (~0,3 s) a la parte que importa, con el resto fuera de cuadro.
Nosotros
Se acerca hasta ×1,3 y lo demás baja a 40 %. Vuelve con la misma curva. Sin desenfoque.
Duración
21 f · 700 ms en video
Curva

cubic-bezier(.4, 0, 0, 1)
Detalle
21 f · 700 ms
Cómo se escribe en Remotion
const z = interpolate(frame, [0, 21], [0, 1], {
  easing: Easing.bezier(0.4, 0, 0, 1), extrapolateRight: 'clamp',
});
const s = 1 + 0.3 * z;
const resto = interpolate(frame, [6, 15], [1, 0.4]);
23

La espera: tres puntos, una sola pasada

Notion
«Crafting» y tres puntos de color mientras trabaja, en un estado a la vez.
Nosotros
Tres puntos grises que se encienden en tinta uno por uno y, al terminar, corte seco a «Reporte listo» con el único azul.
Duración
6 f por punto · 8 f entre puntos en video
150 ms en web
Curva

cubic-bezier(.2, 0, 0, 1)
Cómo se escribe en Remotion
const punto = (i: number) => anim(frame, 6 + i * 8, 6, 'micro');   // 6 f, uno tras otro
background: mezcla(C.tinta, punto(i) * 100, C.apagado)

Lo que no hacemos

Sí

Entra con la curva de entrada: llega rápido y se asienta en 14 f.

No · rebote

Rebote: el titular se pasa de su sitio y vuelve. Un interruptor de verdad sube una vez y se queda.

Sí

Se enciende una vez, en 6 f, y se queda.

No · parpadeo

Parpadeo: el dueño ya vive entre notificaciones que parpadean.

Sí

Un fundido de 9 f, sin desplazamiento.

No · giro en 3D

Giro en 3D: la traslación se entiende mejor que la rotación, y en el teléfono marea.

Sí

Un botón plano que entra y se queda.

No · brillo o halo

Brillo o halo: en el sistema no hay sombras ni luz.

Sí

El color llega de golpe, en 6 f.

No · degradado que cambia

Degradado que va cambiando: la marca no tiene degradados.

Sí

Cada palabra sube una vez y queda quieta.

No · texto que tiembla

Texto que tiembla: parece un error de la pantalla.

Sí

El guiño es un punto azul que se enciende.

No · confeti

Confeti y partículas: celebrar con ruido le quita seriedad a la cifra.

Sí

Las palabras entran enteras, cada 4 f.

No · letra por letra

Letra por letra en un titular: se lee lento. Solo se escribe dentro de un campo.

Sí

Solo opacidad y 8 px hacia arriba, nítido desde el primer cuadro.

No · desenfoque que se aclara

Desenfoque que se aclara (Diary of a CEO): lo borroso cansa y nuestra marca es nítida.

Sí

Fichas rectas que entran con 3 f de diferencia.

No · fichas inclinadas con rayitas

Fichas inclinadas con rayitas de velocidad (Notion): nuestra marca es recta y no corre.