FLIP Fluids Addon: A liquid fluid simulation tool for Blender


(RLGUY) #485

Hey Pavel_Blend,

It’s difficult to say at this point when variable viscosity will be added into the simulator. We actually have a prototype implementation for variable viscosity that was created about six months ago, but we have not been actively developing this branch lately and want to wait until the Blender 2.8 Python API is released before we continue. The current variable viscosity implementation has a few problems that need to be solved. It is very difficult for the user to use at this point. It is too easy for the user to create a simulation that becomes unstable, so we need to figure out how to modify the viscosity solver to be more predictable, stable, and easy to use.

After variable viscosity makes it into the official addon, we hope to begin experimenting with multiple material meshing (separate and mixed fluids). We do not plan to implement multiphase fluids that are mixes of liquid and gas. Only mixed liquids.

Our version goals look like this at the moment:

  • v1.0.5 - Decoupled Baking, Surface Tension, Alembic Integration, 2.8 support
  • v1.0.6 - Support for Blender forces
  • v1.0.7 - Variable Viscosity

These goals may be affected by when the Blender 2.8 Python API is officially released. So the timeline could end up looking like this if the API is released early:

  • v1.0.5 - Surface Tension, Alembic Integration, 2.8 support
  • v1.0.6 - Decoupled Baking
  • v1.0.7 - Support for Blender forces
  • v1.0.8 - Variable Viscosity

Or if the API is released late:

  • v1.0.5 - Decoupled Baking, Surface Tension, Alembic Integration
  • v1.0.6 - 2.8 Support
  • v1.0.7 - Support for Blender forces
  • v1.0.8 - Variable Viscosity

I’m not able to give exact dates for when the next versions will be released. This will depend on if we run into problems, unexpected delays, time required to develop features.

- Ryan

(RLGUY) #486

Hey everyone, just letting you know that the Blender Market Summer Sale has just begun! The sale will run from September 18th through 21st. This is your chance to get those addons, models, and assets you’ve been eyeing for 25% off!

(Tedri Mark) #487

Is anyone else having trouble with alembic export?

I did have it working previously, but now it doesn’t seem to be working - on a mac, with the ‘my first experiment’ scene (Although initially I was trying to export something more complex) Blender 2.79b from march running on OSX.

EDIT: Same on Win 10 2.79.6 from a few days ago.

(RLGUY) #488

Hey Tedri_Mark,

What is going wrong with the Alembic export? Is it crashing, or just not exporting any meshes?

On my system, I find that the Alembic exporter is quite unreliable and results in frequent crashes. I am working on integrating Alembic directly into the addon so that we can write our own custom Alembic exporter and bypass the Blender exporter.

- Ryan

(Pavel_Blend) #489

I have a question:
why does not the water look realistic?
Because there is no Surface Tension?
But in the simulator Elbeem, too, there is no surface tension.
And the simulation of water in Elbeem looks realistic.
And why, when modeling water, should viscosity be turned off?
In the Embeel simulator, the viscosity of the water is not zero.
A is 1 * 10 ^ -6
It seems to me that water is not realistic in small-scale scenes.
This is due to the fact that there is no viscosity in FLIP Fluids for water?

(Tedri Mark) #490

It exports no problem, but the scene it exports isn’t animated.

I’ve really only exported alembic maybe 4 times in my life, with the first time being to test the FLIP fluid addon maybe a month ago or so, so it could well be me not exporting properly, although I recall first time round being impress that it ‘just worked’ and being able to see the fluid in 2.8

(tomiv87) #491

I bought the addon from sale, and I gotta say its awesome, so thanks RLGUY for making this.

One question: I cant find particle size randomness slider though. Is that something you cant adjust atm? I mean all the bubbles are same sized atm, and I would like to have some variation there.

(RLGUY) #492

I would say that it is a lack of surface tension forces which makes small-scale scenes unrealistic.

Scene Troubleshooting: Difficulty achieving small scale fluid effects with small World Size:

The FLIP simulation method excels at large scale fluid effects, but can lack in realism for small-scale fluid effects. This is due to the lack of surface tension forces in the simulation method, which play a larger role in small scale fluid effects.

We are actually in the process of adding a surface tension parameter to the addon to help with creating small-scale fluid effects. An early development test is rendering at the moment so I’ll update with the full animation tonight.

It sounds the the export issue is related to this workaround where you need to add a modifier to the fluid surface/whitewater: Scene Troubleshooting: Export to Alembic cache is not exporting animated meshes.

Unfortunately there is no functionality for setting random particle sizes. This would be possible if the whitewater system was implemented as a Blender particle system, but for addons there is limited access to particle system data so we were not able to make the whitewater as a particle system. The whitewater is actually implemented as a mesh of vertices and dupliverts is used to duplicate particles over the vertices. This method is limited to uniform sized particles.

There are changes to particle systems in Blender 2.8, so I am hoping we will be able to make it so that whitewater is controlled by a particle system when 2.8 is supported.

(Grimm) #493

Awesome, adding surface tension will be great!

(RLGUY) #494

And the comparison animation just finished rendering:

(lumpyoatmeal) #495

That’s going to really make it very nice!

Does the surface tension change its behavior when you make a fluid object, e.g., a cube, in zero gravity? Someone was saying that my cube of fluid in zero gravity looked more like gelatin and I responded that it could be due to a lack of surface tension, but then I added another comment saying that it could also be from air pressure. They were thinking of the space station scenes where floating fluids become spherical.

(RLGUY) #496

The strength of surface tension is based on amount of curvature. The force of surface tension is in the negative direction of the surface normal (using convention of normal pointing outwards, positive curvature for convex, negative curvature for concave). Sharper curvature corresponds to stronger surface tension forces.

A cube in zero g would initially have the strongest force at the corners. The object would ripple around and eventually settle as a sphere.

(bernardothecat) #497

I plan on building a 32 core Threadripper system with either 64GB or 128GB of RAM. Would 128GB of RAM be overkill for averagely sized simulations rendered at 4k? I realize my use is vague but I would rather err on the safer side of things.

BTW, this addon looks amazing!!!

(Tedri Mark) #498

Ah yes! I’d seen this but for some reason skim reading this made me think that it was just related to whitewater bubbles/particles. I’ll give that a go.

The work on surface tension is great - without looks like thick ketchup or paint splatting at the edges whereas with it is acting much more like water, albeit on a hydrophobic surface. Would there be any way in future to model the way various liquids cling to different surfaces?

(3dcal) #499

Just bought the addon, and very impressed with all the controls, realism…endless possibilities!

BTW, here are many tutorials…some for FF in Houdini, but maybe translate to Blender, too?

Many thanks for taking time to create the addon, all the detailed documentation, support, and the reasonable pricing! :grinning:

(RLGUY) #500


64GB would be more than enough for simulation. These two animations were my largest simulations and ran under 22GB: Fluid in an Invisible Box (in an Invisible Box), and recently Wall Fracture.

I am not sure about rendering requirements, but I would think 64GB would be sufficient for CPU rendering. For GPU rendering you might want a card with a high amount of VRAM. Someone with more knowledge of rendering might be better at answering this.

You may run into performance problems running fluid simulation with CPUs running many cores such as a threadripper. The FLIP method isn’t highly parallelizable and will run best on a CPU with high single threaded clock speed and capable of running 8 - 16 threads for the parallelizable parts. The simulator runs a series of calculations with some calculations able to run on multiple threads and some calculations that can only be run on a single thread. A threadripper will be able to blast through the multithreaded calculations, but may slog through the single thread calculations slowly if the clockspeed is low.

We’re still testing and developing the surface tension feature, so we’ll need to research and experiment with different ways for how we can model boundary conditions (fluid-surface interaction) in the simulator. At the moment, the two most influential parameters for controlling how the liquid interacts with the surfaces are with the friction parameter and strength of surface tension.

Thanks, glad to hear! Many of the concepts in Houdini do not translate well into Blender due to limitations in the UI and how Blender allows addons to access data. Houdini simulations are highly customizable with their node-based systems and possibilities are endless. I do watch Houdini tutorials occasionally to get ideas for what kind of features can be added into the FLIP Fluids addon. The whitewater system/parameters is actually based on Houdini’s whitewater solver and many of the controls are similar.

(lumpyoatmeal) #501

RLGUY you may have already looked at numpy but in case you haven’t I thought I’d pass this along. This might actually encourage me to learn python programming (in blender).

(lumpyoatmeal) #502

It may be prudent to get 16gb memory sticks so that you can add more memory if you start to run low. I sometimes get an idea for something and will start a second simulation while one is already running and sometimes use the Task Manager to lower the priority of one of them.

Or you may have one rendering and want to start a new simulation running. The rendering one needs to read in the fluid’s mesh before it can render it.

What GPU are you planning on getting? I was under the impression that the AMDs needed to recompile something for every frame but that turns out to not be true. One advantage with AMDs is that they can use system memory in addition to what’s on the video card. Price also. I plan on building my next system with the 2950.

(RLGUY) #503

Numpy is pretty useful library, and very cool that it is integrated into Blender by default. During development of the addon I have not found a use for Numpy in the addon Python code since we do all of our heavy math in the C++ fluid engine.

This post has reminded me of the Eigen numeric library. The vectorization technology that makes Numpy do calculations quick is also present in the C++ Eigen library. The fluid engine actually used to use Eigen in early development over three years ago, but was removed since there were no measurable benefits compared to our own solution. The negligible performance gains could have been due to the fact that in early development, the simulator could only handle smaller simulation setups. Now that the simulator is more robust, it can handle much much larger scenes, so there is a possibility that Eigen may give performance benefits.

Eigen would be used in the pressure and viscosity solvers. In early development, solver calculations involved vector operations of a maximum of 500,000 dimension. Now, a large simulation could involve vector operations of 12,000,000 dimension+. These vector operations are computed hundreds of times per substep before the the solver reaches its conclusion.

I have opened an issue as a ‘todo’ to test if Eigen can increase performance in the fluid engine: #387.

(lumpyoatmeal) #504

Ah hah, I didn’t know that numpy was integrated into blender. I had a vague feeling that i’d see it’s name at some point.