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/intern/MOD_meshdeform.c')
-rw-r--r--source/blender/modifiers/intern/MOD_meshdeform.c93
1 files changed, 47 insertions, 46 deletions
diff --git a/source/blender/modifiers/intern/MOD_meshdeform.c b/source/blender/modifiers/intern/MOD_meshdeform.c
index c8ce1b9b88a..08626e55231 100644
--- a/source/blender/modifiers/intern/MOD_meshdeform.c
+++ b/source/blender/modifiers/intern/MOD_meshdeform.c
@@ -66,14 +66,14 @@ static void freeData(ModifierData *md)
{
MeshDeformModifierData *mmd = (MeshDeformModifierData*) md;
- if(mmd->bindinfluences) MEM_freeN(mmd->bindinfluences);
- if(mmd->bindoffsets) MEM_freeN(mmd->bindoffsets);
- if(mmd->bindcagecos) MEM_freeN(mmd->bindcagecos);
- if(mmd->dyngrid) MEM_freeN(mmd->dyngrid);
- if(mmd->dyninfluences) MEM_freeN(mmd->dyninfluences);
- if(mmd->dynverts) MEM_freeN(mmd->dynverts);
- if(mmd->bindweights) MEM_freeN(mmd->bindweights); /* deprecated */
- if(mmd->bindcos) MEM_freeN(mmd->bindcos); /* deprecated */
+ if (mmd->bindinfluences) MEM_freeN(mmd->bindinfluences);
+ if (mmd->bindoffsets) MEM_freeN(mmd->bindoffsets);
+ if (mmd->bindcagecos) MEM_freeN(mmd->bindcagecos);
+ if (mmd->dyngrid) MEM_freeN(mmd->dyngrid);
+ if (mmd->dyninfluences) MEM_freeN(mmd->dyninfluences);
+ if (mmd->dynverts) MEM_freeN(mmd->dynverts);
+ if (mmd->bindweights) MEM_freeN(mmd->bindweights); /* deprecated */
+ if (mmd->bindcos) MEM_freeN(mmd->bindcos); /* deprecated */
}
static void copyData(ModifierData *md, ModifierData *target)
@@ -91,7 +91,7 @@ static CustomDataMask requiredDataMask(Object *UNUSED(ob), ModifierData *md)
CustomDataMask dataMask = 0;
/* ask for vertexgroups if we need them */
- if(mmd->defgrp_name[0]) dataMask |= CD_MASK_MDEFORMVERT;
+ if (mmd->defgrp_name[0]) dataMask |= CD_MASK_MDEFORMVERT;
return dataMask;
}
@@ -141,20 +141,20 @@ static float meshdeform_dynamic_bind(MeshDeformModifierData *mmd, float (*dco)[3
totweight= 0.0f;
size= mmd->dyngridsize;
- for(i=0; i<3; i++) {
+ for (i=0; i<3; i++) {
gridvec[i]= (vec[i] - mmd->dyncellmin[i] - mmd->dyncellwidth*0.5f)/mmd->dyncellwidth;
ivec[i]= (int)gridvec[i];
dvec[i]= gridvec[i] - ivec[i];
}
- for(i=0; i<8; i++) {
- if(i & 1) { x= ivec[0]+1; wx= dvec[0]; }
+ for (i=0; i<8; i++) {
+ if (i & 1) { x= ivec[0]+1; wx= dvec[0]; }
else { x= ivec[0]; wx= 1.0f-dvec[0]; }
- if(i & 2) { y= ivec[1]+1; wy= dvec[1]; }
+ if (i & 2) { y= ivec[1]+1; wy= dvec[1]; }
else { y= ivec[1]; wy= 1.0f-dvec[1]; }
- if(i & 4) { z= ivec[2]+1; wz= dvec[2]; }
+ if (i & 4) { z= ivec[2]+1; wz= dvec[2]; }
else { z= ivec[2]; wz= 1.0f-dvec[2]; }
CLAMP(x, 0, size-1);
@@ -166,7 +166,7 @@ static float meshdeform_dynamic_bind(MeshDeformModifierData *mmd, float (*dco)[3
cell= &mmd->dyngrid[a];
inf= mmd->dyninfluences + cell->offset;
- for(j=0; j<cell->totinfluence; j++, inf++) {
+ for (j=0; j<cell->totinfluence; j++, inf++) {
cageco= dco[inf->vertex];
cageweight= weight*inf->weight;
co[0] += cageweight*cageco[0];
@@ -197,13 +197,13 @@ static void meshdeformModifier_do(
int a, b, totvert, totcagevert, defgrp_index;
float (*cagecos)[3];
- if(!mmd->object || (!mmd->bindcagecos && !mmd->bindfunc))
+ if (!mmd->object || (!mmd->bindcagecos && !mmd->bindfunc))
return;
/* get cage derivedmesh */
- if(em) {
+ if (em) {
tmpdm= editbmesh_get_derived_cage_and_final(md->scene, ob, em, &cagedm, 0);
- if(tmpdm)
+ if (tmpdm)
tmpdm->release(tmpdm);
}
else
@@ -211,13 +211,13 @@ static void meshdeformModifier_do(
/* if we don't have one computed, use derivedmesh from data
* without any modifiers */
- if(!cagedm) {
+ if (!cagedm) {
cagedm= get_dm(mmd->object, NULL, NULL, NULL, 0);
- if(cagedm)
+ if (cagedm)
cagedm->needsFree= 1;
}
- if(!cagedm) {
+ if (!cagedm) {
modifier_setError(md, "%s", TIP_("Can't get mesh from cage object."));
return;
}
@@ -230,11 +230,11 @@ static void meshdeformModifier_do(
copy_m3_m4(icagemat, iobmat);
/* bind weights if needed */
- if(!mmd->bindcagecos) {
+ if (!mmd->bindcagecos) {
static int recursive = 0;
/* progress bar redraw can make this recursive .. */
- if(!recursive) {
+ if (!recursive) {
recursive = 1;
mmd->bindfunc(md->scene, mmd, (float*)vertexCos, numVerts, cagemat);
recursive = 0;
@@ -245,7 +245,7 @@ static void meshdeformModifier_do(
totvert= numVerts;
totcagevert= cagedm->getNumVerts(cagedm);
- if(mmd->totvert != totvert) {
+ if (mmd->totvert != totvert) {
modifier_setError(md, TIP_("Verts changed from %d to %d."), mmd->totvert, totvert);
cagedm->release(cagedm);
return;
@@ -254,7 +254,8 @@ static void meshdeformModifier_do(
modifier_setError(md, TIP_("Cage verts changed from %d to %d."), mmd->totcagevert, totcagevert);
cagedm->release(cagedm);
return;
- } else if (mmd->bindcagecos == NULL) {
+ }
+ else if (mmd->bindcagecos == NULL) {
modifier_setError(md, "%s", TIP_("Bind data missing."));
cagedm->release(cagedm);
return;
@@ -269,11 +270,11 @@ static void meshdeformModifier_do(
bindcagecos= (float(*)[3])mmd->bindcagecos;
dco= MEM_callocN(sizeof(*dco)*totcagevert, "MDefDco");
- for(a=0; a<totcagevert; a++) {
+ for (a=0; a<totcagevert; a++) {
/* get cage vertex in world space with binding transform */
copy_v3_v3(co, cagecos[a]);
- if(G.rt != 527) {
+ if (G.rt != 527) {
mul_m4_v3(mmd->bindmat, co);
/* compute difference with world space bind coord */
sub_v3_v3v3(dco[a], co, bindcagecos[a]);
@@ -287,12 +288,12 @@ static void meshdeformModifier_do(
/* do deformation */
fac= 1.0f;
- for(b=0; b<totvert; b++) {
- if(mmd->flag & MOD_MDEF_DYNAMIC_BIND)
- if(!mmd->dynverts[b])
+ for (b=0; b<totvert; b++) {
+ if (mmd->flag & MOD_MDEF_DYNAMIC_BIND)
+ if (!mmd->dynverts[b])
continue;
- if(dvert) {
+ if (dvert) {
fac= defvert_find_weight(&dvert[b], defgrp_index);
if (mmd->flag & MOD_MDEF_INVERT_VGROUP) {
@@ -304,7 +305,7 @@ static void meshdeformModifier_do(
}
}
- if(mmd->flag & MOD_MDEF_DYNAMIC_BIND) {
+ if (mmd->flag & MOD_MDEF_DYNAMIC_BIND) {
/* transform coordinate into cage's local space */
mul_v3_m4v3(co, cagemat, vertexCos[b]);
totweight= meshdeform_dynamic_bind(mmd, dco, co);
@@ -313,17 +314,17 @@ static void meshdeformModifier_do(
totweight= 0.0f;
zero_v3(co);
- for(a=offsets[b]; a<offsets[b+1]; a++) {
+ for (a=offsets[b]; a<offsets[b+1]; a++) {
weight= influences[a].weight;
madd_v3_v3fl(co, dco[influences[a].vertex], weight);
totweight += weight;
}
}
- if(totweight > 0.0f) {
+ if (totweight > 0.0f) {
mul_v3_fl(co, fac/totweight);
mul_m3_v3(icagemat, co);
- if(G.rt != 527)
+ if (G.rt != 527)
add_v3_v3(vertexCos[b], co);
else
copy_v3_v3(vertexCos[b], co);
@@ -349,7 +350,7 @@ static void deformVerts(ModifierData *md, Object *ob,
meshdeformModifier_do(md, ob, dm, vertexCos, numVerts);
- if(dm && dm != derivedData)
+ if (dm && dm != derivedData)
dm->release(dm);
}
@@ -363,7 +364,7 @@ static void deformVertsEM(ModifierData *md, Object *ob,
meshdeformModifier_do(md, ob, dm, vertexCos, numVerts);
- if(dm && dm != derivedData)
+ if (dm && dm != derivedData)
dm->release(dm);
}
@@ -376,18 +377,18 @@ void modifier_mdef_compact_influences(ModifierData *md)
int totinfluence, totvert, totcagevert, a, b;
weights= mmd->bindweights;
- if(!weights)
+ if (!weights)
return;
totvert= mmd->totvert;
totcagevert= mmd->totcagevert;
/* count number of influences above threshold */
- for(b=0; b<totvert; b++) {
- for(a=0; a<totcagevert; a++) {
+ for (b=0; b<totvert; b++) {
+ for (a=0; a<totcagevert; a++) {
weight= weights[a + b*totcagevert];
- if(weight > MESHDEFORM_MIN_INFLUENCE)
+ if (weight > MESHDEFORM_MIN_INFLUENCE)
mmd->totinfluence++;
}
}
@@ -399,23 +400,23 @@ void modifier_mdef_compact_influences(ModifierData *md)
/* write influences */
totinfluence= 0;
- for(b=0; b<totvert; b++) {
+ for (b=0; b<totvert; b++) {
mmd->bindoffsets[b]= totinfluence;
totweight= 0.0f;
/* sum total weight */
- for(a=0; a<totcagevert; a++) {
+ for (a=0; a<totcagevert; a++) {
weight= weights[a + b*totcagevert];
- if(weight > MESHDEFORM_MIN_INFLUENCE)
+ if (weight > MESHDEFORM_MIN_INFLUENCE)
totweight += weight;
}
/* assign weights normalized */
- for(a=0; a<totcagevert; a++) {
+ for (a=0; a<totcagevert; a++) {
weight= weights[a + b*totcagevert];
- if(weight > MESHDEFORM_MIN_INFLUENCE) {
+ if (weight > MESHDEFORM_MIN_INFLUENCE) {
mmd->bindinfluences[totinfluence].weight= weight/totweight;
mmd->bindinfluences[totinfluence].vertex= a;
totinfluence++;