diff options
author | Brecht Van Lommel <brecht@blender.org> | 2020-06-22 17:36:07 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2020-06-22 17:53:09 +0300 |
commit | 461ba2c74cf25a20cc25ab9edd7aace82e5557d2 (patch) | |
tree | 2c78690be0e65d02a1fca1df5daab66475e51ef1 | |
parent | 4a68bf2078b8e03ab321f56f494166579a593170 (diff) |
Fix random crash in Cycles smoke volume loading
Don't access evaluated mesh data after freeing Blender depsgraph.
Potentially related to T77954.
-rw-r--r-- | intern/cycles/blender/blender_volume.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/intern/cycles/blender/blender_volume.cpp b/intern/cycles/blender/blender_volume.cpp index 4eed6be8c7c..ad199807752 100644 --- a/intern/cycles/blender/blender_volume.cpp +++ b/intern/cycles/blender/blender_volume.cpp @@ -35,8 +35,10 @@ CCL_NAMESPACE_BEGIN class BlenderSmokeLoader : public ImageLoader { public: BlenderSmokeLoader(BL::Object &b_ob, AttributeStandard attribute) - : b_domain(object_fluid_gas_domain_find(b_ob)), b_mesh(b_ob.data()), attribute(attribute) + : b_domain(object_fluid_gas_domain_find(b_ob)), attribute(attribute) { + BL::Mesh b_mesh(b_ob.data()); + mesh_texture_space(b_mesh, texspace_loc, texspace_size); } bool load_metadata(ImageMetaData &metadata) override @@ -77,9 +79,7 @@ class BlenderSmokeLoader : public ImageLoader { /* Create a matrix to transform from object space to mesh texture space. * This does not work with deformations but that can probably only be done * well with a volume grid mapping of coordinates. */ - float3 loc, size; - mesh_texture_space(b_mesh, loc, size); - metadata.transform_3d = transform_translate(-loc) * transform_scale(size); + metadata.transform_3d = transform_translate(-texspace_loc) * transform_scale(texspace_size); metadata.use_transform_3d = true; return true; @@ -177,7 +177,7 @@ class BlenderSmokeLoader : public ImageLoader { } BL::FluidDomainSettings b_domain; - BL::Mesh b_mesh; + float3 texspace_loc, texspace_size; AttributeStandard attribute; }; |