From 3bdf921e8242676855956faaa104f28c7bedd929 Mon Sep 17 00:00:00 2001 From: Cody Winchester Date: Sat, 19 Sep 2020 14:08:38 +1000 Subject: Fix invert vertex group weight miscalculation for modifiers Warp & weight vertex-group editing modifiers miscalculated vertex weight inversion, the weights were multiplied before being subtracted from 1. Ref D8241 --- source/blender/modifiers/intern/MOD_warp.c | 5 +++-- source/blender/modifiers/intern/MOD_weightvg_util.c | 7 ++++--- 2 files changed, 7 insertions(+), 5 deletions(-) (limited to 'source') diff --git a/source/blender/modifiers/intern/MOD_warp.c b/source/blender/modifiers/intern/MOD_warp.c index 30d45d1fc65..cbb6e5168c6 100644 --- a/source/blender/modifiers/intern/MOD_warp.c +++ b/source/blender/modifiers/intern/MOD_warp.c @@ -266,8 +266,9 @@ static void warpModifier_do(WarpModifierData *wmd, /* skip if no vert group found */ if (defgrp_index != -1) { dv = &dvert[i]; - weight = invert_vgroup ? 1.0f - BKE_defvert_find_weight(dv, defgrp_index) * strength : - BKE_defvert_find_weight(dv, defgrp_index) * strength; + weight = (invert_vgroup ? (1.0f - BKE_defvert_find_weight(dv, defgrp_index)) : + BKE_defvert_find_weight(dv, defgrp_index)) * + strength; if (weight <= 0.0f) { continue; } diff --git a/source/blender/modifiers/intern/MOD_weightvg_util.c b/source/blender/modifiers/intern/MOD_weightvg_util.c index 633bbb1421b..6e066c7f8ed 100644 --- a/source/blender/modifiers/intern/MOD_weightvg_util.c +++ b/source/blender/modifiers/intern/MOD_weightvg_util.c @@ -240,9 +240,10 @@ void weightvg_do_mask(const ModifierEvalContext *ctx, /* For each weight (vertex), make the mix between org and new weights. */ for (i = 0; i < num; i++) { int idx = indices ? indices[i] : i; - const float f = invert_vgroup_mask ? - 1.0f - BKE_defvert_find_weight(&dvert[idx], ref_didx) * fact : - BKE_defvert_find_weight(&dvert[idx], ref_didx) * fact; + const float f = (invert_vgroup_mask ? + (1.0f - BKE_defvert_find_weight(&dvert[idx], ref_didx)) : + BKE_defvert_find_weight(&dvert[idx], ref_didx)) * + fact; org_w[i] = (new_w[i] * f) + (org_w[i] * (1.0f - f)); /* If that vertex is not in ref vgroup, assume null factor, and hence do nothing! */ } -- cgit v1.2.3