[Bf-blender-cvs] [3bdf921e824] blender-v2.83-release: Fix invert vertex group weight miscalculation for modifiers

Cody Winchester noreply at git.blender.org
Wed Oct 7 10:23:18 CEST 2020


Commit: 3bdf921e8242676855956faaa104f28c7bedd929
Author: Cody Winchester
Date:   Sat Sep 19 14:08:38 2020 +1000
Branches: blender-v2.83-release
https://developer.blender.org/rB3bdf921e8242676855956faaa104f28c7bedd929

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

===================================================================

M	source/blender/modifiers/intern/MOD_warp.c
M	source/blender/modifiers/intern/MOD_weightvg_util.c

===================================================================

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! */
     }



More information about the Bf-blender-cvs mailing list