MOPS Replicator e distribuição de instâncias — controlando onde tudo aparece
Uma das perguntas mais comuns de quem começa com MOPS é: “tá, mas como eu controlo onde as instâncias aparecem?” A resposta curta é: você tem várias opções, e o MOPS Replicator é a mais poderosa delas. Mas antes de chegar lá, vale entender a lógica de distribuição do MOPS como um todo — porque você vai combinar essas ferramentas o tempo todo.
A base: pontos são tudo
No MOPS, cada instância existe em cima de um ponto. Então distribuir instâncias = criar pontos. Você pode alimentar o Instancer com qualquer SOP que gere pontos:
[Grid SOP] → pontos em grade regular[Scatter SOP] → pontos aleatórios sobre superfície[Points SOP] → pontos manuais[Wrangle SOP] → pontos via VEX[MOPS Replicator] → pontos com lógica procedural de padrãoO Instancer não se importa de onde vieram os pontos — ele só precisa que existam.
MOPS Replicator — o que ele faz de diferente
O Replicator não é só um distribuidor de pontos. Ele cria pontos com atributos de padrão embutidos — coisas como index ordenado, direção, grupo, distância do centro. Esses atributos são o que os Falloffs usam pra criar comportamentos interessantes.
Modos de distribuição
Grid — grade regular 2D ou 3D. O mais usado pra motion graphics tipográfico e title sequences.
Parâmetros chave:- Size X/Y/Z: tamanho total da grade- Divisions X/Y/Z: quantidade de pontos por eixo- Center: centraliza na origemRadial — distribui em círculo ou espiral. Ótimo pra composições circulares.
Linear — linha reta com N pontos. Simples mas muito útil pra sequências em fila.
Random — distribuição aleatória num volume. Menos controle, mais orgânico.
Copy from Geometry — usa os pontos/vértices de uma geometria existente. Aqui fica interessante: você pode distribuir instâncias sobre a superfície de qualquer mesh.
Usando geometria como fonte de distribuição
[Torus SOP] ↓[MOPS Replicator] (modo: Copy from Geometry) ↓[MOPS Instancer] ↓resultado: instâncias distribuídas sobre o torusCombinado com um Shape Falloff usando o mesmo torus como referência, você tem controle total sobre onde e como os elementos aparecem.
Atributos gerados pelo Replicator
Esses são os atributos que o Replicator cria automaticamente e que você vai usar nos Falloffs:
| Atributo | Tipo | O que é |
|---|---|---|
mops_index | int | index sequencial de cada ponto |
mops_falloff | float | valor inicial de falloff (1.0 por padrão) |
N | vector | normal do ponto |
orient | quaternion | orientação da instância |
scale | vector | escala inicial |
O mops_index é o que o Index Falloff usa pra criar aquele efeito de onda sequencial. Quanto mais organizado o Replicator, mais previsível o comportamento.
Distribuição com Scatter — quando o Replicator não é suficiente
Para distribuições sobre superfícies orgânicas, o Scatter SOP nativo do Houdini muitas vezes é melhor que o Replicator. A combinação que uso bastante:
[Sphere ou mesh qualquer] ↓[Scatter SOP] ← gera N pontos aleatórios na superfície ↓[Sort SOP] ← reordena pontos por distância/posição ↓[MOPS Instancer] ↓[MOPS Index Falloff] ← agora funciona porque os pontos têm ordemO Sort SOP é o segredo aqui. Sem ele, os pontos do Scatter têm ordem aleatória e o Index Falloff fica caótico. Ordenando por distância do centro ou por eixo você recupera o comportamento previsível.
Controlando a orientação das instâncias
Por padrão as instâncias herdam a orientação do ponto de origem. Você pode sobrescrever isso com o MOPS Orient Modifier ou manipulando o atributo orient diretamente:
// Aponta todas as instâncias para a origemvector dir = normalize({0,0,0} - v@P);p@orient = quaternion(maketransform(dir, {0,1,0}));Ou usando o MOPS Look At pra fazer instâncias apontarem pra uma geometria ou nulo animado — muito útil pra partículas que “olham” pra câmera.
Combinando múltiplas distribuições
Você pode mesclar distribuições diferentes com um Merge SOP antes do Instancer:
[Replicator Grid] ──┐ ├── [Merge SOP] → [MOPS Instancer][Scatter Sphere] ──┘Só lembre de resetar o mops_index depois do merge se for usar Index Falloff, senão os índices das duas fontes vão se sobrepor:
// Attribute Wrangle depois do Mergei@mops_index = @ptnum;Pattern procedural sem Replicator — só com VEX
Se você quer controle total, criar os pontos via Wrangle é o caminho:
// Add Wrangle (run over: detail)// Cria grid 10x10 com atributos MOPS
int cols = 10;int rows = 10;float spacing = 0.5;
for(int x = 0; x < cols; x++){ for(int y = 0; y < rows; y++){ vector pos = set(x * spacing, 0, y * spacing); int pt = addpoint(0, pos); setpointattrib(0, "mops_index", pt, x + y * cols); setpointattrib(0, "mops_falloff", pt, 1.0); }}Mais trabalho, controle total. Vale quando o Replicator não oferece o padrão exato que você precisa.
Recursos
- MOPS Replicator — documentação oficial
- Houdini Scatter SOP — SideFX docs
- Houdini Sort SOP — SideFX docs
- VEX addpoint — referência
Última atualização: 2026 | Parte do wiki Zé do Motion