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:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2013-05-14 20:22:53 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2013-05-14 20:22:53 +0400
commit8ef3c42f80c2227ece7500c809f44946467e6fab (patch)
treec28afe46673325c14437691d5abcf19b77ec2b42 /source/blender/blenkernel/intern/customdata.c
parent44dfc76154c0964ade17b5e2d12dda74f8328e30 (diff)
Fix #35347: constraints with vertex group targets were not using the vertex group
weights, it assumed all weights were 1. This gave very different results with the new bevel modifier due to slightly different vertex group interpolation.
Diffstat (limited to 'source/blender/blenkernel/intern/customdata.c')
-rw-r--r--source/blender/blenkernel/intern/customdata.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/customdata.c b/source/blender/blenkernel/intern/customdata.c
index 879d1895513..75000ec440b 100644
--- a/source/blender/blenkernel/intern/customdata.c
+++ b/source/blender/blenkernel/intern/customdata.c
@@ -239,12 +239,16 @@ static void layerInterp_mdeformvert(void **sources, const float *weights,
for (j = 0; j < source->totweight; ++j) {
MDeformWeight *dw = &source->dw[j];
+ float weight = dw->weight * interp_weight;
+
+ if (weight == 0.0f)
+ continue;
for (node = dest_dw; node; node = node->next) {
MDeformWeight *tmp_dw = (MDeformWeight *)node->link;
if (tmp_dw->def_nr == dw->def_nr) {
- tmp_dw->weight += dw->weight * interp_weight;
+ tmp_dw->weight += weight;
break;
}
}
@@ -254,7 +258,7 @@ static void layerInterp_mdeformvert(void **sources, const float *weights,
MDeformWeight *tmp_dw = MEM_callocN(sizeof(*tmp_dw),
"layerInterp_mdeformvert tmp_dw");
tmp_dw->def_nr = dw->def_nr;
- tmp_dw->weight = dw->weight * interp_weight;
+ tmp_dw->weight = weight;
BLI_linklist_prepend(&dest_dw, tmp_dw);
totweight++;
}