Weekly Development Notes #2 – Improving world scaling workflow

Covering the week of December 16th – 20th, 2019.

Hello, this is Ryan here and welcome to this week’s development update!

Future Changes to the UI

This week I’ve made some changes to clean up the UI and improve workflow.

New World Scaling Modes: Relative and Absolute

Scaling the world size is important to ensure realistic motion of fluids (documentation). In the next version (> 1.0.7), there will be two different modes for settings the world size of your domain:

New world scaling options: Relative and Absolute
  • Absolute – This mode is how the world scaling option works in the current version (1.0.7). Inside of the simulator, the longest side of the domain will be scaled to this value in meters. For example, if you set this value to 12.0 meters, the fluid will be simulated to the scale as if the longest side of your domain is 12.0 meters long.

    A downside of this mode is that it cannot handle resizing the domain. Let’s say you want to resize the domain to be longer so that there is more room for the fluid to flow. So you increase the length of your domain, but it is still considered to be 12.0 meters in the simulator. Using this mode, you must manually calculate and adjust the new absolute scaling value whenever you change the size of your domain. That is why we are adding a new Relative scaling mode.
  • Relative – This mode allows you to specifically set how large a Blender unit will be inside of the simulator. By default, 1 Blender Unit = 1 meter in the simulation. The benefit of this mode is that the scale is always consistent when changing the size of your domain!

This new UI has been designed so that you can switch seamlessly between Relative and Absolute mode. Use Absolute mode when you want to set a known scale for your domain and then switch to Relative mode for the rest of your simulation setup so that the scale is consistent whenever you change the size of your domain.

Here is an example workflow. Let’s say you have a boat model in your scene and that it is not modeled to scale of 1 Blender Unit = 1 meter, but you know the boat should be 36 meters long in real life. Here’s how you can use Absolute and Relative scaling in your workflow:

  1. Size the length of your domain to match the length of the boat model
  2. Using Absolute mode, set the domain length to 36 meters
  3. Switch to Relative mode and adjust the size of your domain to your liking.

Now that you have set the Absolute scale and switched to Relative scale, the domain will always have a consistent scale where you boat is always simulated as 36.0 meters long. So easy!

Applying Relative and Absolute mode to grid resolution

This relative/absolute workflow can also apply to the domain resolution grid. Our plans are to also add two similar modes for adjusting domain resolution:

  • Resolution Mode – Analogous to Absolute mode. This setting divides the longest side of the grid into this many grid cells. But has the problem that the grid cell size changes when resizing the domain.
  • Cell Size Mode – Analogous to Relative mode. The size of a grid cell can be understood as the smallest amount of physics detail that can be resolved in the simulator (similar to a pixel in a 2d image). This mode will allow you to set the specific size of a grid cell and will automatically update the absolute resolution as you resize the domain. This works similarly to how the current Lock Cell Size option works.

After updating the grid resolution settings to this new system, we will likely move the world scaling options to be close to the resolution settings since they have related interactions.

More UI Changes:

  • Gravity mode (Scene/Custom) in the FLIP Fluid World panel has been changed to a horizontal selector rather than a vertical drop down menu to be consistent with other UI elements.
  • Options to set Start/End timing values in the FLIP Fluid Simulation panel have been removed. The only way to set timing is to use the default frame rate mode. The Start/Time values were confusing to users and in my opinion, not a good workflow for adjusting timing of the simulation. These values were only included to be consistent with how the internal Elbeem simulator timing worked. Now that Mantaflow has removed this system, I feel it is a good time for us as well. Setting frame rate is much easier.
  • Now that the Start/End time UI elements have been removed, there is room to add two frame rate modes: use the frame rate specified in the scene render settings, or set a custom frame rate.
  • Removed the Compute Chunks setting (automatic/manual) from the FLIP Fluids surface panel. This was originally for debugging purposes when developing the mesh generator, but now is no longer needed. The user should not have to be concerned about this option, so it is now hidden from the UI.

More Development Notes:

  • Bug Fix: issue #484 – Thanks to a tip from PavelBlend, the particle size in the particle debug visualizer can now be adjusted in Blender 2.8!
  • Bug Fix: issue #485 – Due to a misunderstanding in how Blender objects are exported, cloth simulations and perhaps other deforming meshes may not be recognized correctly as animated objects and may be missing velocity data within the simulator. See bug report for workaround and more details.
  • New Documentation topics:

2019 Winter Holiday!

2019 is coming to a close! We’ve had such a fantastic year and have appreciated all of the support and encouragement from the Blender community. The FLIP Fluids project will be taking a short development break this holiday season and regular development will resume on Jan 6th, continuing throughout 2020! As we will be away, the next two weekly updates will be skipped.

In this effect, there is not actually any simulated mixing of fluids. This illusion is created by stacking simulations one after the other! The output of a simulation is used as an obstacle for the next simulation by exporting the fluid mesh to an Alembic (.abc) cache.

Have a merry Christmas, happy holidays, and enjoy the new year!