MÓDULO 2.6

🎬 Cinemático

Nove templates que emulam técnicas de câmera e pós-produção do cinema: tremor de câmera, film burn, ken burns, letterbox, parallax e mais. Cada efeito transforma vídeo comum em narrativa visual com profundidade cinematográfica.

8
Tópicos
50
Minutos
Médio
Nível
Prático
Tipo
Técnicas de câmera e pós-produção → Remotion 📷 Câmera camera-shake whip-pan ken-burns zoom-pulse 🎞️ Composição letterbox-reveal parallax-pan spotlight-reveal 🎨 Pós-prod. film-burn vignette-pulse Remotion: translate + sin + interpolate tremor → sin(frame) * amplitude * decay motion blur → filter blur proporcional à vel. clip-path → spotlight · letterbox · reveal tudo via frame → deterministico Técnica física → fórmula matemática → render perfeito toda vez
1

🎬 Visão geral — imitar o cinema com matemática

Os templates cinemáticos compartilham uma filosofia: cada efeito físico de câmera ou pós-produção pode ser descrito como uma função matemática do frame. Tremor de câmera é sin(frame) com decaimento. Film burn é um gradiente radial com intensidade que varia. Ken Burns é escala + translação linear.

🎯 Três categorias internas

  • Movimento de câmera: camera-shake, whip-pan, ken-burns, zoom-pulse — movem a imagem ou criam a ilusão de movimento de lente.
  • Composição de tela: letterbox-reveal, parallax-pan, spotlight-reveal — controlam o que é visível e como as camadas se relacionam.
  • Efeitos de pós-produção: film-burn, vignette-pulse — sobrepõem camadas de textura ou sombra ao conteúdo.

💡 Combinar com moderação

Efeitos cinemáticos são tempero — use um ou dois por cena, não todos ao mesmo tempo. camera-shake + film-burn no mesmo momento cria um clímax impactante. Os mesmos dois efeitos durante todo o vídeo causam fadiga visual.

9 templates
Nesta categoria
3 sub-grupos
Câmera · comp · pós
sin(frame)
Padrão de tremor
clip-path
Reveals e reveals
2

📳 camera-shake — tremor que decai

O camera-shake simula o tremor de câmera de mão: começa intenso e decai exponencialmente até o movimento parar. A técnica central é sin(frame) multiplicado por uma amplitude que diminui com o frame.

Tremor com decaimento exponencial camera-shake.tsx
const { fps } = useVideoConfig();
// amplitude decai de maxAmp até 0 ao longo do impacto
const maxAmp = 18;
const decayFrames = fps * 1.5;   // 1.5s de tremor
const amplitude = interpolate(
  frame, [0, decayFrames], [maxAmp, 0], { extrapolateRight: "clamp" }
);
const shakeX = Math.sin(frame * 1.7) * amplitude;
const shakeY = Math.cos(frame * 2.3) * amplitude * 0.6;
// aplicar: transform: `translate(${shakeX}px, ${shakeY}px)`

💡 Por que multiplicadores diferentes em X e Y

Os valores 1.7 e 2.3 são intencionalmente não-múltiplos entre si. Se fossem iguais (ou um múltiplo do outro), os ciclos de X e Y se sincronizariam criando um padrão repetitivo visível. Valores primos ou irracionais geram trajetória mais orgânica e caótica — parecida com tremor real.

1

Frame 0 — impacto máximo

A amplitude está no pico. O deslocamento pode ser de ±18px. Use para simular explosão, batida ou corte abrupto.

2

Frames intermediários — decaimento

A amplitude cai linearmente via interpolate. O tremor persiste mas enfraquece, como a vibração após um impacto físico se dissipando.

3

Após decayFrames — estabilidade

extrapolateRight: "clamp" garante que a amplitude não vire negativa. A câmera para completamente e o cena segue estável.

Arquivo
camera-shake.tsx
Técnica
sin * decaimento
Duração
fps * 1.5 padrão
Uso
Impacto · tensão
3

🔥 film-burn — light leak quente

O film-burn sobrepõe manchas de luz alaranjada e amarela que crescem e somem em loop, imitando o efeito de exposição de luz em filme físico. A intensidade das manchas segue uma curva em sino — aparece do nada, atinge o pico no meio e desaparece.

🌡️ A curva em sino da intensidade

O pico no meio cria a sensação de que a luz "vaza" e depois "fecha". Três gradientes radiais com posições oscilantes dão a aparência orgânica e imprevisível do film burn real.

const totalFrames = fps * 3;
// intensidade em sino: 0 → 0.85 → 0
const intensity = interpolate(
  frame,
  [0, totalFrames * 0.5, totalFrames],
  [0, 0.85, 0],
  { extrapolateRight: "clamp" }
);
// posição oscilante para parecer "vazamento" orgânico
const xShift1 = 50 + Math.sin(frame * 0.05) * 30;

✓ O que FAZER

  • Usar em transições entre cenas para esconder o corte.
  • Combinar com noise-grain para o look completo de filme antigo.
  • Ajustar intensidade máxima (0.85) para uso mais ou menos sutil.

✗ O que NÃO fazer

  • Usar em vídeos com paleta de cores fria — o laranja quente contrasta demais.
  • Deixar em loop contínuo — perde o impacto após a segunda ocorrência.
  • Intensidade muito alta (>0.9) sobre texto — ilegível.
Arquivo
film-burn.tsx
Técnica
radial-gradient overlay
Curva
Sino 0→0.85→0
Uso
Transições · estética
4

🎞️ letterbox-reveal — barras pretas que se retraem

O letterbox-reveal começa com barras pretas cobrindo o topo e o fundo da tela — o formato letterbox cinematográfico 2.35:1 — e as retrai ao longo do tempo para revelar a imagem completa. O efeito comunica instantaneamente "este é um momento cinematográfico".

💡 A matemática das barras

Cada barra tem altura inicial que cobre ~12% da tela (o padrão do letterbox 2.35:1 em 16:9). O spring anima essa altura até zero. Como o spring usa clamp, as barras nunca vão para negativo — desaparecem limpos.

Barras com spring reveal letterbox-reveal.tsx
const { height, fps } = useVideoConfig();
const barH = height * 0.12;  // 12% = letterbox 2.35:1
const s = spring({ frame, fps, config: { damping: 18, stiffness: 60 } });
// barra superior: começa em barH e vai para 0
const topBarH = interpolate(s, [0, 1], [barH, 0]);
// div: position absolute, top: 0, height: topBarH, bg: black
Arquivo
letterbox-reveal.tsx
Hook
spring + interpolate
Formato
2.35:1 (12%)
Uso
Intros · abertura
5

🔦 spotlight-reveal — clip-path círculo que expande

O spotlight-reveal usa clip-path: circle() para revelar o conteúdo a partir de um ponto central — como um holofote que se abre. O raio do círculo aumenta de zero até cobrir a tela inteira ao longo do tempo.

🔵 Clip-path circle no CSS

A propriedade clip-path: circle(rPx at xPx yPx) é suportada nativamente e performática no browser. No render do Remotion ela é renderizada via Puppeteer com suporte total. O raio pode ser calculado como percentagem da diagonal da tela para garantir cobertura total.

const { width, height, fps } = useVideoConfig();
const maxRadius = Math.sqrt(width ** 2 + height ** 2) / 2;
const s = spring({ frame, fps, config: { damping: 20, stiffness: 50 } });
const radius = s * maxRadius;
// style: clipPath: `circle(${radius}px at 50% 50%)`

✓ O que FAZER

  • Mudar o centro (at X% Y%) para revelar de um canto ou de onde o olho deve ir primeiro.
  • Usar damping alto (>18) para um reveal suave sem bounce.
  • Combinar com vignette-pulse para manter o foco mesmo após o reveal.

✗ O que NÃO fazer

  • Usar raio menor que a diagonal — deixa cantos escuros visíveis.
  • Stiffness muito alto — spring com bounce no reveal de imagem parece glitch.
  • Aplicar em transições muito curtas (<15 frames) — o efeito não aparece.
Arquivo
spotlight-reveal.tsx
Técnica
clip-path circle
Raio
0 → diagonal/2
Uso
Reveal dramático
6

🌑 vignette-pulse vs. whip-pan — dois estilos opostos

O vignette-pulse é sutil e emocional: escurece as bordas da tela em pulso, focando o olhar no centro. O whip-pan é agressivo e dinâmico: um deslocamento horizontal rápido com blur simulando o pan de câmera em velocidade máxima.

vignette-pulse — sutil, foco

  • Radial gradient preto nas bordas com opacidade pulsante via sin wave.
  • Opacidade: 0.3 + sin(frame * 0.1) * 0.15 — pulso suave e lento.
  • Ideal para documentários, entrevistas, foco narrativo.

whip-pan — energético, corte

  • TranslateX rápido com motion blur via filter: blur() proporcional à velocidade.
  • Velocidade: interpolate(frame, [0, dur/2, dur], [0, maxVel, 0]).
  • Ideal para transições entre cenas, vídeos de ação, montagens rápidas.
Motion blur por velocidade whip-pan.tsx
const velocity = interpolate(
  frame, [0, durationInFrames / 2, durationInFrames],
  [0, 400, 0], { extrapolateRight: "clamp" }
);
const blurAmount = Math.abs(velocity) / 80;
// style: { transform: `translateX(${velocity}px)`, filter: `blur(${blurAmount}px)` }
vignette
sin wave opacity
whip-pan
velocity + blur
Vignette
Foco emocional
Whip
Transição veloz
7

📚 Biblioteca completa — todos os 9 templates

Referência rápida para todos os templates cinemáticos com arquivo, técnica central e contexto de uso.

TemplateArquivoTécnica central
camera-shake camera-shake.tsx sin(frame) × amplitude decaente
film-burn film-burn.tsx radial-gradient overlay curva sino
ken-burns ken-burns.tsx CSS animation scale + translate
letterbox-reveal letterbox-reveal.tsx spring · barras 12% → 0
parallax-pan parallax-pan.tsx interpolate · translateX por camada
spotlight-reveal spotlight-reveal.tsx spring · clip-path circle() 0→diagonal
vignette-pulse vignette-pulse.tsx radial-gradient · sin wave opacity
whip-pan whip-pan.tsx translateX velocidade · blur proporcional
zoom-pulse zoom-pulse.tsx sin(frame) · scale em pulso rítmico
Total
9 templates
Câmera
4 templates
Composição
3 templates
Pós-prod.
2 templates

📌 Resumo do módulo

Três categorias — movimento de câmera, composição de tela e pós-produção. Cada uma resolve um problema diferente.
camera-shakesin(frame) × amplitude com decaimento via interpolate. Multiplicadores não-múltiplos criam trajetória orgânica.
film-burn — curva em sino (0→0.85→0) com gradientes radiais de posição oscilante.
spotlight-revealclip-path: circle() com raio crescendo de zero até a diagonal completa.
Moderação — um ou dois efeitos cinemáticos por cena. Todos juntos destroem o impacto individual.

Conclusão da Trilha 2:

Você dominou as três categorias de recursos visuais do Remotion: imagem & mídia, backgrounds e efeitos cinemáticos. A Trilha 3 — Combinação — mostra como encadear esses templates em sequências narrativas completas.