3
$\begingroup$

I used to manage fluid simulation point caches by copying them to a remote server for cloud rendering, they used to be in modifier.domain_settings.point_cache.point_caches which is no longer the case in 2.93, I can tell from the documentation that they're still there but I don't know where were they moved in the modifier attributes.

I've tried the following code to figure it out with no luck (bpy.types.PointCache did not show up in the results):

import bpy

ob = bpy.context.object
ds = ob.modifiers['Fluid'].domain_settings

for attr in dir(ds):
    print(attr, type(getattr(ds, attr)))
$\endgroup$
1
  • $\begingroup$ Comments are not for extended discussion; this conversation has been moved to chat. $\endgroup$
    – Robert Gützkow
    Jul 5 at 11:14
1
$\begingroup$

The point_cache still exists for the dedicated particle modifiers that are created when Mantaflow is used. There will be a modifier "Liquid Particle System" by default and additional ones are created when spray, foam or bubbles are enabled.

In order to copy the relevant files for the Mantaflow simulation it advisable to simply copy the entire cache directory though. In particular if you are using OpenVDB as format, the particles will be stored together with the grid data, one file per frame. The handling of the particle system was changed in 2.90, as documented in the release notes.

The cache directory can be accessed through the object that acts as domain for the fluid simulation. Assuming that a reference to that object is stored in the variable obj and the modifier has the default name "Fluid" then the cache path can be accessed like this:

obj.modifiers["Fluid"].domain_settings.cache_directory

The API documentation for the fluid modifier can be found here.

$\endgroup$
0
$\begingroup$

This code works for me to bake in version > 2.93. Maybe helps you too.

if modifier.type == 'SMOKE':
                if modifier.smoke_type == 'DOMAIN':
                    print("baking smoke %s %s"%(modifier.type, object.name))
                    override = {'scene': scene, 'active_object': object, 'point_cache': modifier.domain_settings.point_cache}
                    bpy.ops.ptcache.bake(override, bake=True)
$\endgroup$
1
  • $\begingroup$ The point is I'm not just concerned about baking them, I want to copy them to a remote server after they're baked. $\endgroup$
    – Ahmed Ali
    Jul 5 at 8:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.