Skip to main content

Workflow Modular

Não constrói animação. Constrói sistema. Quando o cliente pede 9:16, você não refaz nada.

A ideia é simples: master comp com pré-comps autônomas, tudo conectado a uma null de controles. Muda o slider, o projeto inteiro muda junto.

Master comp

A master comp é o output final. Ela não anima nada diretamente: só organiza pré-comps no espaço e no tempo.

MASTER COMP (16:9)
├── [PRE-COMP] background
├── [PRE-COMP] logo animation
├── [PRE-COMP] title block
├── [PRE-COMP] CTA
└── [NULO] CONTROLS

Pra versão 9:16, cria uma nova master comp com as mesmas pré-comps reposicionadas. Zero retrabalho na animação.

Nulo CONTROLS

Toda master modular tem um nulo de controles. Aqui moram os sliders que definem os parâmetros globais:

NULO: [CONTROLS]
├── slider: "Duração Total" (15, 30, 60 segundos)
├── slider: "Versão" (1 = padrão, 2 = var A, 3 = var B)
├── slider: "Cor Principal" (0-360, hue HSL)
├── slider: "Logo Scale" (100 = padrão)
├── checkbox: "Mostrar CTA"
└── slider: "Offset de Entrada" (delay geral)

Cada elemento referencia esses sliders. Versão de 30 segundos: muda o slider. Outra paleta: gira o hue.

Referenciando de dentro de uma pré-comp

// dentro de uma pré-comp, puxa da master comp pelo nome
masterComp = comp("MASTER COMP");
ctrl = masterComp.layer("[CONTROLS]");
dur = ctrl.effect("Duração Total")("Slider");
offset = ctrl.effect("Offset de Entrada")("Slider");

Caution

Isso cria dependência de nome entre pré-comp e master comp. Documenta quais pré-comps dependem de qual master.

Duração dinâmica

// timing proporcional à duração total
// elemento que entra em 20% e sai em 80% sempre
ctrl = comp("MASTER COMP").layer("[CONTROLS]");
totalDur = ctrl.effect("Duração Total")("Slider");
entryAt = totalDur * 0.20;
exitAt = totalDur * 0.80;
// loop que preenche a duração disponível
// coloca no Time Remap da pré-comp
loopOut("cycle")

Sistema de cores

Em vez de cor hardcoded em cada shape, deriva tudo de um hue central. Gira um slider e toda a paleta muda.

// converte slider de HUE em cor RGB pro Fill Effect
ctrl = thisComp.layer("[CONTROLS]");
hue = ctrl.effect("Cor Principal")("Slider") / 360;
sat = 0.85;
lig = 0.55;
function hue2rgb(p, q, t) {
if (t < 0) t += 1;
if (t > 1) t -= 1;
if (t < 1/6) return p + (q - p) * 6 * t;
if (t < 1/2) return q;
if (t < 2/3) return p + (q - p) * (2/3 - t) * 6;
return p;
}
q = lig < 0.5 ? lig * (1 + sat) : lig + sat - lig * sat;
p = 2 * lig - q;
r = hue2rgb(p, q, hue + 1/3);
g = hue2rgb(p, q, hue);
b = hue2rgb(p, q, hue - 1/3);
[r, g, b, 1]
// cor complementar automática: hue + 180°
ctrl = thisComp.layer("[CONTROLS]");
hue = (ctrl.effect("Cor Principal")("Slider") + 180) % 360;
// ... mesmo código de conversão acima

Multi-formato sem retrabalho

PROJECT/
├── MASTER_16x9/ 1920×1080
├── MASTER_9x16/ 1080×1920
├── MASTER_1x1/ 1080×1080
└── PRE-COMPS/
├── LOGO_ANIM/
├── TITLE_BLOCK/
└── BACKGROUND/

Expressões de posicionamento relativo:

// centraliza horizontalmente em qualquer formato
[thisComp.width / 2, value[1]]
// ancora ao rodapé
[value[0], thisComp.height * 0.92]
// escala pra preencher a comp (fit to comp)
compW = thisComp.width;
compH = thisComp.height;
srcW = 1920;
srcH = 1080;
scaleX = compW / srcW * 100;
scaleY = compH / srcH * 100;
[Math.max(scaleX, scaleY), Math.max(scaleX, scaleY)]

Versões por slider

// posição do logo baseada na versão
ctrl = thisComp.layer("[CONTROLS]");
versao = ctrl.effect("Versão")("Slider");
if (versao == 1) {
[160, value[1]]
} else if (versao == 2) {
[thisComp.width / 2, value[1]]
} else {
[thisComp.width - 160, value[1]]
}
// visibilidade por checkbox
ctrl = thisComp.layer("[CONTROLS]");
mostrarCTA = ctrl.effect("Mostrar CTA")("Checkbox");
mostrarCTA ? 100 : 0

Essential Graphics pra expor controles de pré-comp

Parâmetros de uma pré-comp aparecem editáveis diretamente na master comp, sem entrar na pré-comp.

  1. Dentro da pré-comp: Window > Essential Graphics
  2. Arrasta as propriedades que quer expor (texto, cor, slider)
  3. Na master comp, seleciona a pré-comp e abre Effect Controls
  4. Os parâmetros aparecem lá

Ótimo pra entregar template pro cliente ou pra um editor que não deve mexer na estrutura interna. Tem mais detalhes na página de Essential Graphics.

Checklist

  • nulo CONTROLS criado com todos os sliders necessários
  • estrutura de pré-comps definida (background, hero, overlay, CTA)
  • posicionamentos usando expressões relativas (%, não px fixo)
  • duração controlada por slider, não por tamanho de comp
  • paleta derivada de um hue central por expressão
  • Essential Graphics nas pré-comps que serão reutilizadas
  • master comps criadas pra todos os formatos
  • pasta de renders organizada por formato
[CLIENTE]_[CAMPANHA]_[VERSÃO]_[FORMATO]_[DATA]
ex: nike_run_v2_9x16_2026-03