doyubkim / fluid-engine-dev

Fluid simulation engine for computer graphics applications
https://fluidenginedevelopment.org/
MIT License
1.88k stars 264 forks source link

More examples & demos #141

Open doyubkim opened 6 years ago

doyubkim commented 6 years ago

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:

It would be also great if we can create something more creative than the existing demos that are too technical.

subatomicglue commented 6 years ago
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?

doyubkim commented 6 years ago

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.

subatomicglue commented 6 years ago

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.

doyubkim commented 6 years ago

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.

PavelBlend commented 4 years ago

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: lux LuxCoreRender

cycles Cycles

Simulation Method: APIC.

doyubkim commented 4 years ago

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.