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:
authorCody Winchester <CodyWinch>2020-02-18 20:06:13 +0300
committerBastien Montagne <b.mont29@gmail.com>2020-02-18 20:09:40 +0300
commit6cd4363c0c3ee73a0656e84e91ebf9e9c936d6bd (patch)
tree7bded0bc39f848d4bb5571382c99a1e694c144c9 /source/blender/modifiers/intern/MOD_bevel.c
parented8aa154a33d1477a399ce165ed08963b441a0de (diff)
Modifiers: Bevel modifier add invert vgroup option
Adds the invert vgroup option to the Bevel modifier. Reviewed By: mont29 Differential Revision: https://developer.blender.org/D6845
Diffstat (limited to 'source/blender/modifiers/intern/MOD_bevel.c')
-rw-r--r--source/blender/modifiers/intern/MOD_bevel.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/source/blender/modifiers/intern/MOD_bevel.c b/source/blender/modifiers/intern/MOD_bevel.c
index f5bb1cb0ef8..14f1650d690 100644
--- a/source/blender/modifiers/intern/MOD_bevel.c
+++ b/source/blender/modifiers/intern/MOD_bevel.c
@@ -118,6 +118,7 @@ static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mes
const float spread = bmd->spread;
const bool use_custom_profile = (bmd->flags & MOD_BEVEL_CUSTOM_PROFILE);
const int vmesh_method = bmd->vmesh_method;
+ const bool invert_vgroup = (bmd->flags & MOD_BEVEL_INVERT_VGROUP) != 0;
bm = BKE_mesh_to_bmesh_ex(mesh,
&(struct BMeshCreateParams){0},
@@ -146,7 +147,9 @@ static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mes
}
}
else if (vgroup != -1) {
- weight = defvert_array_find_weight_safe(dvert, BM_elem_index_get(v), vgroup);
+ weight = invert_vgroup ?
+ 1.0f - defvert_array_find_weight_safe(dvert, BM_elem_index_get(v), vgroup) :
+ defvert_array_find_weight_safe(dvert, BM_elem_index_get(v), vgroup);
/* Check is against 0.5 rather than != 0.0 because cascaded bevel modifiers will
* interpolate weights for newly created vertices, and may cause unexpected "selection" */
if (weight < 0.5f) {
@@ -180,8 +183,14 @@ static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mes
}
}
else if (vgroup != -1) {
- weight = defvert_array_find_weight_safe(dvert, BM_elem_index_get(e->v1), vgroup);
- weight2 = defvert_array_find_weight_safe(dvert, BM_elem_index_get(e->v2), vgroup);
+ weight = invert_vgroup ?
+ 1.0f - defvert_array_find_weight_safe(
+ dvert, BM_elem_index_get(e->v1), vgroup) :
+ defvert_array_find_weight_safe(dvert, BM_elem_index_get(e->v1), vgroup);
+ weight2 = invert_vgroup ?
+ 1.0f - defvert_array_find_weight_safe(
+ dvert, BM_elem_index_get(e->v2), vgroup) :
+ defvert_array_find_weight_safe(dvert, BM_elem_index_get(e->v2), vgroup);
if (weight < 0.5f || weight2 < 0.5f) {
continue;
}