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
This commit is contained in:
parent
94a63f7505
commit
e0f13f41c6
Notes:
blender-bot
2023-02-14 06:46:23 +01:00
Referenced by issue #80396, Potential candidates for corrective releases Referenced by issue #77348, Blender LTS: Maintenance Task 2.83
|
@ -279,8 +279,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;
|
||||
}
|
||||
|
|
|
@ -249,9 +249,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! */
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue