diff options
author | Campbell Barton <ideasman42@gmail.com> | 2010-01-26 02:12:02 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2010-01-26 02:12:02 +0300 |
commit | 33623ba3a363aa93f3f6c68b92ab228a7c8b2959 (patch) | |
tree | 9a201fc43137b861ba8d73aeedc4d52e7d7d2330 /source/blender/blenkernel | |
parent | 9cd3ab1e0c50bfa7f2d364730b43b0e848b630a9 (diff) |
panel for adjusting the active vertex groups weights
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_deform.h | 1 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/deform.c | 22 |
2 files changed, 23 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_deform.h b/source/blender/blenkernel/BKE_deform.h index 59acea3c552..0e18683e7b7 100644 --- a/source/blender/blenkernel/BKE_deform.h +++ b/source/blender/blenkernel/BKE_deform.h @@ -54,6 +54,7 @@ float vertexgroup_get_vertex_weight(const struct MDeformVert *dvert, int index, void copy_defvert (struct MDeformVert *dvert_r, const struct MDeformVert *dvert); void flip_defvert (struct MDeformVert *dvert, int *flip_map); +void normalize_defvert (struct MDeformVert *dvert); #endif diff --git a/source/blender/blenkernel/intern/deform.c b/source/blender/blenkernel/intern/deform.c index 38d4d722a46..a4c8e589f26 100644 --- a/source/blender/blenkernel/intern/deform.c +++ b/source/blender/blenkernel/intern/deform.c @@ -115,6 +115,28 @@ void copy_defvert (MDeformVert *dvert_r, const MDeformVert *dvert) } } +void normalize_defvert (MDeformVert *dvert) +{ + if(dvert->totweight<=0) { + /* nothing */ + } + else if (dvert->totweight==1) { + dvert->dw[0].weight= 1.0f; + } + else { + int i; + float tot= 0.0f; + MDeformWeight *dw; + for(i=0, dw=dvert->dw; i < dvert->totweight; i++, dw++) + tot += dw->weight; + + if(tot > 0.0f) { + for(i=0, dw=dvert->dw; i < dvert->totweight; i++, dw++) + dw->weight /= tot; + } + } +} + void flip_defvert (MDeformVert *dvert, int *flip_map) { MDeformWeight *dw; |