Shape Keys and Vertex Weights

Is there a way to adjust vertex weights based on the current value of a shape key?

What I want to do might make more sense with a real-world example:

Let’s say a rigged character has shape keys to roll up the sleeves of the character’s shirt. The sleeve geometry goes from being down the entire length of the arm (and likely spread across two or more bones), to being all above the elbow (and probably being entirely controlled by the upper arm DEF bone).

When this shape key is set to 1.0, all animations involving the forearm get screwed up because some of the sleeve geometry is still being controlled by the forearm bone, even though the sleeve no longer covers the forearm.

I feel like there must be a standard way of dealing with this type of situation, but haven’t had much luck finding one.

Any help would be appreciated. Thanks in advance.


Good luck with it! <—Edit: this is a link

Not sure if it will do exactly what you want but maybe with a little tweaking or maybe 2 of them.

Interesting. That, combined with a driver, might just work. Thanks!

DruBan: thanks for pointing me in the right direction. I got it working. I might do a full tutorial on it at some point, but figured I’d throw a sample Blender file showing my solution. Essentially, I have a custom property on the object that drives the shape key and two Vertex Weight Mix modifiers to add weight to one bone and subtract from another.

The result is, the vertex weights change along with the shape key and everything works.

Vertex Weight Mod Tut.blend (652 KB)

I have often wished that “distance from the bone to the vertex-group” could be an easy-to-do adjustment to vertex weights. Although the process described here “certainly works,” and is clever, even, it’s also kind of a “now-necessary hack.” I guess that the designers always assumed that the armature would move, and the mesh would move with it, but that the mesh wouldn’t move in relation to the armature … an obvious omission in the case of (specifically) clothing. Maybe someday …