3 ms·
I worked through these course notes with my lab last year. As someone else commented, Bridson expanded these notes into a book, "Fluid Simulation for Computer G
by slavik81 8y ago
I worked through these course notes with my lab last year. As someone else commented, Bridson expanded these notes into a book, "Fluid Simulation for Computer Graphics." The first edition is basically the free PDF with fixes for things like typos (e.g. the unlabeled variable, rho, in the Conjugate Gradient algorithm).
Robert Bridson does a great job on explaining fluid concepts, and there's a useful appendix on the basics of vector math, but it's definitely still a lot of work to build up a good understanding of the equations.
I own the second edition of the book, released in 2015, though I haven't read too much of it, as I already went through the first in detail. However, I did notice that the second edition emphasizes some important points that were a little subtle in the first edition. That would have made implementing it easier [1].
The other thing about the second edition is that fluid simulation has advanced since 2007. The foundations are still the same, and the pressure solve remains unchanged, but advection has been made both simpler to implement and more accurate by using a particle representation for that portion of the algorithm.
IIRC, the 2nd edition covers FLIP, which is one of those newer techniques, though not the most current. The APIC paper[2] was also released in 2015 (with a video [3]), and it was a bit of a breakthrough. APIC is pretty much better in every way. Fortunately, Bridson's book prepares you well for reading the APIC paper (which assumes you know the standard fluid simulation techniques already).
In short: this free material is a great introduction to fluid simulation. If you want to implement your own simulation, read the second edition of the book, then read the APIC paper.
[1]: The greatest weakness of the notes/book IMO, was the lack of a reference implementation. I never got around to cleaning up the code after I got it working, but here's my implementation. Please forgive the mess: https://github.com/cgmb/euler https://github.com/cgmb/euler
[2]: The affine particle-in-cell method (2015) - https://disney-animation.s3.amazonaws.com/uploads/production/publication_asset/104/asset/apic-aselle-final.pdf https://disney-animation.s3.amazonaws.com/uploads/production...
[3]: https://youtu.be/rPPW_1M8nRA https://youtu.be/rPPW_1M8nRA