I want to skin a character that was modeled for a different rest pose. The following example is just a mockup for demonstrating the problem:
So in this example the Rest Pose (T-Pose) does not match the Model's pose (A-Pose). Hence i can not bind the mesh to the Rest Pose here. But when i adjust the Pose to the Model and then bind the mesh using:
Pose -> Parent -> Armature deform -> with Automatic weights
I get this (and as far as i understand the procedure, this is expected behavior)
So, Blender apparently can only bind to Rest pose, hence the Binding function assumes that the rig is in rest pose. Thus as soon as the binding has happened, the current pose is applied to the mesh and thus it gets distorted (and i expect this to happen).
The obvious solution to fix this problem seems to be: modify the model so that it matches up with the Rest Pose. Then bind the mesh to the armature. But i do not want to modify the mesh, but use Blender to find a better solution.
My current workflow to solve the above problem.
Currently i solve the problem as follows (which works nicely, but i still find it to be a tedious workflow):
- Make a copy of my rig.
- Modify the rest pose of the copied rig to match the Mesh Model (Apply pose as rest pose).
- Skin the model to the copied Rig.
- Manually Pose the copied Rig into the Rest Pose of the original Rig.
- Apply the Armature Modifier.
- Delete the copied Rig.
- Attach the mesh to the original Rig (keeping the weight groups).
Anticipated workflow (could be achieved by using an Addon)
I would like to optimize the above mentioned workflow by merging steps 4. - 7. into one step "restore rest pose". Then eventually change the workflow like this:
- Save the Original Rest Pose.
- Modify the rest pose to match the mesh model.
- Skin the model.
- Restore the original Rest Pose without destroying my skinned mesh.
For this i need to save/restore Rest Poses. I know how i could achieve that by creating an Addon. However before i do that i want to be absolutely sure that i do not miss something. So i ask if "Save a rest pose" is implemented already (as far as i can tell the pose library won't work for this).
Ideal workflow (would probably need a change in Blender)
I wonder if Blender could add some support as well. So here is the "ideal workflow":
- Pose the Armature to match the Mesh
- Parent to Armature as usual
- Add an option in the Operator panel of the Parent operator: "Transform to Rest Pose"
This new option would then calculate the reverse transform such that the mesh would keep its original shape when the armature is posed into the pose from where the mesh was bound. OK, i agree this needs to be read more than once ;-/
Optimal Workflow
Now the best solution (imho) would be to add full support for binding to arbitrary poses. Then Blender would need to support a Bind Pose matrix which allows to bind a mesh to an arbitrary pose.
Questions:
- Does Blender support my "Anticipated Workflow" ? Or is there a better workflow for "rigging a model to a different Rest Pose" ?
- Does the "Ideal Workflow" as described above make sense ?
- Is there any chance to get the "Optimal Workflow" accepted for implementation ?