I renamed the armature model1 to rig1. I suggest you adapt a naming system which differentiates between armature/rig objects and geometry/mesh objects.
Preparation
To better see the armature during the process, I select rig1, active In Front and choose Wire for the display as property. This way the rig is always visible in front in wireframe mode (less in the way but clearly visible).
Next I will create a T-Pose like action (take), to which I can always switch to if I modified some transformations.
- Select the rig1.
- Go into Pose Mode.
- Select all bones. A
- Clear all transformations. AltG, AltR, AltS
- Press I to open up the Insert Keyframe Menu and choose LocRotScale to insert the appropriate keyframes.
Open up the dopesheet editor (1), and switch to the action editor (2) mode. Here you can see the keyframes we created with the I hotkey and also the action which was automatically created. Different actions can be stored independently from rigs in the blend. To preserve the action, even we do not need it, create a "fake user" for it (3) by clicking on the shield icon next to the action name. In the action dropdown, you can also see the other action Armature.001|Loco_Walk|BaseLayer which the other armature referers to.
I renamed both actions and made sure they both have fake users. With the Rig selected, we can preview both actions by selecting them in the action editor. They have an F next to their name, if they have a fake user.
As both actions are protected now, I delete the unused additional armature.
Create the other armature
Select the armature rig1 and duplicate it by pressing ShiftD in the 3D Viewport. In the outliner, there will be the duplicated rig.001. Hide the original model and original rig, by clicking on the disable in viewport icon (TV symbol).
I rename the duplicated rig to rig2.
Briefly unhiding model1, I select model2 and position it as close as possible on top of the model1. I am in right orthographic view and eyeball the position while using the transform tools, G, R, S.
Then I go to the properties panel and open up the modifier section. We will use a data transfer modifier to transfer the weight groups from model1 to model2.
- Select model2 and add a Data Transfer modifier to it.
- Choose model1 as the source object (4).
- Enable Vertex Data and Vertex Groups (5), then choose Nearest Face Interpolated as the transfer method. (6)
- Make sure the evaluate in global space button is checked (7).
Clicking on Generate Data Layers (8) will generate the needed vertex groups.
If all vertex groups have been created, Apply (9) the data transfer modifier and hide the original model1.
The vertex weights have now been transferred to model2 and can be examined in Weight Paint mode.
Connect the armature
With the weights already transfered, we only need to connected armature. Select model2 and Shiftselect rig2 in the 3D Viewport. It is important that rig2 is the active object. Then press CtrlP/kbd> to open up the parent menu. Choose Set Parent To Armature Deform
This will parent model2 to rig2 and add an armature modifier.
model2 should now move if we assign the walk action to rig2 in the action editor.
This is how far transferring the weights and armature goes, since the object vary in their shape.
The next steps are
- manually reposition bones of the rig2 armature in edit mode
- correct the weights of model2 in weight paint mode
- add new bones and new weights