diff options
author | Campbell Barton <ideasman42@gmail.com> | 2011-12-15 02:54:38 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2011-12-15 02:54:38 +0400 |
commit | 40a2c1a2921b50edd8b798e79b6bd2a6d94d7bba (patch) | |
tree | f28bc2e08718bbf7e8fee729330c5c1e675c180e /source/blender/modifiers/intern/MOD_smooth.c | |
parent | 3d5330f789c287666b875706c84228520473add5 (diff) |
more vertex weight edits,
* replace inline loops with api calls.
* change constraints so verts with 0.0 weight are ignored like they are everywhere else.
Diffstat (limited to 'source/blender/modifiers/intern/MOD_smooth.c')
-rw-r--r-- | source/blender/modifiers/intern/MOD_smooth.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/source/blender/modifiers/intern/MOD_smooth.c b/source/blender/modifiers/intern/MOD_smooth.c index 2eaa142db47..6edd8921c79 100644 --- a/source/blender/modifiers/intern/MOD_smooth.c +++ b/source/blender/modifiers/intern/MOD_smooth.c @@ -154,24 +154,19 @@ static void smoothModifier_do( } if (dvert) { - for (i = 0; i < numVerts; i++) { - MDeformWeight *dw = NULL; + MDeformVert *dv= dvert; + for (i = 0; i < numVerts; i++, dv++) { float f, fm, facw, *fp, *v; - int k; short flag = smd->flag; v = vertexCos[i]; fp = &ftmp[i*3]; - for (k = 0; k < dvert[i].totweight; ++k) { - if(dvert[i].dw[k].def_nr == defgrp_index) { - dw = &dvert[i].dw[k]; - break; - } - } - if (!dw) continue; - f = fac * dw->weight; + f= defvert_find_weight(dv, defgrp_index); + if (f <= 0.0f) continue; + + f *= fac; fm = 1.0f - f; /* fp is the sum of uctmp[i] verts, so must be averaged */ |