diff options
author | Campbell Barton <ideasman42@gmail.com> | 2020-06-10 08:54:05 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2020-06-10 08:54:05 +0300 |
commit | 2d1b560a4e29567e4d9c3b964dc7d6a7bfd8056c (patch) | |
tree | dd725f163ace8a8b4d6cfee764f916c399502bae /source/blender/modifiers/intern | |
parent | a4bb4b6e6572e41426ea4bacd06dcbbeb72037e6 (diff) |
Fix T77632: Deform modifier auto-binding not working
Regression in deaff945d0b96
Diffstat (limited to 'source/blender/modifiers/intern')
-rw-r--r-- | source/blender/modifiers/intern/MOD_surfacedeform.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/source/blender/modifiers/intern/MOD_surfacedeform.c b/source/blender/modifiers/intern/MOD_surfacedeform.c index 4a2ed1d71db..8c7227d5b82 100644 --- a/source/blender/modifiers/intern/MOD_surfacedeform.c +++ b/source/blender/modifiers/intern/MOD_surfacedeform.c @@ -38,6 +38,7 @@ #include "BKE_editmesh.h" #include "BKE_lib_id.h" #include "BKE_lib_query.h" +#include "BKE_mesh.h" #include "BKE_mesh_runtime.h" #include "BKE_modifier.h" #include "BKE_screen.h" @@ -1247,8 +1248,8 @@ static void surfacedeformModifier_do(ModifierData *md, return; } - tnumverts = target->totvert; - tnumpoly = target->totpoly; + tnumverts = BKE_mesh_wrapper_vert_len(target); + tnumpoly = BKE_mesh_wrapper_poly_len(target); /* If not bound, execute bind. */ if (smd->verts == NULL) { @@ -1264,6 +1265,9 @@ static void surfacedeformModifier_do(ModifierData *md, invert_m4_m4(tmp_mat, ob->obmat); mul_m4_m4m4(smd_orig->mat, tmp_mat, ob_target->obmat); + /* Avoid converting edit-mesh data, binding is an exception. */ + BKE_mesh_wrapper_ensure_mdata(target); + if (!surfacedeformBind(smd_orig, smd, vertexCos, numverts, tnumpoly, tnumverts, target)) { smd->flags &= ~MOD_SDEF_BIND; } @@ -1322,11 +1326,7 @@ static void surfacedeformModifier_do(ModifierData *md, }; if (data.targetCos != NULL) { - const MVert *const mvert = target->mvert; - - for (int i = 0; i < tnumverts; i++) { - mul_v3_m4v3(data.targetCos[i], smd->mat, mvert[i].co); - } + BKE_mesh_wrapper_vert_coords_copy_with_mat4(target, data.targetCos, tnumverts, smd->mat); TaskParallelSettings settings; BLI_parallel_range_settings_defaults(&settings); |