2
$\begingroup$

For some reason, Rigify in Blender version 4.1 generates different settings for the same bones in two rigs. Specifically, I'm referring to this bone (selected in the screenshot) that controls the width of the mouth when the jaw control is moved. In this setup, which I don't prefer, these controls remain close to each other, causing the mouth to open very narrowly, which is not what I want.

bad setup

At the same time, another rig is configured better, resulting in a wider mouth opening:

good setup

The difference, as you can see, lies in the bone weights within the armature constraint. If you set them identically, the problem is resolved.

The rig sample settings are the same:

enter image description here

I can manually tweak this after generation, but I think there should be a better way, as I would need to do it after every regeneration. Additionally, I want to understand what causes Rigify to make these changes in rigs.

Here is the blend file with the meta rig if you want to test it yourself:

$\endgroup$

1 Answer 1

0
$\begingroup$

I've tried to find a solution in source code. This is that I've found in skin_jaw.py:

    pt_x = (self.to_mouth_space @ node.point).x
    side = Side.LEFT if pt_x * self.left_sign >= 0 else Side.RIGHT

    corner_x = (self.to_mouth_space @ self.corners[side][layer].point).x
    factor = math.sqrt(1 - clamp(pt_x / corner_x) ** 2)
    

    return [(side_mch, factor), (middle_mch, 1-factor)]

This is the end of the function that returns bones and its factors in armature constraint. If you inspect it, you can found that "side" depends on x coordinate in "mouth space". This is basically means, that side depends on x coordinate of end of mouth bone. If you look at the rig from the top, you can see that bone of the jaw change directions in X coordinate:

enter image description here

So to fix that, you should make them like this:

enter image description here

Either fix the code.

$\endgroup$

You must log in to answer this question.

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