Weekly Development Notes #47 – Reworking Our Fluid Particle System

Covering the week of February 1st – 5th, 2021.

Welcome to our 47th development update for the FLIP Fluids liquid simulation addon for Blender! Last week’s work mostly involved starting a re-write of our simulation engine’s fluid particle system. We’ll cover that in this post as well as a few other items.

Particle System Rewrite

In order to support new and interesting features, we need to rework our particle system to be more extensible. This is our fluid particle system internal to our simulation engine which handles how particles are managed and stored – not to be confused with Blender’s particle system.

The motivation for the particle system rewrite is to be able to attach more data to the fluid particles and in a flexible manner. Up until this rewrite, our fluid particles could only store two vectors: one vector for the particle’s position, and another for the particle’s velocity. This is the minimum amount of data that the particles need for basic fluid simulation. But to add some requested features, we now need to be able to add more attributes to the particles. We also want to only add extra attributes to the particles when an enabled feature needs the attribute, as this extra data increases memory usage.

In the near future, we need to attach a lifetime value to each particle so that particles can be removed after their lifetime expires. This feature is part of a popularly requested effect where fluid flows through a turbulence force field while the liquid fades out after some time (think of an effect like a liquid flame). Another example of why a better particle system is needed would be in adding an APIC (Affine Particle-In-Cell) solver which requires a 3×3 matrix to be attached to each particle.

New Development Workstation

Dennis has been testing out our new FLIP Fluids development workstation. This is a ‘small’ workstation with a Ryzen9 3950x (16×3.5Ghz) CPU, 64GB RAM, and an RTX 3070 GPU. This will be great for simulations, rendering, video productions, and the 3950x will be very useful for testing and improving multithreaded performance for highly threaded CPUs.

Check out the first simulation test from the new system! This simulation was run at a 0.2x time scale for slow motion and then slowed down 4x further in post processing with DaVinci Resolve using an Optical Flow retiming process.

We’re now sponsors of the Poly Haven project!

Along with E-Cycles and CG Cookie, we have also recently become corporate gold sponsors of the Poly Haven project! Poly Haven is a merging of the popular HDRI Haven, Texture Haven, and 3D Model Haven platforms.

Poly Haven Sponsors

The Haven platforms provide 100% free and high quality CC0 assets. You can learn more about the Poly Haven platform on their FAQ. We’ve been big fans of the Haven platforms, especially their HDRI assets which have been incredibly useful to us. We use them in almost all of our example scenes!

More Development Notes

  • Adding a keyframe to the Min/Max substeps value affects whitewater generation (Issue #516) – Fixed a weird bug where adding a keyframe to any Min/Max property could overwrite all other Min/Max values when exported to the simulator. A side effect of this bug was that it could affect whitewater generation as the whitewater panel contains most of the Min/Max properties. This bug has gone unnoticed or unreported in the simulator since October 2017!
  • Adding support for Python 3.9 – The most recent Blender releases use Python 3.7. From a recent report, we have found out that some Linux distributions (Ex: Arch Linux) package Blender with Python 3.9 and this causes an error when attempting to use our FLIP Fluids addon. Although Python 3.9 is not officially supported in Blender yet, we can make some easy and small modifications in order to support Python 3.9 so that our addon can be used in a wider variety of Linux distributions.
  • New Documentation: error troubleshooting ‘The fluid engine version <0.0.9> is not compatible with the addon version <1.0.9> – This common error can occur if multiple versions of the FLIP Fluids addon are installed on top of each other. Prevention of this error requires following the installation instructions of restarting Blender before installing a new version. If this error does occur, first try restarting Blender and trying again. If the error persists, re-install the new version according to the Updating the Addon instructions.

The two fixes mentioned above will be available in next week’s experimental version 9.0.9.14 (February 17, 2021).