2 pontos por GN⁺ 2023-12-20 | 1 comentários | Compartilhar no WhatsApp
  • Notas e código-fonte (GitHub) sobre a matemática, os algoritmos e os métodos envolvidos na simulação em tempo real de fluidos como fogo e fumaça

1. Simulação de fluidos

  • Antes de simular fogo, é preciso simular fluidos
  • Se assumirmos que o fluido é incompressível e não viscoso, o problema fica muito mais simples

1.1 Dinâmica básica dos fluidos

  • Um fluido preenche uma região DDD do espaço, e no tempo ttt a velocidade do fluido é u(x,t)
  • O campo de velocidade 2D u pode ser representado em uma grade N×N
  • O que acontece se soltarmos uma gota de corante no fluido?
  • Definimos um campo escalar ψ(x,t) que representa a densidade do corante, e o fato de ele se mover pela velocidade do fluido é chamado de advection
  • O Naive Method para calcular a advection move cada ponto da grade e atualiza o ponto de grade mais próximo, mas é difícil de paralelizar e instável

Equação diferencial parcial para advection

  • Para derivar a advection de forma estável, é necessária uma expressão explícita em PDE
  • A massa total de corante dentro de uma região espacial fixa WWW é ∫WψdV, e a variação dessa massa ao longo do tempo é ddt∫Wψ(x,t)dV
  • Pela lei de conservação da massa, temos ddt∫WψdV=−∫Sψu⋅ndA
  • Aplicando o teorema da divergência, obtemos ∫W[∂ψ∂t+∇⋅(ψu)]dV=0 e, para uma sub-região unitária W=dV, temos ∂ψ∂t+∇⋅(ψu)=0
  • Isso fornece a PDE explícita que precisamos resolver

Método estável para advection

  • Observando a eqn. (1) de perto, o lado direito é a derivada direcional na direção de −u
  • Esse método, chamado de advection semi-Lagrangiana, foi inventado por Jos Stam em 1999
  • Como cada ponto da grade é atualizado apenas uma vez, ele é muito fácil de paralelizar e incondicionalmente estável

1.2 Equações de Navier-Stokes

  • Encontramos um modelo para como as propriedades escalares do fluido evoluem ao longo do tempo, mas e o próprio escoamento do fluido?
  • As equações de Navier-Stokes definem como o campo de velocidade u em qualquer ponto do fluido muda com o tempo
  • Como assumimos que o fluido não é viscoso, μ=0, e também podemos ignorar por enquanto as forças externas
  • Portanto, restam apenas dois termos: self-advection e pressão
  • Se calcularmos numericamente esses termos a cada passo de tempo e os somarmos, podemos simular o fluido

Resolução da pressão

  • Como não sabemos se o novo campo de velocidade satisfaz a restrição de incompressibilidade, o termo de pressão p deve corrigi-lo
  • Para isso, precisamos resolver a equação de Poisson
  • Para resolver a equação de Poisson, podemos usar algoritmos iterativos como o método de Jacobi
  • O método de Jacobi pode ser executado em paralelo na GPU, então sua implementação é muito simples

Resumo: simulação de Navier-Stokes

  • A matemática de Navier-Stokes pode ser um pouco complexa, mas simular fluidos resolvendo as equações pode ser resumido a alguns procedimentos principais de atualização

1.3 Confinamento de vorticidade (Vorticity Confinement)

  • Usar uma grade para armazenar o campo de velocidade é muito conveniente, mas ao interpolar os valores entre os pontos da grade ocorre um suavizamento numérico indesejado
  • Isso faz com que os redemoinhos turbulentos do escoamento desapareçam, resultando em um fluxo de fluido excessivamente suave e geralmente "sem graça"
  • O confinamento de vorticidade é um processo para amplificar essa vorticidade perdida
  • O confinamento de vorticidade foi projetado para resolver campos de escoamento muito complexos, como os das pás de helicópteros
  • A vorticidade é calculada em cada ponto tomando o rotacional de u, e para amplificá-la adiciona-se um fluxo circular em cada ponto

Turbulência com Curl-Noise

  • Curl noise é um método semelhante ao confinamento de vorticidade, mas em vez de medir e amplificar a vorticidade do campo de velocidade, ele usa uma função de ruído para criar desde o início um campo escalar de vorticidade
  • Fluidos muito rápidos e altamente turbulentos são os que mais se beneficiam do confinamento de vorticidade e do curl noise

2. Simulação de fogo

  • Para simular fogo e fumaça, é preciso adicionar canais que representem combustível e temperatura, e modelar a combustão do combustível para gerar calor
  • Também é necessário tratar a subida das partes mais quentes do fluido de acordo com um modelo de empuxo térmico e renderizar as chamas corretamente

2.1 Modelo básico de combustão

  • Quimicamente, o fogo surge devido à reação de oxidação de um material combustível, liberando calor e luz
  • Definimos um campo escalar ρ que representa a densidade do combustível e um campo escalar T que representa a temperatura
  • O combustível queima e adiciona temperatura ao sistema, e a temperatura se difunde das regiões quentes para as frias
  • A convecção térmica é definida pela combinação desses dois processos, e já temos um modelo matemático para isso: advection!

Opinião do GN⁺:

  1. Este texto explica o processo complexo de simular em tempo real fluidos como fogo e fumaça, um tema muito importante em computação gráfica e desenvolvimento de jogos.
  2. Com os avanços recentes das GPUs, passou a ser possível processar simulações complexas de fluidos em tempo real, o que contribui para criar jogos visualmente atraentes e efeitos especiais em filmes.
  3. O texto aborda conceitos matemáticos avançados, como as equações de Navier-Stokes e o confinamento de vorticidade, oferecendo informações úteis para engenheiros de software iniciantes interessados nessa área.

1 comentários

 
GN⁺ 2023-12-20
Comentários do Hacker News
  • Como alguém com doutorado em CFD (dinâmica dos fluidos computacional), admito que nunca tinha ouvido falar de confinamento de vorticidade nem de turbulência com curl noise. Dá aquela sensação de que se aprende algo novo todos os dias.
    • Em CFD industrial, lidamos com números de Reynolds altos, então não é desejável aplicar ruído para compensar a dissipação artificial dos métodos numéricos. Na verdade, muita gente quer dissipação artificial para estabilizar simulações com Reynolds alto. As exigências em computação gráfica estão mais focadas em parecer correto do que em precisão física.
  • Há uma menção a simulação de fogo e fumaça para jogos e a simulação de fluidos na GPU. Se esses efeitos precisam rodar no jogo, fica a dúvida se a GPU já não está ocupada demais. Resolver problemas de CFD e renderizar ao mesmo tempo parece trabalho demais.
    • Fica a dúvida se essas simulações poderiam rodar em uma iGPU, deixando a dGPU fazer mais trabalho de renderização, ou se a iGPU é fraca demais e seria melhor passar isso para a CPU.
  • Outra pessoa, chamada "10 Minute Physics", explica muito bem esses temas.
  • Há um comentário de alguém que fez a transição de matemática para engenharia de software, tem interesse em simulação de CFD e quer aprender sobre a área, apesar de estar com a matemática bem enferrujada por não mexer com cálculo vetorial nem equações diferenciais parciais há muito tempo.
  • Vi recentemente um vídeo implementando uma simulação de fluidos simples e achei muito interessante.
  • EmberGen é um software impressionante que faz simulação de fogo e fumaça em tempo real em GPUs de consumidor, com suporte a workflow baseado em nós para criar novos efeitos com facilidade.
    • O workflow melhorou a ponto de tarefas que antes levavam horas poderem ser concluídas em poucos minutos.
    • Há uma leve frustração por EmberGen não ter recebido muita atenção no Hacker News. (Comentário de um cliente satisfeito sem relação com EmberGen/JangaFX)
  • Embora não seja o ponto principal do artigo, há a opinião de que a introdução, ao sugerir que escolher simulação significa abrir mão do controle artístico e ter de negociar dolorosamente com uma quantidade frequentemente avassaladora de controles, está um pouco equivocada.
    • Em cenas centrais como o Balrog, a preferência seria não deixar a simulação decidir e manter controle total sobre cada quadro.
    • Já em um exemplo de fantasia tolkieniana, uma cena de paisagem com um rio fazendo várias curvas, algumas pedras e peixes saltando ocasionalmente seria mais adequada para simulação.
  • Apesar de ter 64 GB de RAM, houve problema com essa página, que fez a aba fechar completamente.
  • Há um link para um vídeo que dá uma boa explicação de por que explosões em computação gráfica costumam ser ruins.
  • Fiquei muito impressionado com o template do distill.pub e com o resultado do sistema de construção de páginas, e é uma pena que tenha sido descontinuado em 2021 e não receba mais manutenção.