VEX para Motion Design
Tip
Uma coleção de efeitos específicos para motion design criados em VEX: coisas que você normalmente faria no after ou no C4D, mas com o poder procedural do Houdini.
grid animado (MoGraph-style)
// Num Point Wrangle sobre um grid:float freq = ch("frequencia");float amp = ch("amplitude");float velocidade = ch("velocidade");float defasagem = ch("defasagem");
// Onda 2D com defasagem por posição:float phase = (@P.x + @P.z) * defasagem;@P.y = sin(@Time * velocidade + phase) * amp;
// Cor baseada na altura:float t = fit(@P.y, -amp, amp, 0, 1);@Cd = set(t, 0.3, 1 - t);texto que se dissolve em partículas
// Pré-requisito: converter texto em pontos (Font SOP → Scatter)// Ponto de destino: posição original (salva como @rest)// Ponto de partida: posição aleatória no espaço
float progresso = ch("progresso"); // 0 = disperso, 1 = formado
vector rest = @rest; // posição final (guardada antes da dispersão)vector dispersao = @P_inicial; // posição inicial dispersa
@P = lerp(dispersao, rest, progresso);@pscale = fit(progresso, 0, 1, 0.02, 0.1);efeito de data moshing (glitch)
// Desloca blocos de geometria aleatoriamente:int blocoSize = chi("bloco");int blocoId = int(@P.x / blocoSize) + int(@P.y / blocoSize) * 100;
float glitchAmt = ch("intensidade");float glitchFreq = ch("frequencia");
// Só alguns blocos glitcham por vez:float n = noise(set(float(blocoId) * 0.1, @Time * glitchFreq));if (n > 0.7) { @P.x += (rand(blocoId + floor(@Time * 10)) - 0.5) * glitchAmt; @P.y += (rand(blocoId + 100 + floor(@Time * 10)) - 0.5) * glitchAmt * 0.5;}revelar por onda
// Revela pontos de baixo para cima com borda suave:float limiar = ch("progresso"); // -1 a 2 (animado)float suavidade = ch("suavidade");
float normalized = fit(@P.y, -2, 2, 0, 1); // normaliza posição Yfloat mask = smooth(limiar - suavidade, limiar + suavidade, normalized);
@pscale *= mask;if (mask < 0.01) removepoint(geoself(), @ptnum);partículas orbitando
// Cada ponto orbita um raio baseado no seu índice:float raio = 1.0 + rand(@ptnum) * 3.0;float velocidade = 0.5 + rand(@ptnum + 1000) * 2.0;float fase = rand(@ptnum + 2000) * 6.28;float inclinacao = (rand(@ptnum + 3000) - 0.5) * 1.0;
float angulo = @Time * velocidade + fase;
@P = set( cos(angulo) * raio, sin(angulo) * raio * sin(inclinacao), sin(angulo) * raio * cos(inclinacao));
@Cd = set(raio / 4, 0.5, 1 - raio / 4);exportando para o after
Para usar renders do Houdini em compositing no after:
- Renderiza em EXR multilayer com AOVs (Z-Depth, Cryptomatte)
- Exporta câmera como FBX
- No after, importa com ProEXR
- Faz composite sobre outros elementos
Info
A linguagem visual pode ser Houdini, mas a finalização e compositing acontece no after: o melhor dos dois mundos.