Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/blender/modifiers/intern/MOD_surfacedeform.c14
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);