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
path: root/source
diff options
context:
space:
mode:
authorPhilipp Oeser <info@graphics-engineer.com>2021-10-18 17:34:16 +0300
committerPhilipp Oeser <info@graphics-engineer.com>2021-11-02 14:55:01 +0300
commit2491bc5ec773511468adaf7d9e6155bcc4360a99 (patch)
treee86809e1ef5c457a5a29a873158b5d78473ff3d2 /source
parent5a5788ace2d2a27eae72eb94389040928342fb0e (diff)
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
Diffstat (limited to 'source')
-rw-r--r--source/blender/editors/gpencil/gpencil_weight_paint.c20
1 files changed, 19 insertions, 1 deletions
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;
}