2
$\begingroup$

Okay, so I just ran into a weird problem I have no explanation for.I am used to the basics of skinning and weight painting bones to a certain portion of a mesh, but still I don't know what is going on in this case here:

I have a rig set up with blender's rigify add on (see the rig.blend file attached to this post). After creating the rig I parented my geometry with automatic weights which results in fairly good skinning most of the time. Anyhow, this time some deformation was weird, so I checked the weight painting and noticed some strange behaviour.

On the picture below you can see the skin weights applied for my DEF-forearm.R and my DEF-hand.R. From this picture alone I could expect a certain kind of deformation when rotating my hand for example ...

enter image description here

... but what I get is this ...

enter image description here

As you can see my upper-arm geometry is also deforming even though I only rotated my hand ctrl. The deformation bone for the upper arm didn't move at all but still the geometry associated with that upper arm bone is getting deformation from the hand bone.

I can watch this behaviour on all extremities within the rig.

Download the rig file here.

$\endgroup$
4
  • $\begingroup$ I'm on tablet now, I can't check your file, but it can be any part of finger. In edit mode if you select any deformed vertex you can see properties panel how much weight and how many vertex groups uses this vertex. $\endgroup$
    – vklidu
    Nov 23, 2020 at 21:09
  • $\begingroup$ @vklidu thanks for your reply. I already selected multiple vertices from the upper arm part of the mesh and double checked the vertex weights. relevant vertices are only connected to the upper arm deform bone $\endgroup$ Nov 23, 2020 at 21:29
  • $\begingroup$ Sorry I deleted my answer so it is clear it is not solved here. I never worked with rigidify, so I don't know the system behind and I didnt figured out what is going on. Given name to vertex groups doesn't match with bone name so I guess there is some proxy system behind. $\endgroup$
    – vklidu
    Nov 25, 2020 at 9:54
  • $\begingroup$ @vklidu yeah don‘t worry. About rigify: You can check different bone layers to reveal the deform bones. By default they are hidden. so actually the vertex group names do match with relevant bones. For example: hand vertices are not supposed to have weights for a group like hand fk ctrl or any other control bone $\endgroup$ Nov 25, 2020 at 10:17

2 Answers 2

5
+200
$\begingroup$

I think it's a usage issue, not weights of DEF-forearm.R and DEF-hand.R. Because when I reduce the value of Rubber Tweak, it seems to work fine.

enter image description here

enter image description here

enter image description here

$\endgroup$
2
  • $\begingroup$ thank you very much sir! Never knew about that rubber tweak... $\endgroup$ Nov 27, 2020 at 12:24
  • $\begingroup$ @Marten Zander Maybe it's used for an exaggerated expression. $\endgroup$
    – tetii
    Nov 29, 2020 at 12:44
1
$\begingroup$

Use script below for your special bone. it excludes vertices of this special group from other groups (just enter name of your group instead of elbow_group):

import bpy

bone_name = 'elbow_group'
vert_group = bpy.context.object.vertex_groups[bone_name]
excluding_verts = []

for i,v in enumerate(bpy.context.object.data.vertices):
    for vg in v.groups:
        if vg.group == vert_group.index:
            excluding_verts.append(i)

for vg in bpy.context.object.vertex_groups:
    if vg == vert_group:
        continue
    vg.remove(excluding_verts)
$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .