rlguy / Blender-FLIP-Fluids

The FLIP Fluids addon is a tool that helps you set up, run, and render high quality liquid fluid effects all within Blender, the free and open source 3D creation suite.
https://www.blendermarket.com/products/flipfluids
GNU General Public License v3.0
1.71k stars 191 forks source link

Foam instance object choice isn't exposed to the user if geometry nodes motion blur is enabled #615

Closed Tallone55 closed 1 year ago

Tallone55 commented 1 year ago

Blender Version: Blender 3.5.1 e1ccd9d4a1d3 FLIP Fluids Version: 1.6.3 Operating System: Linux Mint 21.1 CPU: AMD Ryzen 9 3900X GFX: Nvidia RTX 3090 24 GB RAM: 64 GB

Bug description After initializing motion blur, The Particle Object Settings Mode: field located within the FLIP Fluid Whitewater tab no longer allows instance object selection. Neither do the whitewater_bubble, whitewater_dust, whitewater_foam, or whitewater_spray objects' geometry nodes modifiers as the now empty Particle Object Settings Mode field suggests. Modifying the geometry nodes setup to attempt to instance the objects manually merely adds additional geometry and reduces viewport performance.

If the settings I'm searching for are located in another part of the interface not mentioned here, then this bug pertains to them not being mentioned in the documentation or their former location within the interface before motion blur is enabled.

To Reproduce 1: Save a new .blend file 2: Use the default cube as a FLIP Fluids domain 3: Add a UV sphere scaled to 0.5 inside the domain 4: Set the sphere as a 'Fluid' type FLIP object in the physics tab 5: Enable Whitewater Simulation in the FLIP Fluid Whitewater domain physics tab 6: Within the 'N' panel in the viewport with the domain selected, click the Initialize Motion Blur button 7: Observe that the instance object options are no longer present in the documented locations (geometry node modifier or Particle Object Settings)

Expected Behaviour If Motion blur is initialized, and the whitewater instance object settings are no longer accessible from the physics tab, users should be able to access the same setting from another location in the interface such as the corresponding geometry nodes modifier, as indicated by the replacement text.

Actual Behaviour If Motion blur is initialized the whitewater instance object settings are not longer accessible from the physics tab. The space they were in indicates they can be accessed within the corresponding geometry nodes modifier. They do they appear to be accessible there, or anywhere else in the interface.

Screenshots Basic FLIP Fluids setup image Desired settings with Motion Blur disabled image Desired settings location after Motion Blur initialized image whitewater_foam object Geonodes modifier image whitewater_foam geonodes tree (note the lack of any object input field within the modifier to control which object we're instancing, while there is a material input) image

Tallone55 commented 1 year ago

Reading the documentation in more detail, I found this section pertaining to whitewater motion blur: https://github.com/rlguy/Blender-FLIP-Fluids/wiki/Domain-Whitewater-Settings#particle-display-settings If I understand this correctly, enabling motion blur causes the particles to be displayed as a point cloud rather than as instanced meshes, which means the settings I'm searching for don't exist anywhere. I honestly can't think of a good way to make that clear to users without just having a note telling them to RTFM, so I empathize with you. :stuck_out_tongue:

rlguy commented 1 year ago

Thanks for the report! You're correct that motion blur rendering will require the whitewater to be converted to point clouds through the geometry node group. At the moment, only spheres are supported as a point cloud shape. The Blender Developers have mentioned in the past that other shapes may be supported in future development of the point cloud, so we will be keeping an eye on that.

I'll close this issue, but let us know if you have any questions.

rlguy commented 1 year ago

Hey, just adding an extra note: I just saw the discussion related to this report on the Blender Community Discord of render initialization performance on Point Clouds vs Instances. In my experience, the render initialization stage will be much slower using instancing instead of point clouds, as well as requiring a large increase in memory usage.

If you would like to test performance of instancing, the whitewater geometry node modifiers can be deleted and the addon will revert back to instancing mode. However, motion blur will not be rendered.

Unfortunately, there is not much more that can be done to improve render initialization times in cases where there is a lot of geometry or points to render. The render initialization stage in Blender seems to be mostly single threaded and can take a long time.

Since you have a large amount of RAM and VRAM, something to try could be to launch two or more Blender render instances at the same time. This can make more use of CPU resources by having multiple renders work on the initialization stage for different frames. By disabling 'Overwrite' and enabling 'Placeholders' in the render output settings, this will make sure each render instance will work on different frames:

image

Hope this info helps!

Tallone55 commented 1 year ago

Hey, thanks for the quick response!

Unfortunately I am running up against my system and video memory limits due to the complex nature of my scene, so while your idea is a good one, I simply don't have the system resources to have multiple instances of the scene loaded at once. As I said on the Blender discord, I think I may have to find other places than the fluid sim to make optimizations.