fluid-engine-dev
fluid-engine-dev copied to clipboard
More examples & demos
Jet come with several example simulations and there are some demo videos generated from the examples. It would be great if we can have better and broader set of examples. Below are my short wishlist:
- FLIP or APIC simulation with complex boundary settings
- Liquid (level set or hybrid) sim with high viscosity, maybe time varying
- More smoke sim demos
- Interactive demos (when
viz
andgpu
branch is merged)
It would be also great if we can create something more creative than the existing demos that are too technical.
Interactive demos (when viz and gpu branch is merged)
Does this imply that realtime rendering / demos (i.e. OpenGL) are being worked on?
I see jet.viz with a bunch of OpenGL files. Exciting!
What help needed did you have in mind for interactive / realtime?
There is super simple 2D smoke demo ingpu
branch actually. The solver is still based on CPU yet.
For any help on the interactive demos, I think simple game-like 2-D demo could be fun. For example, Figure 4 from the following paper shows some interesting stuff: http://graphics.snu.ac.kr/publications/journals/2005%20Song%20ACM%20TOG.pdf You can pour water or add boundaries interactively, and I think that could be a nice demo.
I got the gpu
branch, compiled, and ran stam_sf
smoke demo on my 2015 MacBookPro (ATI graphics, no CUDA). Worked great.
Fig4
would be a great 2nd demo, agreed. I have lots of experience with OpenGL/games, but just reading the fluidengine book now. I'll keep this idea in mind as i read, and check back here when I understand the fluid side enough to execute on the idea.
Thanks, @subatomicglue. That would be awesome :)
BTW, stam_sf
demo is from Jos Stam's 2003 GDC presentation and will be excluded before merge. (It's the most minimal fluid solver you can get which is great for perf baseline.) Please try out smoke_sim2d
which uses Jet implementation.
I would like to add a demos video, but so far I have run into difficulties. The convert function runs slowly on a large number of particles (3 million).
converter = pyjet.AnisotropicPointsToImplicit3(0.1, 0.5, 0.5, 25, True)
converter.convert(points, grid)
Does this function convert particles to voxels?
I have a baked sequence of 900 frames. Converting particles to mesh is too slow at a resolution of 480 voxels. Is it possible to speed up or optimize this function in any way?
So far I have been able to bake and render a limited number of frames. I adapted the scene taken from here for jet fluids: https://youtu.be/-IiRzmfs5aw
Here is the result:
LuxCoreRender
Cycles
Simulation Method: APIC.
This is amazing, @PavelBlend ! Yeah, current meshing methods use regular grids which makes it slow. I want to implement adaptive version which should make performance better, and I do have early code for that. Let me see what I can do in the short term + more documentation you asked earlier.