[Bf-blender-cvs] [0026ca09def] master: Revert "Volumes: make Mesh to Volume modifier independent of object transforms"

Brecht Van Lommel noreply at git.blender.org
Mon Oct 5 11:41:41 CEST 2020


Commit: 0026ca09defb26b4137ac66a94d1ba757239aa32
Author: Brecht Van Lommel
Date:   Mon Oct 5 11:20:59 2020 +0200
Branches: master
https://developer.blender.org/rB0026ca09defb26b4137ac66a94d1ba757239aa32

Revert "Volumes: make Mesh to Volume modifier independent of object transforms"

This reverts commit 66cd82a8d. This was based on a misunderstanding. We do want
to take into account transforms similar to other modifiers like booleans, to
support taking into account animated transforms, combining multiple meshes into
one volume, etc.

===================================================================

M	source/blender/modifiers/intern/MOD_mesh_to_volume.cc

===================================================================

diff --git a/source/blender/modifiers/intern/MOD_mesh_to_volume.cc b/source/blender/modifiers/intern/MOD_mesh_to_volume.cc
index 2d6791cbe68..6fdc78c6ce9 100644
--- a/source/blender/modifiers/intern/MOD_mesh_to_volume.cc
+++ b/source/blender/modifiers/intern/MOD_mesh_to_volume.cc
@@ -120,6 +120,7 @@ static void initData(ModifierData *md)
 static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
   MeshToVolumeModifierData *mvmd = reinterpret_cast<MeshToVolumeModifierData *>(md);
+  DEG_add_modifier_to_transform_relation(ctx->node, "Mesh to Volume Modifier");
   if (mvmd->object) {
     DEG_add_object_relation(
         ctx->node, mvmd->object, DEG_OB_COMP_GEOMETRY, "Mesh to Volume Modifier");
@@ -197,9 +198,7 @@ static float compute_voxel_size(const MeshToVolumeModifierData *mvmd,
   return voxel_size;
 }
 
-static Volume *modifyVolume(ModifierData *md,
-                            const ModifierEvalContext *UNUSED(ctx),
-                            Volume *input_volume)
+static Volume *modifyVolume(ModifierData *md, const ModifierEvalContext *ctx, Volume *input_volume)
 {
 #ifdef WITH_OPENVDB
   using namespace blender;
@@ -216,7 +215,8 @@ static Volume *modifyVolume(ModifierData *md,
   }
   BKE_mesh_wrapper_ensure_mdata(mesh);
 
-  const float4x4 mesh_to_own_object_space_transform = object_to_convert->obmat;
+  const float4x4 mesh_to_own_object_space_transform = float4x4(ctx->object->imat) *
+                                                      float4x4(object_to_convert->obmat);
   const float voxel_size = compute_voxel_size(mvmd, mesh_to_own_object_space_transform);
 
   float4x4 mesh_to_index_space_transform;
@@ -263,7 +263,7 @@ static Volume *modifyVolume(ModifierData *md,
   return volume;
 
 #else
-  UNUSED_VARS(md);
+  UNUSED_VARS(md, ctx);
   UNUSED_VARS(compute_voxel_size);
   BKE_modifier_set_error(md, "Compiled without OpenVDB");
   return input_volume;



More information about the Bf-blender-cvs mailing list