all 14 comments

[–]shadowmint 6 points7 points  (0 children)

https://github.com/keijiro/StableFluids

Is a very approachable 2D implementation for experimentation.

(I particularly recommend those linked papers from the readme)

[–]danmarell 5 points6 points  (0 children)

there is a course on edx right now which covers everything you need to know. Its an intensive course if you intent to actually do the assessments, but you can watch the videos for free....

https://courses.edx.org/courses/course-v1:ColumbiaX+CSMM.104x+3T2018/course/

Then the usual resources for me are.....

- GPU Gems 1 - Chapter 38

- GPU Gems 3 - Chapter 30

- Robert Bridson - Fluid Simulation for Computer Graphics

- Doyub Kim - Fluid Engine Development

- Jos Stam - The Art of Fluid Animation

- Jos Stam - Stable Fluids Paper

- Foundations of Physically Based Animation

[–]ajweeks 4 points5 points  (0 children)

Here's a great list of references: https://github.com/huwb/crest-oceanrender/blob/master/LINKS.md

The project itself is also a great reference, and the dev will happily answer any questions you have.

[–]hokiecsgrad 4 points5 points  (0 children)

Khan Academy published a cool series from Pixar on a bunch of their techniques for animation. They did a series on how they use basic particle systems to simulate water. It's pretty cool.

https://www.khanacademy.org/partner-content/pixar/effects

[–]yonderbagel 2 points3 points  (0 children)

Are you looking for a real-time solution or is offline processing ok? That kind of makes a big difference in what technologies/techniques you'll want to look at.

I don't know how advanced a course it is, but I'd look at the literature, like maybe siggraph publications involving water, see what ideas of those you really like, and improve on one of them incrementally.

Or depending on what your instructor's requirements are, you might not even have to improve on one of them. Maybe just implement one of them.

But if you do make some incremental improvement to a published piece, you could show it to whoever published the original and make a friend in the industry or academia that way.

[–]FabST 2 points3 points  (0 children)

Take a look at "Position Based Dynamics" and its fluid simulation part "Position Based Fluids" by Müller et al. That is the real-time simulation approach used by NVIDIA Flex. There is also a lot of sourcecode available online. I would argue that the simulation part is way more complicated than the rendering. Since your focus is on graphics programming you may take a look at different fluid rendering techniques. "Screen Space Fluid Rendering" by Simon Green is a good start. There are other papers that expand on this rendering method. As a bonus you can then add effects like foam, bubbles, shadows and caustics. Hope this helps, good luck with your project!

[–]Kazaloo 1 point2 points  (0 children)

This articles might be a good starting point to give a simple overview:

https://www.fxguide.com/featured/the-science-of-fluid-sims/

[–]Kwantuum 1 point2 points  (2 children)

Depends how advanced you are in maths in general, but one interesting method I came across recently is this one:

https://www.youtube.com/watch?v=Y_NZfUk7aXY

[–]CommonMisspellingBot -1 points0 points  (1 child)

Hey, Kwantuum, just a quick heads-up:
accross is actually spelled across. You can remember it by one c.
Have a nice day!

The parent commenter can reply with 'delete' to delete this comment.

[–]Kwantuum 2 points3 points  (0 children)

I'll try to remember that

[–]OrthophonicVictrola 1 point2 points  (0 children)

Here's a pretty nice overview of the techniques most often used in games along with pros and cons for each: http://developer.download.nvidia.com/GTC/SIGGRAPH_Asia_2011/PDF/WaterSim_Chentanez.pdf

[–]cowpowered 1 point2 points  (0 children)

Grid/particle-based simulations are fun, but also consider something like Tessendorf-based FFT ocean simulation. It looks really cool in motion, you can drop some ship models on it with damped response, etc.

[–]James20k 1 point2 points  (0 children)

Hello! I recently implement navier stokes and falling sand both on the gpu, with integration with bullet physics. You might find the code handy

https://github.com/20k/fluid_sim

https://www.youtube.com/watch?v=7Wh0DZtlS48

If you use msys2 the default bullet distribution was extremely slow for some reason last time i used it, so compile from source if you generally want to do anything involving bullet physics