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/blenkernel/intern/armature.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/blenkernel/intern/armature.c')
-rw-r--r-- | source/blender/blenkernel/intern/armature.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c index e10c4b24458..4035db36a39 100644 --- a/source/blender/blenkernel/intern/armature.c +++ b/source/blender/blenkernel/intern/armature.c @@ -924,7 +924,6 @@ void armature_deform_verts(Object *armOb, Object *target, DerivedMesh *dm, float contrib = 0.0f; float armature_weight = 1.0f; /* default to 1 if no overall def group */ float prevco_weight = 1.0f; /* weight for optional cached vertexcos */ - int j; if(use_quaternion) { memset(&sumdq, 0, sizeof(DualQuat)); @@ -971,12 +970,14 @@ void armature_deform_verts(Object *armOb, Object *target, DerivedMesh *dm, mul_m4_v3(premat, co); if(use_dverts && dvert && dvert->totweight) { // use weight groups ? + MDeformWeight *dw= dvert->dw; int deformed = 0; + unsigned int j; - for(j = 0; j < dvert->totweight; j++){ - int index = dvert->dw[j].def_nr; + for (j= dvert->totweight; j != 0; j--, dw++) { + const int index = dw->def_nr; if(index < defbase_tot && (pchan= defnrToPC[index])) { - float weight = dvert->dw[j].weight; + float weight = dw->weight; Bone *bone= pchan->bone; pdef_info= pdef_info_array + defnrToPCIndex[index]; |