Merge and reorganize two armatures with meshes?

I’m… basically trying to frankenstein two finished rigs together. They are both humanoid, but I want to put rig A’s head onto rig B’s body – which doesn’t have a face, it just has a biker helmet over it. They both have very nice weights and controls, separately, but their controls are very specific to each of their bodies (one of them is buffer, one has a jacket, etc). I thought the easiest way to merge them would be to somehow reorganize the armatures so that the neck bone of rig A goes right where the neck bone of rig B is, and then deleting the body mesh of rig A and the head of rig B and reassign all the meshes to follow that combined armature. Literally stitching them together at the head. But I’m having trouble figuring out how to do so? I can’t just drag and drop bones in the outliner to reparent them.

What has sort of worked for me so far is just deleting rig B’s entire armature and reconnecting rig A’s skeleton to rig B’s mesh. It’s an OK temporary solution, but rig B has weight paints and vertex groups that A doesn’t have, and the weight painting is all messed up. Many of the common bones/vertex groups, like hands, and spine, have the same names already (convenient!). Re-doing the weights is a different problem, but if someone has an easy solution to that, go for it – in trying to reassign bones to vertex groups I gave myself a headache. I’m an animator, not a rigger, and I’d love to noodle this until it works rather than re-rig.

tl;dr, anyone know how to play dr. frankenstein in blender?

Well, there are various solutions of various complexity, and how complex you need depends on how complex the things you want to do are, and on how complex the rigs are.

Simplest here is to parent A’s entire armature, bone relative, to B’s neck bone. Next simplest is to give A’s head bone a child-of constraint targeting B’s neck bone and set the inverse (and then, never ever pose any bones in A that aren’t head or that don’t trace parentage to head.)

Better is to join the armatures so that you can actually parent A’s head to B’s neck. You can join armatures like meshes: select, shift select, ctrl j. Bones in one armature with names that exist in the other armature will be renamed, breaking weights, so you’ll need to delete and/or rename a lot of bones. Once joined, you’ll want to parent head to neck (and maybe some other stuff.) You’ll probably also need to reparent one mesh object and redirect its armature modifier to the proper armature, post-join. Depending on constraints (you mentioned controls) this might still not function properly; it’s not impossible for a head or its children to have constraints referencing earlier bones; bendy bones might not have proper outros specified, etc. For a really complicated rig, you’d have to understand the rig pretty damn well to join.

It worked! It’s not an incredibly complicated rig, though it’s complex enough to be a handful, but Blender was getting annoyed with the duplicate naming scheme – I had to delete the soon-to-be-unused parts from everything (bones meshes and all), and then join the armatures, and then reparent the neck to the spine, and then redirect everyone’s meshes to the bones/correct armature names they’re supposed to be taking orders from. Joining the armatures was the thing that was giving me the most strife.