Help applying scaled bones to rest pose... without applying armature modifier

We have a character that was made using HumanGenerator. The face was prepared for ARKit which removed the facial rig and converts it to Shape Keys to work with mocap

Then we wanted to adjust some proportions of the body of the model so we scaled the bones, which the mesh is parented to.

Now I want to apply these bone transformation to the rest pose but I can’t find a way to do this. Every time we apply it the mesh reverts to the way it was before we scaled the bones

Because of the facial shape keys (which work flawlessly with mocap) I am not able to apply the armature modifier on the mesh.

I feel like there should be a method to simply apply the scale for individual bones but I have tried every method and can’t get it to work. Every time I apply the scale of any bone it will revert the mesh back to the way it was before

Is there a way to do this without applying the armature and re-rigging from scratch?

Any ideas? Thanks

If you want to apply transformations to the mesh, then you want to apply the armature modifier.

When you apply as new rest pose, you are not doing anything to the mesh. You are setting the rest pose of the armature. When the armature is in its rest pose, it’s not going to deform the mesh. That’s how armatures work.

If you want to change the mesh, then delete shapekeys and re-generate them after changing it-- you’ve already generated them once, you should be able to do it again. When working in Blender, this is just one of those necessary workflow things: you don’t make shapekeys until you’ve finalized the mesh. (It is annoying, and in many ways, unnecessary, but it’s how things go.)

It’s not impossible to apply modifiers on shapekeyed meshes. You make a mesh in the shape of each key, with no other keys; you apply the modifier; you rejoin all those meshes as shapes. This should work fine with an armature modiifer (generative modifiers can be iffy), but it’s potentially a lot of work, unless you script it.

Or, you could just not worry about changing the mesh at all. You have an armature; you’re presumably creating code in some other application; the relevant changes are just bone scaling, right? Make an action that scales the bones in addition to your other animations, and blend these animations in your engine. Which is barely any blend at all, just combining them, because your regular animations probably have no meaningful scale keyframes anyways. And, you save a whole ton of memory, because now you don’t have two (or more) meshes, each of which takes up memory for every single vertex’s position, UV, color, etc-- you just have what amounts to a single frame of animation to store all that.

1 Like

Yup there is addon for simplifying that, hopefully still works in 4.0… https://github.com/smokejohn/SKkeeper

1 Like