Motion Graphics de Nível Mundial no After Effects: o processo
Trabalhe nas bases compartilhadas, siga o modo relevante e, em seguida, finalize com QA e entrega:
- Parte A – Conectar ao After Effects. Estabeleça um controle confiável de sua própria instância do AE.
- Parte B – Regras que sempre se aplicam. Leia as regras de animação e editabilidade compartilhadas antes de construir.
- Parte C – Processo RECRIAR. Combine uma referência por meio de análise, medição e comparação.
- Parte D – Processo CRIAR. Desenvolva um filme original por meio de pesquisa, conceito, história e construção.
- Parte E – Finalizar. Verifique a renderização final e empacote os entregáveis solicitados.
Modos de trabalho
| Modo | Objetivo | Como começa |
|---|---|---|
| RECRIAR | Combinar um vídeo de referência 1:1 em tempo, layout, movimento e aparência, reconstruído nativamente. | Analisar e medir a referência; ela define a história. |
| CRIAR | Fazer um filme original para uma marca ou produto. | Pesquisa, conceito, história e moodboard, seguidos pela construção. |
Parte A – Conectar ao After Effects
O objetivo é uma instância privada, confiável e scriptável do After Effects que nenhum outro agente possa perturbar, e que você possa dirigir sem tocar na GUI.
A1. Inicie sua própria instância
- Registre os PIDs do AE em execução:
pgrep -f "Contents/MacOS/After Effects". - Inicie uma nova instância:
Um pequeno launcher Swift (open -n "/Applications/Adobe After Effects 2026/Adobe After Effects 2026.app" --args -mNSWorkspace.openApplicationcomcreatesNewApplicationInstance=truee args-m -ApplePersistenceIgnoreState YES) pode fazer o mesmo e retornar o PID diretamente.- Não inicie o binário bruto através de
subprocess.Popen. Esse processo não está registrado no bundle e não pode receber AppleEvents.
- Não inicie o binário bruto através de
- Diferencie as listas de PID e retenha o novo PID para comandos subsequentes.
- O AE pode ser respawnado sob um novo PID após a inicialização. Pegue o PID que possui a janela principal "Adobe After Effects" (Quartz
CGWindowListCopyWindowInfo). - O bundle id é
com.adobe.AfterEffects.application.
- O AE pode ser respawnado sob um novo PID após a inicialização. Pegue o PID que possui a janela principal "Adobe After Effects" (Quartz
- Dispense os diálogos de inicialização (Crash Repair → Continue). Uma janela de login da Adobe nessas instâncias é um conhecido bug de exibição: ignore-a, nunca insira credenciais e não a escale para o usuário.
ensure_ae.pyautomatiza tudo isso: reinicia quando o PID morre, confirma os pequenos diálogos, detecta o PID respawnado e reabre o projeto.
A2. Comunique-se com ele apenas pelo PID
tell application "Adobe After Effects 2026"atinge qualquer instância, incluindo as de outros agentes. Nunca use.aedo(Swift) envia o AppleEventmisc/dosc(DoScript) para um PID.ae.py script.jsxouae.py -e "code"envolve cada script:- inclui o polyfill JSON ES3 (
json.jsx); - chama
app.beginSuppressDialogs(); - executa
$.evalFiledentro de try/catch; - escreve
{ok, value, error, line, file, ms}em um arquivo de resultado. Os valores de retorno do AppleEvent são não confiáveis, então sempre leia o arquivo.
- inclui o polyfill JSON ES3 (
- Guarda de identidade do projeto: antes de qualquer script de mutação, verifique o PID alvo e
app.project.fileem relação ao projeto que está sendo editado. Nunca feche ou saia de uma instância que você não verificou ser sua. - Execute um script do AE por vez. Os scripts geralmente não são idempotentes, então faça backup ou Salvar Como antes de alterações em massa.
A3. Verificação de integridade antes do trabalho real
Com um script, leia:
app.versione se o projeto é seu;- o renderizador da comp (
ADBE Advanced 3dé necessário para camadas de Modelo 3D e luzes de ambiente); - fontes:
app.fonts.getFontsByPostScriptName(name).lengthdeve ser maior que 0 para cada fonte que você planeja usar; - que um teste
saveFrameToPngaparece no disco.
Defina também a preferência que permite que scripts escrevam arquivos e acessem a rede (Pref_SCRIPTING_FILE_NETWORK_SECURITY).
A4. O pipeline de construção: dados → projeto nativo
Use os auxiliares de construção disponíveis ou implemente equivalentes; os nomes dos auxiliares abaixo descrevem suas funções.
-
Python descreve o filme como dados. Uma DSL
kit.pyfornece:K()chaves esparsas com eases nomeadas;shape,text,precomp,null,camera,model,L(camadas);- efeitos por matchName, máscaras, track mattes, expressões, marcadores, notas, rótulos.
Combine especificações de cena em uma única especificação de construção.
-
kit.jsxconstrói camadas nativas a partir da especificação.- Ela cria camadas de baixo para cima, para que já estejam na ordem final. Evite reordenação em massa com
moveTo, que pode travar o AE. - Em seguida, aplica parentesco, efeitos, máscaras, transformações, eases, mattes e fiação de luz ambiente.
- Ela cria camadas de baixo para cima, para que já estejam na ordem final. Evite reordenação em massa com
-
build.py spec.json --new --only "A|B" --stills "Comp:t1,t2" --save output.aep--newfecha o projeto atual sem salvar primeiro (CloseOptions.DO_NOT_SAVE_CHANGES). Caso contrário,newProject()abre um diálogo Salvar Como e trava.
-
Stills:
stills.py "Comp" t1,t2 prefix.saveFrameToPngé assíncrono (polle até o arquivo existir) e escreve PNGs de 16 bits (divida por 257 antes da visualização em 8 bits).
-
Renderizações de movimento direcionadas:
render.py "Comp" start end out.mp4 [--half] [--hq], ou aerender com-s/-e. -
Renderizações completas:
aerender_job.py "Comp" out.mp4 [--half] [--hq].- Salva uma cópia do job e executa
aerender -project job.aep -rqindex 1 -sound ONem um processo separado. - É mais rápido que a fila no aplicativo, e uma falha não pode derrubar a instância de trabalho.
- Salva uma cópia do job e executa
-
Folhas de contato:
contact.py(quadros de um vídeo) esheet.py(stills, mantém a proporção). Sempre reduza as imagens antes de visualizá-las.
A5. Regras do ExtendScript (ES3)
- Sem
JSONe semArray.indexOf: use o polyfill ou loops. Leia JSON comeval('('+text+')'). - Nunca use ternários encadeados (
a?x:b?y:zavaliado incorretamente). Use if/else. - Enderece propriedades por matchName. As pesquisas por nome de exibição têm um limite de 39 bytes e são localizadas.
- Uma câmera não é
threeDLayer: testematchName==='ADBE Camera Layer'. - Normalize as dimensões dos valores: passe escalares para propriedades de dimensões separadas e arrays de 3 elementos para propriedades 3D.
shutterPhasedeve ser um inteiro.- Defina
applyFill=trueantes de definir uma cor de preenchimento de texto. - Crie um
TextDocumentnovo por camada. ChameresetCharStyle()/resetParagraphStyle()antes de estilizar. - Um erro "propriedade ou pai está oculto" significa que a propriedade não se aplica ali. Exemplo: a Rotação Y de uma luz ambiente não pode ser definida; anime seu mapa de origem.
- As cores de preenchimento de gradiente de forma não podem ser scriptadas. Use um efeito Gradient Ramp ou grupos de luz em camadas.
A6. Coexistindo com outros agentes
- Outros agentes podem sair do AE "pelo nome", o que também atinge sua instância. Salve com frequência e mantenha
ensure_ae.pypronto. - Pressionar Escape em um diálogo "Salvar alterações?" acionado por saída sai do AE.
- Ferramentas de uso de computador e acessibilidade podem ver apenas as janelas de outras instâncias. Diagnostique suas próprias janelas com uma lista de janelas Quartz filtrada por PID mais
screencapture -l <windowId>. Dispense-as via System Events em seu PID (código de tecla 36 = Return, 53 = Escape). - Divulgue qualquer interferência acidental com outra instância do AE.
Parte B – Regras que sempre se aplicam
Aplique estas regras em ambos os modos para manter o movimento suave e o projeto editável.
B1. Keyframes: o mínimo possível
- Use o mínimo de keyframes possível para obter movimento suave. Dez chaves com curvas vencem mil chaves planas.
- Um gesto precisa de 2–4 chaves: início, fim e uma pausa real ou um extremo real (pico, vale, mudança de fase).
- Limite cada propriedade a cerca de 7–12 chaves. Mais chaves geralmente significam que o movimento não foi projetado.
- Nunca asse o movimento como chaves lineares por quadro (ou 2 por quadro). Um editor não pode editá-lo, e parece mecânico.
- Quando o movimento vier de medição ou dados legados, ajuste-o (veja B3). Nunca cole amostras.
B2. Curvas: um arco suave no gráfico de velocidade
-
Abra o gráfico de velocidade de cada propriedade animada.
- Um sino ou arco suave significa movimento suave.
- Um gráfico angular, em degraus (cada chave com easy ease para zero) significa que o movimento gagueja.
- Um pico significa um solavanco, a menos que seja um acento intencional.
-
As chaves internas de um gesto contínuo não devem parar.
- Use chaves Bézier contínuas.
- Defina a velocidade interna como a média harmônica das inclinações vizinhas,
2ab/(a+b)quando ambos têm o mesmo sinal, senão 0, com uma influência de cerca de 33,3. - Nunca aplique um Easy Ease global a um gesto contínuo: cria os degraus.
-
Vocabulário de ease (influência de saída da chave anterior / influência de entrada desta chave):
Nome Influência ease 33/33 smooth 70/70 inout 82/82 out 12/88 expo 6/94 snap 3/97 in 88/12 soft 45/75 Um ease personalizado é
{'o':[speed,inf],'i':[speed,inf]}. Um puxão suave de volta, por exemplo:{'o':[0,55],'i':[0,92]}. -
As tangentes espaciais padrão são zero, o que evita overshoot do caminho. Use arcos apenas com propósito.
-
Um movimento muito curto com um início expo agressivo parece um solavanco. Alongue-o (0,5 → 0,8 s) e suavize o ease em vez de adicionar chaves.
-
Sobreponha sub-movimentos em um gesto. Uma dobra, depois um giro, depois um empurrão, feitos separadamente, dão movimento de para-e-vai. Comece o próximo movimento antes de o anterior terminar.
B3. Ajustando curvas a partir de dados
Modo Recriar, ou ao converter quaisquer dados densos:
-
Amostre o movimento alvo densamente (50–200 Hz) com
valueAtTimeou a partir de medição. -
Fixe nós no início e no fim, em pausas exatas (velocidade zero) e em extremos significativos (inclinação zero nesse eixo).
-
Resolva velocidades e influências por mínimos quadrados contra as amostras: velocidades com restrição de sinal, influências limitadas a 0,04–0,94.
-
Adicione um nó apenas onde o erro exceder a tolerância:
Propriedade Tolerância Posição 2–3 px (câmera 3 px) Escala 0,4–0,65 Opacidade 0,5–2,5 Desfoque ~1 Rotação 0,4 -
Para propriedades vetoriais, mescle os tempos dos nós entre os eixos dividindo a Bézier (de Casteljau). Afirme que a velocidade de entrada é igual à velocidade de saída em cada chave interna.
-
Mantenha como está, com uma razão escrita: expressões, time remap, cadência de digitação, switches de pausa deliberados, inversões de visibilidade de um quadro.
B4. Uma câmera 3D por cena
-
Cada cena tem uma
CAMERA • scene(um nó,NO_AUTO_ORIENT, X/Y/Z separados). A câmera carrega o enquadramento, pan, dolly e zoom. -
Não anime Posição/Escala em cada elemento para fingir um movimento de câmera.
-
Para derivar uma câmera do movimento de UI registrado (posição da camada principal
P, escalas, centro da compC, zoomZ0):camera XY = C + (C − P)/scamera Z = −Z0/s
Em seguida, reexpresse tudo que se move por conta própria em termos locais.
-
A câmera conta a história: chegada → ação → aceleração → pausa legível, e macro detalhe → revelação de afastamento.
-
A animação local permanece local: um caminho de cursor, um clique de pressão, uma rolagem, um flip de cartão. Pulsos de clique pai dentro do componente, para que sigam a perspectiva.
-
Manchetes vivem em um plano 2D estável acima do mundo 3D, para que os empurrões da câmera nunca as cortem. Verifique com uma verificação de limites de texto projetados.
B5. Desfoque de movimento, nitidez e profundidade
- O desfoque de movimento da comp está ativado (obturador 135–180°, 12–16 amostras).
- Reduza o obturador para 45–90° em afastamentos muito rápidos, ou borrões de UI.
- Desligue o desfoque de movimento em camadas onde ele duplica o texto.
- Mantenha grandes zooms de UI nítidos: uma pré-composição de plano de renderização superamostrada 2–4× que contém a UI vetorial editável, e sem colapso em cenas de câmera.
- Renderizador 3D Avançado: mantenha ≥ 4 unidades entre planos paralelos, ou eles z-fight e mostram emendas.
- A opacidade de um nulo não afeta seus filhos. Propague a opacidade para todos os descendentes.
- Brilhos desfocados devem ter Repetir Pixels de Borda DESLIGADO, caso contrário, mostram limites retangulares. Rampas Radiais de quadro completo fazem os melhores campos de luz.
B6. Transições: continuidade, não efeitos
-
Uma transição deve ser motivada:
- Corte de correspondência: o último quadro de A é igual ao primeiro quadro de B. Meça a pose na renderização.
- Morph: uma forma anima tamanho, arredondamento, cor e posição no próximo elemento.
- Transferência de objeto: um elemento é extraído e se torna o herói da próxima cena.
- Mergulho de câmera em um elemento escuro, para que a próxima cena emerja do preto.
- Revelação de disco claro ou escuro atrás do produto via um track matte.
-
Proibido:
- flashes brancos ou cinzas de quadro completo;
- crossfades entre cenas escuras e claras, que produzem quadros cinza médio;
- o mesmo wipe em cada corte;
- listras de "varredura" de fundo cinza.
Coloque flashes onde eles pertencem fisicamente: em um display, com um bloom colorido atrás do objeto.
-
Use no máximo 2–3 wipes de oclusão de quadro completo por filme.
B7. Nativo apenas, editável sempre
- Downloads de ativos: Baixe todos os ativos necessários para a tarefa sem perguntar primeiro ao usuário, incluindo logotipos, ícones, fontes, modelos 3D, texturas, imagens, referências de vídeo, música e efeitos sonoros. Prefira fontes oficiais ou confiáveis, retenha a atribuição de licença necessária e aplique as regras de projeto nativo abaixo ao usar os ativos no AE.
- Nativo significa texto, formas, máscaras, efeitos, pré-composições, câmeras, luzes e camadas de Modelo 3D nativas (GLB/OBJ). O áudio pode ser importado.
- Nunca importe capturas de tela, recortes de referência, pré-renderizações, loops de webcam ou substitutos raster para camadas nativas.
- Audite cada item de filmagem antes de reivindicar "nativo".
- Editável significa texto ao vivo, controles deslizantes, nomes de camada claros e pré-composições de componente reutilizáveis que propagam mudanças onde quer que sejam usadas.
- Mantenha o texto centralizado após edições com uma expressão de ponto de ancoragem de
sourceRectAtTime.
B8. Tipografia
– Apenas texto ao vivo, com as fontes reais da marca. Verifique com getFontsByPostScriptName e instale instâncias estáticas sob um nome de família único quando necessário.
– Manchetes são curtas, pesadas, em maiúsculas e minúsculas, com ponto final. Tracking −20 a −40.
– Revelação por caractere ou palavra: opacidade 0, desfoque 20–24, y +14–26, ease-out em 0,45–0,55 s. A saída espelha a entrada: 0,25–0,35 s, desfocando para cima.
– Meça larguras contra o TTF real (PIL com superamostragem 4×) para que sublinhados, pílulas e elementos visuais estejam precisamente dimensionados.