[Bf-blender-cvs] [2491bc5ec77] blender-v2.93-release: Fix T92314: Auto naming of the Vertex Group doesn't work for Grease Pencil

Philipp Oeser noreply at git.blender.org
Tue Nov 2 13:52:40 CET 2021


Commit: 2491bc5ec773511468adaf7d9e6155bcc4360a99
Author: Philipp Oeser
Date:   Mon Oct 18 16:34:16 2021 +0200
Branches: blender-v2.93-release
https://developer.blender.org/rB2491bc5ec773511468adaf7d9e6155bcc4360a99

Fix T92314: Auto naming of the Vertex Group doesn't work for Grease
Pencil

Not naming the auto-generated vertexgroup after the selected bone was
just confusing (since the group would not have an effect), so now use
similar code that is used for meshes for greasepencil as well.

Maniphest Tasks: T92314

Differential Revision: https://developer.blender.org/D12906

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

M	source/blender/editors/gpencil/gpencil_weight_paint.c

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

diff --git a/source/blender/editors/gpencil/gpencil_weight_paint.c b/source/blender/editors/gpencil/gpencil_weight_paint.c
index a3e5ece5862..9a312c255b1 100644
--- a/source/blender/editors/gpencil/gpencil_weight_paint.c
+++ b/source/blender/editors/gpencil/gpencil_weight_paint.c
@@ -29,15 +29,18 @@
 
 #include "BLT_translation.h"
 
+#include "DNA_armature_types.h"
 #include "DNA_brush_types.h"
 #include "DNA_gpencil_types.h"
 
+#include "BKE_action.h"
 #include "BKE_brush.h"
 #include "BKE_colortools.h"
 #include "BKE_context.h"
 #include "BKE_deform.h"
 #include "BKE_gpencil.h"
 #include "BKE_main.h"
+#include "BKE_modifier.h"
 #include "BKE_object_deform.h"
 #include "BKE_report.h"
 #include "DNA_meshdata_types.h"
@@ -246,7 +249,22 @@ static bool brush_draw_apply(tGP_BrushWeightpaintData *gso,
   /* need a vertex group */
   if (gso->vrgroup == -1) {
     if (gso->object) {
-      BKE_object_defgroup_add(gso->object);
+      Object *ob_armature = BKE_modifiers_is_deformed_by_armature(gso->object);
+      if ((ob_armature != NULL)) {
+        Bone *actbone = ((bArmature *)ob_armature->data)->act_bone;
+        if (actbone != NULL) {
+          bPoseChannel *pchan = BKE_pose_channel_find_name(ob_armature->pose, actbone->name);
+          if (pchan != NULL) {
+            bDeformGroup *dg = BKE_object_defgroup_find_name(gso->object, pchan->name);
+            if (dg == NULL) {
+              dg = BKE_object_defgroup_add_name(gso->object, pchan->name);
+            }
+          }
+        }
+      }
+      else {
+        BKE_object_defgroup_add(gso->object);
+      }
       DEG_relations_tag_update(gso->bmain);
       gso->vrgroup = 0;
     }



More information about the Bf-blender-cvs mailing list