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:
Diffstat (limited to 'source/blender/modifiers')
-rw-r--r--source/blender/modifiers/intern/MOD_meshdeform.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/source/blender/modifiers/intern/MOD_meshdeform.c b/source/blender/modifiers/intern/MOD_meshdeform.c
index 83fa544690b..623f4a5ddeb 100644
--- a/source/blender/modifiers/intern/MOD_meshdeform.c
+++ b/source/blender/modifiers/intern/MOD_meshdeform.c
@@ -180,13 +180,13 @@ static void meshdeformModifier_do(
DerivedMesh *tmpdm, *cagedm;
MDeformVert *dvert = NULL;
MDeformWeight *dw;
- MVert *cagemvert;
MDefInfluence *influences;
int *offsets;
float imat[4][4], cagemat[4][4], iobmat[4][4], icagemat[3][3], cmat[4][4];
float weight, totweight, fac, co[3], (*dco)[3], (*bindcagecos)[3];
int a, b, totvert, totcagevert, defgrp_index;
-
+ float (*cagecos)[3];
+
if(!mmd->object || (!mmd->bindcagecos && !mmd->bindfunc))
return;
@@ -251,8 +251,10 @@ static void meshdeformModifier_do(
return;
}
+ cagecos= MEM_callocN(sizeof(*cagecos)*totcagevert, "meshdeformModifier vertCos");
+
/* setup deformation data */
- cagemvert= cagedm->getVertArray(cagedm);
+ cagedm->getVertCos(cagedm, cagecos);
influences= mmd->bindinfluences;
offsets= mmd->bindoffsets;
bindcagecos= (float(*)[3])mmd->bindcagecos;
@@ -260,7 +262,7 @@ static void meshdeformModifier_do(
dco= MEM_callocN(sizeof(*dco)*totcagevert, "MDefDco");
for(a=0; a<totcagevert; a++) {
/* get cage vertex in world space with binding transform */
- copy_v3_v3(co, cagemvert[a].co);
+ copy_v3_v3(co, cagecos[a]);
if(G.rt != 527) {
mul_m4_v3(mmd->bindmat, co);
@@ -331,6 +333,7 @@ static void meshdeformModifier_do(
/* release cage derivedmesh */
MEM_freeN(dco);
+ MEM_freeN(cagecos);
cagedm->release(cagedm);
}