[Bf-blender-cvs] [66e28a2827a] master: Fix T52176: Bevel doesn't correctly work with default empty Vgroup.

Bastien Montagne noreply at git.blender.org
Wed Jul 26 16:25:59 CEST 2017


Commit: 66e28a2827ab589756882983e07808742c198cb2
Author: Bastien Montagne
Date:   Wed Jul 26 16:23:24 2017 +0200
Branches: master
https://developer.blender.org/rB66e28a2827ab589756882983e07808742c198cb2

Fix T52176: Bevel doesn't correctly work with default empty Vgroup.

`defvert_array_find_weight_safe()` was confusing 'invalid vgroup' and
'valid but totally empty vgroup' cases.

Note that this also affected at least ShrinkWrap and SimpleDeform
modifiers.

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

M	source/blender/blenkernel/intern/deform.c

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

diff --git a/source/blender/blenkernel/intern/deform.c b/source/blender/blenkernel/intern/deform.c
index 69baaf5e58a..eec8d2478da 100644
--- a/source/blender/blenkernel/intern/deform.c
+++ b/source/blender/blenkernel/intern/deform.c
@@ -621,8 +621,17 @@ float defvert_find_weight(const struct MDeformVert *dvert, const int defgroup)
  */
 float defvert_array_find_weight_safe(const struct MDeformVert *dvert, const int index, const int defgroup)
 {
-	if (defgroup == -1 || dvert == NULL)
+	/* Invalid defgroup index means the vgroup selected is invalid, does not exist, in that case it is OK to return 1.0
+	 * (i.e. maximum weight, as if no vgroup was selected).
+	 * But in case of valid defgroup and NULL dvert data pointer, it means that vgroup **is** valid,
+	 * and just totally empty, so we shall return '0.0' value then!
+	*/
+	if (defgroup == -1) {
 		return 1.0f;
+	}
+	else if (dvert == NULL) {
+		return 0.0f;
+	}
 
 	return defvert_find_weight(dvert + index, defgroup);
 }




More information about the Bf-blender-cvs mailing list