Can you parent a rig to a different rig?

So a weird question, but can you parent the bones in one rig to the bones in another? The problem I have is I have the rig below.


As you can see, the rig is awful. Its auto generated by a plugin I use to export the animations to another program that does not support any of the standard export types blender supports naively. However this plugin uses the positions and orientation of the bones to get its data, so I cant change them without breaking the animation (I tried and the end results were rather amusing, but unusable). So I was wondering if instead of animating the meshes directly, I could instead take a rig like the one below,

and use it to instead of animating the meshes themselves, animate the bones which in turn would animate the mesh. Or does someone else have yet a better and far more sensible solution to my current conundrum. Any and all thoughts are appreciated.

First, “parenting” is a misleading term when it comes to controlling a mesh by an armature. Objects “parented” to another object become part of the parent’s coordinate system on object level and will thus follow the parent’s movements like Earth follows Sun’s and Earth’s moon those of Earth.

An armature deforming a mesh on the other hand does affect the mesh itself by displacing each of its vertices according to assigned weights and its current pose. The object’s position, rotation and scale however will remained unchanged (you can easily verify that by checking transforms in the properties tabs).

In the same sense you can’t “parent” an armature to another and yield the result you’re hoping to see (because you don’t want the armature object to be part of the parent armature’s local coordinate system, what you really want is the “parent” armature’s posed bones controlling the “child” pose) - I really wish despite whatever Blender history developers had not chosen that CTL-P shortcut. It is no fun to untangle all the confusion created by this unfortunate “simplification”.

That all said: yes, it is possible to get it done. You’ll have to use bone constraints instead of static parenting, you could for instance try to add ChildOf-constraints to each of the deformer bones in your supposed “child” armature, and assign a suitable bone inside the “parent” armature as target. This sets up a dynamic parent-child relation for the bone pairs across armatures. Another approach could be to replicate all the “child” deformer bones inside the “parent” armature, parent each of the replicas to the suitable bones inside that armature and use CopyTransform constraints to transfer their poses to the “child”.

Hope I could help. :slight_smile:

In this case parenting is actually rather accurate to what I am doing as what I am working with consists of several non deforming meshes, and each one is given its own bone.(basically what I am importing into does not support mesh deformation, so my character is rather action figure Esq) Sorry for being unclear in that regard. Still you have given me some ideas to try, so thank you for that.

I would make a copy of the bones in edit mode and turn off deform (do not export these bones either). Setup copy transform constraints like Helmut_S said and use that as your in-between bones. Make a third copy of bones and setup your controllers and IK / etc on here and add any other bones. You could do this with just 2 sets if you want. Many rigs have multiple sets of bones like this.