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:
authorHans Goudey <h.goudey@me.com>2020-09-01 20:35:14 +0300
committerHans Goudey <h.goudey@me.com>2020-09-01 20:38:05 +0300
commitbaca8611e5fe4b3dcd6f5065fb125bc0a9d65934 (patch)
treebb1230387cd53b15f9621f10c4d0e5e2050b5580 /source/blender/modifiers/intern/MOD_meshdeform.c
parent31705201dddebf7e3be5c4533b89f380aad1ede1 (diff)
parent2930d4fcea405985f2212c5f28c061af7c4849f8 (diff)
Merge branch 'master' into active-fcurve-keyframeactive-fcurve-keyframe
Diffstat (limited to 'source/blender/modifiers/intern/MOD_meshdeform.c')
-rw-r--r--source/blender/modifiers/intern/MOD_meshdeform.c37
1 files changed, 12 insertions, 25 deletions
diff --git a/source/blender/modifiers/intern/MOD_meshdeform.c b/source/blender/modifiers/intern/MOD_meshdeform.c
index ae031bffb04..4dee70608f8 100644
--- a/source/blender/modifiers/intern/MOD_meshdeform.c
+++ b/source/blender/modifiers/intern/MOD_meshdeform.c
@@ -37,7 +37,6 @@
#include "BKE_context.h"
#include "BKE_deform.h"
#include "BKE_editmesh.h"
-#include "BKE_global.h"
#include "BKE_lib_id.h"
#include "BKE_lib_query.h"
#include "BKE_mesh.h"
@@ -332,12 +331,7 @@ static void meshdeform_vert_task(void *__restrict userdata,
if (totweight > 0.0f) {
mul_v3_fl(co, fac / totweight);
mul_m3_v3(data->icagemat, co);
- if (G.debug_value != 527) {
- add_v3_v3(vertexCos[iter], co);
- }
- else {
- copy_v3_v3(vertexCos[iter], co);
- }
+ add_v3_v3(vertexCos[iter], co);
}
}
@@ -353,9 +347,8 @@ static void meshdeformModifier_do(ModifierData *md,
Mesh *cagemesh;
MDeformVert *dvert = NULL;
float imat[4][4], cagemat[4][4], iobmat[4][4], icagemat[3][3], cmat[4][4];
- float co[3], (*dco)[3] = NULL, (*bindcagecos)[3];
+ float(*dco)[3] = NULL, (*bindcagecos)[3];
int a, totvert, totcagevert, defgrp_index;
- float(*cagecos)[3] = NULL;
MeshdeformUserdata data;
static int recursive_bind_sentinel = 0;
@@ -406,7 +399,7 @@ static void meshdeformModifier_do(ModifierData *md,
/* verify we have compatible weights */
totvert = numVerts;
- totcagevert = cagemesh->totvert;
+ totcagevert = BKE_mesh_wrapper_vert_len(cagemesh);
if (mmd->totvert != totvert) {
BKE_modifier_set_error(md, "Vertices changed from %d to %d", mmd->totvert, totvert);
@@ -422,27 +415,22 @@ static void meshdeformModifier_do(ModifierData *md,
goto finally;
}
- /* setup deformation data */
- cagecos = BKE_mesh_vert_coords_alloc(cagemesh, NULL);
- bindcagecos = (float(*)[3])mmd->bindcagecos;
-
/* We allocate 1 element extra to make it possible to
* load the values to SSE registers, which are float4.
*/
dco = MEM_calloc_arrayN((totcagevert + 1), sizeof(*dco), "MDefDco");
zero_v3(dco[totcagevert]);
+
+ /* setup deformation data */
+ BKE_mesh_wrapper_vert_coords_copy(cagemesh, dco, totcagevert);
+ bindcagecos = (float(*)[3])mmd->bindcagecos;
+
for (a = 0; a < totcagevert; a++) {
/* get cage vertex in world space with binding transform */
- copy_v3_v3(co, cagecos[a]);
-
- if (G.debug_value != 527) {
- mul_m4_v3(mmd->bindmat, co);
- /* compute difference with world space bind coord */
- sub_v3_v3v3(dco[a], co, bindcagecos[a]);
- }
- else {
- copy_v3_v3(dco[a], co);
- }
+ float co[3];
+ mul_v3_m4v3(co, mmd->bindmat, dco[a]);
+ /* compute difference with world space bind coord */
+ sub_v3_v3v3(dco[a], co, bindcagecos[a]);
}
MOD_get_vgroup(ob, mesh, mmd->defgrp_name, &dvert, &defgrp_index);
@@ -464,7 +452,6 @@ static void meshdeformModifier_do(ModifierData *md,
finally:
MEM_SAFE_FREE(dco);
- MEM_SAFE_FREE(cagecos);
}
static void deformVerts(ModifierData *md,