Neste nono tutorial da série sobre fogo e fumaça com o simulador Fluid no Blender 4.5, vamos ver como usar Force Fields, como Turbulence e Curve Guide, para influenciar o comportamento e a trajetória dos elementos na simulação.
Este tutorial faz parte de uma minissérie de 10 episódios sobre os fundamentos de Fogo e Fumaça no Blender 4.5. Para ver a lista completa de episódios, clique aqui.
A versão em vídeo deste tutorial não está disponível no momento neste idioma, mas está disponível em inglês selecionando o idioma correspondente na parte superior da página.
Transcrição do vídeo
Olá a todos! Neste nono tutorial da série sobre fogo e fumaça com o simulador Fluid no Blender 4.5, vamos ver como usar Force Fields, como Turbulence e Curve Guide, para influenciar o comportamento e a trajetória dos elementos na simulação.
A cena inicial que estou usando neste tutorial é muito simples, composta apenas pelo Domain e por uma esfera emitindo fogo e fumaça no modo Inflow.
Ao adicionar um Empty à cena, podemos atribuir a ele um Force Field para perturbar ou guiar os elementos da simulação. Os Force Fields estão no painel Physics, assim como as simulações Fluid para objetos Mesh. Escolhi Arrows como tipo de Empty, pois alguns Force Fields atuam em direções específicas e esse tipo de Empty facilita a visualização imediata.

Em seguida, adiciono um Force Field, que por padrão é do tipo Force. Para cada Force Field, uma dica informa sua ação e as direções em que opera. Force, por padrão, tem formato Point e atua radialmente a partir de seu centro. No entanto, ao reproduzir a simulação, não percebemos nenhum efeito, embora o objeto Inflow pareça estar dentro do alcance do Force Field.
Nesses casos, um procedimento que costuma funcionar é o seguinte: depois de salvar o arquivo do projeto, especifique uma pasta de cache. Em seguida, altere o modo de Baking do Domain para All e deixe o Blender calcular a simulação por pelo menos alguns quadros.
Após esse processo, pressione Play para verificar se a simulação foi calculada corretamente. Se foi, limpe o Domain Cache e defina o modo de Baking novamente para Replay.
Ajuste tanto a duração da animação do projeto quanto o intervalo de quadros da simulação no Domain e clique em Play na Timeline.
Se a simulação agora rodar corretamente, a partir desse ponto você pode testar os diferentes efeitos no modo Replay.
Para controlar a intensidade dos efeitos, os Force Fields oferecem o campo Strength, que se aplica ao Force Field selecionado e pode ser animado.
Como observação, você pode alterar o valor de um campo para vários objetos selecionados ao mesmo tempo se mantiver a tecla ALT pressionada antes de clicar no campo para editá-lo.

O campo Strength, portanto, permite ajustar, inclusive com animações, a intensidade de cada Force Field individualmente. Mas, como vimos nos tutoriais sobre o Domain, também é possível controlar a influência de todos os Force Fields na cena ou de todos os Force Fields de um determinado tipo. Essas configurações estão na seção Field Weights do Domain e, como em muitos casos, também podem receber keyframes, o que significa que o efeito de um ou de todos os Force Fields pode ser animado ao longo do tempo.
O campo Strength de Force, assim como o de muitos outros Force Fields, também pode assumir valores negativos. No caso de Force, isso faz com que o fogo seja atraído em direção ao Force Field.
Na tela, estou mostrando um exemplo criado animando o movimento do Empty na cena e definindo Force com valor negativo. Como você pode imaginar, essa é uma forma interessante de direcionar fogo e fumaça.

Cobrir todos os parâmetros de cada Force Field disponível exigiria uma minissérie separada, então não farei isso aqui. No entanto, há uma seção que vale a pena analisar: Falloff, que permite definir um alcance para a influência de um Force Field.
No momento, o Force Field afeta todo o espaço virtual sem nenhuma atenuação. Para mostrar um exemplo mais claro, estou alterando Force para Wind, mantendo o Strength negativo. Mesmo que Wind atue apenas no eixo Z e esteja posicionado relativamente longe do objeto Inflow, este ainda é afetado.

Para limitar o alcance de influência do Force Field, podemos usar o campo Max Distance na seção Falloff. Por padrão, esse parâmetro está desativado. Quando ativado, o alcance do Force Field é representado por um círculo no 3D Viewport. Como muitos parâmetros, Max Distance também pode receber keyframes, tornando-se mais uma forma de controlar os efeitos de um Force Field em animações. Neste caso, Wind está puxando as chamas e a fumaça porque deixei o Strength com valor negativo.

Agora desativo Max Distance, retorno o Force Field à sua orientação original e defino um valor positivo para Strength para observar rapidamente mais alguns Force Fields.
Um Force Field muito útil para adicionar movimento às chamas é, claro, Turbulence. A perturbação que ele introduz é tão forte que a fumaça torna as chamas menos visíveis, então estou reduzindo-a usando a opção Dissolve no Domain.
Turbulence pode se tornar ainda mais aleatório ao aumentar o parâmetro Noise. Esse ruído é, na verdade, pseudoaleatório, pois segue certos padrões, e você pode escolher o padrão usando o parâmetro Noise Seed. Se suas chamas parecerem uniformes demais, mesmo após ajustar Vorticity ou adicionar Textures, um pequeno Force Field Turbulence pode ser exatamente o que você precisa.
Para finalizar, vamos analisar o Force Field Curve Guide, que permite fazer os elementos da simulação seguirem um caminho. Para este exemplo, recriei a cena inicial do zero, salvando o novo projeto em um novo arquivo e configurando uma nova pasta de cache para o Domain. Assim, as configurações iniciais do Domain e dos objetos Inflow inseridos na cena são as padrão criadas pelo Blender.
No entanto, estou ativando Dissolve, com uma contagem de quadros maior que a padrão, para evitar que a fumaça obstrua demais a visualização.
Também estou movendo o objeto Inflow para o lado para abrir espaço para a curva de trajetória.

Depois de adicionar uma curva Bezier e posicioná-la para receber um Force Field Curve Guide, os resultados são bastante decepcionantes.
Se você já tem familiaridade com curvas e com o modificador Curve Guide, sabe que é boa prática definir o Origin da curva no início do caminho e, principalmente, garantir que a curva tenha a orientação correta. Isso pode ser verificado no Edit Mode com Curve Overlays, e uma orientação incorreta pode ser corrigida com Switch Direction. Reiniciando a simulação, o resultado melhora um pouco, mas ainda não está como esperado.
Testei várias configurações, como desativar a gravidade no Domain e aumentar o valor de Curve Guide em Field Weights. Claro que também reduzi Vorticity e Reaction Speed, aumentei a resolução e fiz outros ajustes. Algo mudou, mas não o suficiente. Então vou mostrar o método que normalmente uso para obter o resultado desejado.
Adiciono um Particle System do tipo Emitter ao objeto com Inflow e configuro os parâmetros básicos para que as partículas sejam emitidas corretamente. Observe que as partículas imediatamente seguem o caminho da curva, já que o emissor está dentro do alcance do Force Field.

O alcance do Force Field pode ser definido em seu painel usando o parâmetro Minimum Distance. Ali também podemos definir Clumping como 1, para que todas as partículas converjam no ponto final da curva.
Neste ponto, defino o Render do Particle System do emissor como None, pois essas partículas não devem ser renderizadas, e então volto ao painel Inflow.
Nesse painel, altero o Flow Source de Mesh para Particle System, especificando o sistema de partículas que acabei de criar. Dessa forma, fogo e fumaça serão emitidos a partir das partículas que seguem o caminho.
A partir daqui, você pode ajustar parâmetros como Fuel, Vorticity e outros para dar às chamas a aparência desejada.

Antes de encerrar o tutorial, vou mostrar também como vincular um ponto de controle da curva a um objeto externo usando uma técnica chamada Hooking, que facilita animar a forma da curva. Primeiro, seleciono a curva, entro no Edit Mode e seleciono o último ponto de controle. Em seguida, uso o operador Hook, escolhendo a opção Hook To New Object, que cria um Empty para essa finalidade.

No Object Mode, você pode mover esse Empty e animar seus movimentos, deformando a curva e as chamas de acordo. Naturalmente, você pode usar a mesma técnica para adicionar mais Empties a outros pontos de controle da curva, criando animações mais complexas.

Como você pode ter notado, em determinado momento a emissão de partículas para. Esse parâmetro se chama Frame End e está localizado no painel Particle System. No mesmo painel, o parâmetro Lifetime controla a velocidade com que as partículas percorrem a curva.

Antes de finalizar, aqui vão mais algumas considerações.
O tamanho do objeto Emitter determina o tamanho da superfície de emissão. Portanto, se você quiser que as partículas fiquem concentradas ao longo de uma curva mais estreita, ajuste o tamanho desse objeto.
O número de partículas também influencia o quanto a curva de fogo parece segmentada, então talvez seja necessário aumentá-lo para dar às chamas um aspecto mais suave e contínuo.
Nesse sentido, o uso de Motion Blur, que veremos no próximo tutorial, também pode ajudar.