Live data from Hacker News

Navier-Stokes fluid simulation explained with Godot game engine

myzopotamia.dev

1–10 of 36 posts

Re: Navier-Stokes fluid simulation explained with Godot game engine

#4
post #2

So once upon a time I stumbled upon simulating fluids in gamedev and I really wanted to learn how it works. Fast forward 2 months and I decided to write down everything I learned to hopefully make it easier for others in the future!

Fluid sims are just so darn fun! Nice writeup, very accessible.

Couple of notes, I think you forgot to apply timestep when adding rocket exhaust velocity, pretty sure it should be

  u[idx] += backward.x * flame_velocity_amount * falloff * delta
  v[idx] += backward.y * flame_velocity_amount * falloff * delta
You need to compensate by scaling up flame_velocity_amount, I used 85, seemed about the same.

Re: Navier-Stokes fluid simulation explained with Godot game engine

#5
post #2

So once upon a time I stumbled upon simulating fluids in gamedev and I really wanted to learn how it works. Fast forward 2 months and I decided to write down everything I learned to hopefully make it easier for others in the future!

Fluid sims are just so darn fun! Nice writeup, very accessible. Couple of notes, I think you forgot to apply timestep when adding rocket exhaust velocity, pretty sure it should be u[idx] += backward.x * flame_velocity_amount * falloff * delta v[idx] += backward.y * flame_velocity_amount * falloff * delta You need to compensate by scaling up flame_velocity_amount, I used 85, seemed about the same.

Yeah it seems I missed that, adding the rocket at the end was a cherry on the top and I was so exhausted already I'm surprised it even works lol

Re: Navier-Stokes fluid simulation explained with Godot game engine

#6
post #5

Earlier quoted context omitted.

Fluid sims are just so darn fun! Nice writeup, very accessible. Couple of notes, I think you forgot to apply timestep when adding rocket exhaust velocity, pretty sure it should be u[idx] += backward.x * flame_velocity_amount * falloff * delta v[idx] += backward.y * flame_velocity_amount * falloff * delta You need to compensate by scaling up flame_velocity_amount, I used 85, seemed about the same.

Yeah it seems I missed that, adding the rocket at the end was a cherry on the top and I was so exhausted already I'm surprised it even works lol

It made it very fun to play with though :D

Re: Navier-Stokes fluid simulation explained with Godot game engine

#7
Nice writeup. One thing worth adding to the limitations: without vorticity confinement, the Gauss-Seidel projection step quietly dissipates the small-scale curl that makes smoke look like smoke.

The 2001 Fedkiw/Stam/Jensen "Visual Simulation of Smoke" paper added it back as a correction force for exactly this reason. At N=16 it doesn't matter much because the grid itself can't represent fine vortices, but the moment you crank N up the missing confinement becomes visible.

Re: Navier-Stokes fluid simulation explained with Godot game engine

#8
post #2

So once upon a time I stumbled upon simulating fluids in gamedev and I really wanted to learn how it works. Fast forward 2 months and I decided to write down everything I learned to hopefully make it easier for others in the future!

excellent article, great vulgarisation and human written !

Thank you

Post reply on HN