Skip to main content
10 Truques para Simulações FLIP de Fluidos Melhoradas em Houdini

10 Truques para Simulações FLIP de Fluidos Melhoradas em Houdini

BySuperRenders Farm Team
Published 16 de mar de 202611 min read
Truques práticos de artistas FX de produção para simulações FLIP de fluidos mais rápidas e controláveis em Houdini.

Houdini oferece um conjunto poderoso de ferramentas quando se trata de simular fluidos. Contudo, é sempre um desafio fazer com que os fluidos pareçam realistas, especialmente para trabalhos em broadcast.

Neste artigo, vamos explorar alguns truques de Kevin Pinga, artista FX da FuseFX, para criar simulações FLIP de fluidos mais rápidas e flexíveis. Também integrámos conhecimentos operacionais da nossa farm sobre como estes fluxos de trabalho se comportam em larga escala ao renderizar sequências de fluidos complexas.

Para estúdios que pretendem offload de simulações pesadas em Houdini e renderização para a cloud, a nossa comparação de render farm Houdini para 2026 abrange suporte de engines, compatibilidade HDA e preços dos principais fornecedores.

Simulações FLIP são um lado do toolkit de simulação do Houdini. Para uma comparação das capacidades de simulação mais amplas do Houdini contra ferramentas especializadas de character FX, a nossa comparação Ziva VFX vs Houdini examina os trade-offs para fluxos de trabalho de muscle, tissue e soft-body.

Originar fluidos com POP Source, não FLIP Source

A utilização de POP Source para originar fluidos oferece atributos familiares de emissão, ativação e velocidade

A utilização de POP Source para originar fluidos oferece atributos familiares de emissão, ativação e velocidade

O método padrão para originar fluido para FLIP é utilizar um nó FLIP Source. Criar-se-á um VDB que é lido pelo nó Volume Source em DOPs. Esta abordagem funciona bem ao originar a partir de uma forma ambígua grande; contudo, pode tornar-se bastante pesada em recursos e morosa antes de sequer chegar à fase de simulação.

Em vez disso, deve-se utilizar geometria SOP regular baseada em polígonos directamente sem conversão para VDBs. Esta origem pode ser lida pelo nó POP Source ligado à entrada Sourcing do próprio solver FLIP, da mesma forma que se importaria uma origem para uma simulação de partículas regular.

Este método é mais intuitivo uma vez que se dispõe de controlos familiares no nó POP Source através da experiência trabalhando com partículas regulares. É possível controlar e monitorizar partículas facilmente e independentemente da Particle Separation do próprio objeto FLIP.

Utilizar nós POP com fluidos FLIP

Interface Houdini mostrando um nó POP Force adicionado a uma simulação FLIP para criar movimento de fluido detalhado e ruído

Interface Houdini mostrando um nó POP Force adicionado a uma simulação FLIP para criar movimento de fluido detalhado e ruído

FLIP é essencialmente uma série de POPs com alguns passos de advecção volumétrica entre eles. Contudo, a base é apenas partículas, o que significa que todos os nós POP em DOPs podem ser utilizados para fluidos FLIP. É por isto que se conseguiu originar utilizando o nó POP Source na dica anterior.

O nó POP Force é um elemento essencial para criar movimento interessante ao trabalhar com partículas regulares. Pode-se utilizá-lo com fluidos FLIP também. Utilizá-lo para introduzir até uma pequena quantidade de ruído pode criar um fluido mais apelativo. Os ruídos de baixa frequência podem também criar detalhe sem ter de aumentar a contagem de partículas ou a separação de partículas. (Tenha cuidado para não adicionar demasiado ruído, pois isto pode causar uma simulação irrealista.)

Outro nó POP que é útil em simulações FLIP é POP Speed Limit. Combinado com um nó POP Drag, funciona excelentemente para controlar partículas de alta velocidade que de outro modo sairiam do controlo.

Utilizar Bounds qL para definir limites FLIP

Fazer referência aos parâmetros em Bounds qL ajuda a definir limites de simulação

Fazer referência aos parâmetros em Bounds qL ajuda a definir limites de simulação

O nó Bounds qL é uma ferramenta muito útil que concentra várias funcionalidades simples. Vem como parte de um conjunto de ferramentas Houdini open-source maior chamado qLib. Na maioria dos estúdios, qLib é instalado por padrão. Se não estiver no seu ambiente de produção pessoal, pode instalá-lo seguindo as instruções em GitHub.

Kevin Pinga partilha que utiliza Bounds qL principalmente para definir limites de volume para simulações FLIP e Pyro. Este é um passo acima do nó Bound padrão uma vez que inclui uma opção para criar limites baseados numa entrada animada.

A funcionalidade mais útil é a checkbox Output: Values, que desbloqueia os valores do tamanho e centro da caixa delimitadora. Estes valores podem então ser copiados para qualquer parâmetro no separador Volume Limits do solver FLIP, ou qualquer outra operação que necessite de uma caixa delimitadora. Ter informação centralizada da caixa delimitadora pode evitar erros do utilizador e ajuda na criação de setups mais procedurais.

Activar atributos úteis no solver FLIP

Activar atributos FLIP extra: como muitas coisas em Houdini, a solução é apenas algumas checkboxes afastada

Activar atributos FLIP extra: como muitas coisas em Houdini, a solução é apenas algumas checkboxes afastada

Existem três parâmetros principais no solver FLIP que deve activar nas suas sims FLIP: ID, age e vorticity. Podem ser encontrados no FLIP Solver sob os separadores Behavior e Vorticity.

A maioria dos artistas estão já familiarizados com o atributo ID e como pode ser poderoso. O tamanho dos dados pode sofrer um pequeno impacto ao fazer cache de um atributo adicional, mas é sempre uma boa ideia ter essa informação disponível.

Pode-se controlar o aspecto de uma sim ao longo do tempo activando o atributo age via checkbox Age Particles (que também exporta o atributo life). Isto é útil especialmente se tiver uma origem que está a emitir constantemente.

O atributo vorticity é útil para originar simulações secundárias como whitewater e é excelente para manipular shading.

Realizar ajustes pós-simulação para salvaguardar simulações falhas

Um wrangle VEX simples para ajustar o tamanho da partícula baseado na densidade da nuvem de pontos

Um wrangle VEX simples para ajustar o tamanho da partícula baseado na densidade da nuvem de pontos

Existe uma tendência para confiar fortemente na saída de uma simulação FLIP como resultado final. Embora este seja um fluxo de trabalho ideal, devido a restrições de tempo, nem sempre se tem o luxo de resimular para corrigir problemas. Em casos como estes, executar ajustes pós-simulação nas próprias partículas FLIP pode ajudar a salvaguardar a sim.

Também deve adicionar o atributo ID para que possa utilizar o nó Retime para fazer retime a uma sim.

Pinga nota que encontra outro problema comum ao executar simulações mid-res: o tamanho das gotas de líquido é bom em áreas de alta densidade da simulação, mas demasiado grande em áreas mais esparsas. Em casos como este, um wrangle simples utilizando a função pcfind pode ajudar a marcar áreas esparsas e reduzir o seu valor pscale.

Abaixo está o snippet de código utilizado no wrangle:

int pc[] = pcfind(0,'P',@P,chf('max_dist'),chi('max_pts'));
@pscale *= float(len(pc))/ch('max_pts');

Utilizar xyzdist para lidar com superfícies de colisão de alta resolução

Utilizar xyzdist() e primuv() para empurrar partículas em direcção à superfície de colisão

Utilizar xyzdist() e primuv() para empurrar partículas em direcção à superfície de colisão

Este é outro ajuste pós-simulação. Juntamente com primuv(), xyzdist() é de longe a função mais útil para refinamento de colisão.

Num contexto VEX ou VOPs, xyzdist() calcula a distância ao ponto interpolado mais próximo numa superfície. Quando combinado com primuv(), pode-se extrair qualquer atributo dos UVs paramétricos do objecto.

No exemplo acima, extrai-se a posição da superfície de colisão de alta resolução e utiliza-se para empurrar partículas em direcção à superfície. Em alguns casos, pode-se também executar isto directamente na própria superfície mesh, especialmente em shots onde a superfície de colisão é transparente (por exemplo, derramar líquido num copo transparente). Fazer clamp da distância para um valor realmente pequeno ajudará a acelerar os cálculos.

Eis o snippet de código utilizado no wrangle:

//initializing variables
int p_prim;
vector p_puv;
//getting the distance and the parametric position of the closest point
float dist = xyzdist(1,@P,p_prim,p_puv);
vector P2= primuv(1,"P",p_prim,p_puv);
//mixing the P of the points, influenced by a mapped distance
@P = fit(dist,chf("min_dist"),chf("max_dist"),P2,@P);

Em produção, existe um uso mais prático. Utiliza-se um collider de menor resolução durante a simulação, e depois executa-se esta função num wrangle pós-simulação para fazer o fluido parecer que está interagindo com um collider high-res. Esta abordagem economiza tempo significativo de simulação mantendo fidelidade visual.

Eliminar partículas problemáticas com ID

Um método simples para eliminar correctamente partículas problemáticas via atributos ID

Um método simples para eliminar correctamente partículas problemáticas via atributos ID

Este é um truque simples mas eficaz quando se tem uma simulação que é 98 % próxima de estar final, mas onde os restantes 2 % das partículas simplesmente não funcionam. Se armazenou o atributo ID mencionado nas dicas anteriores, pode utilizá-lo para eliminar as partículas problemáticas. Sem ID, não seria capaz de marcar as partículas corretas para eliminação uma vez que a contagem de pontos muda de frame para frame.

Pode resolver isto indo para o modo de selecção de pontos e premendo [9] no seu teclado numérico. Isto abre o painel Group Selection. Para seleccionar por ID, clique no ícone de engrenagem e seleccione Attributes > id. Agora pode simplesmente seleccionar as partículas que pretende remover na viewport e premir [Delete]. Um nó Blast será gerado automaticamente fazendo referência ao point ID em vez do número de ponto.

Utilizar reseeding para reforçar regiões esparsas

Aumentar surface oversampling para preencher áreas esparsas de uma simulação

Aumentar surface oversampling para preencher áreas esparsas de uma simulação

Em produção, por vezes encontrar-se-á um problema onde o render final não se vê correcto porque não tem partículas suficientes. Isto deve-se à utilização de uma FLIP sim de resolução média.

Em casos como este, deve-se aumentar os parâmetros de reseeding em vez de alterar a separação de partículas. Por padrão, o reseeding já está activado, mas aumentar o parâmetro Surface Oversampling pode ajudar a aumentar a contagem de partículas em áreas esparsas espalhando as partículas. Desta forma, consegue manter o aspecto geral da simulação mas ter partículas suficientes para evitar o fluido mesh parecer incorrecto.

Utilizar a simulação FLIP original directamente como elemento diferente

Renderizar a simulação FLIP original directamente como whitewater

Renderizar a simulação FLIP original directamente como whitewater

A forma tradicional de criar whitewater é simular o fluido FLIP, depois executar o solver Whitewater em cima disso. Contudo, o segundo passo nem sempre é necessário, particularmente para fluidos de movimento rápido como salpicos e jactos de água (pense numa boca-de-incêndio rebentada ou debaixo de água numa banheira quente). Além disso, pode ser bastante complicado conseguir que o fluido se pareça bem ao fazer mesh das partículas.

Contudo, pode-se tomar a simulação FLIP em si e renderizá-la directamente com um shader de whitewater. Pode-se renderizar as próprias partículas, ou rasterizá-las para um VDB e renderizar o resultado como um volume.

Optimizar a simulação e caches

Utilizar a checkbox Delay Load Geometry no nó File Cache para acelerar o trabalho em sims high-res

Utilizar a checkbox Delay Load Geometry no nó File Cache para acelerar o trabalho em sims high-res

Um dos desafios com simulações FLIP de alta resolução é lidar com as grandes quantidades de dados que geram. Uma prática comum é eliminar todos os atributos que não necessita antes de fazer cache de qualquer parte de uma simulação.

Outra coisa que pode fazer para ajudar a reduzir a sua pegada de memória é seleccionar as partículas fora do frustum da câmara. Adicionalmente, se tem geometria que está pronta a ser renderizada, é uma boa ideia fazer cache dela e ter a checkbox Delay Load Geometry activada. Em vez de fazer Mantra incorporar a geometria no ficheiro IFD, será feita referência ao ficheiro no disco em seu lugar. Isto ajudará a reduzir tempos de carregamento e também reduzirá drasticamente os tempos de geração IFD e tamanho do ficheiro.

Ao renderizar simulações FLIP grandes em infraestrutura distribuída, estas estratégias de cache tornam-se críticas. Trabalhámos com estúdios renderizando semanas de animação FLIP, e a optimização de cache adequada tipicamente reduz o tempo de transferência e tempo de render total em 30-40 %.

Super Renders Farm é uma render farm Houdini na nuvem. O nosso software integra-se com o Houdini e conecta-se à farm através de um simples plugin.

FAQ

O que é FLIP em Houdini?

FLIP (Fluid Implicit Particle) é um solver híbrido que combina partículas e volumetria. Utiliza a velocidade baseada em partículas para o realismo detalhado, enquanto mantém a pressão volumétrica para estabilidade. Isto oferece controlo fino das dinâmicas de fluido com caching eficiente.

Por que devo activar atributos ID, age e vorticity?

O atributo ID permite rastreamento de partículas e retime, essencial para ajustes pós-sim. Age controla a vida útil das partículas para efeitos como dissipação. Vorticity é fundamental para whitewater secundário e manipulação de shading, oferecendo movimento mais realista.

Como posso renderizar simulações FLIP em render farms?

Exporte a simulação como sequência VDB ou Alembic antes de enviar. Certifique-se que todos os ficheiros de cache, texturas e geometria referenciada estão acessíveis. A maioria das farms carrega dados de simulação pré-calculados em vez de executar simulação durante renderização.

Qual é o melhor formato de cache para FLIP: VDB ou Alembic?

VDB é ideal para distribuição em render farms—comprime bem e carrega rapidamente em acesso de rede. Alembic é melhor se necessita preservar topologia para shading de deformação. Para a maioria dos casos, VDB é preferível pela eficiência.

Como posso resolver problemas de partículas esparsas numa simulação FLIP?

Utilize reseeding com Surface Oversampling aumentado para preencher áreas esparsas. Pode também utilizar pcfind em pós-simulação para ajustar pscale baseado em densidade. Em último caso, aumente Particle Separation durante simulação, embora isto afecte o aspecto geral.

Posso utilizar VEX para ajustar resultados FLIP após simulação?

Sim, totalmente. Funções como xyzdist(), primuv(), e pcfind são extremamente úteis. Pode também usar ID para eliminar partículas problemáticas. Estes ajustes post-sim salvaguardam sims falhas sem necessidade de resimular, economizando tempo significativo.

Veja Também

Recursos Externos


Actualização Última: 2026-03-18