mirror of
https://github.com/blender/blender
synced 2026-09-29 04:37:17 +03:00
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
b72df3a4a4
commit
3bdf921e82
2 changed files with 7 additions and 5 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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! */
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue