4
$\begingroup$

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:

enter image description here

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)

enter image description here

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):

  1. Make a copy of my rig.
  2. Modify the rest pose of the copied rig to match the Mesh Model (Apply pose as rest pose).
  3. Skin the model to the copied Rig.
  4. Manually Pose the copied Rig into the Rest Pose of the original Rig.
  5. Apply the Armature Modifier.
  6. Delete the copied Rig.
  7. 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:

  1. Save the Original Rest Pose.
  2. Modify the rest pose to match the mesh model.
  3. Skin the model.
  4. 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":

  1. Pose the Armature to match the Mesh
  2. Parent to Armature as usual
  3. 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:

  1. Does Blender support my "Anticipated Workflow" ? Or is there a better workflow for "rigging a model to a different Rest Pose" ?
  2. Does the "Ideal Workflow" as described above make sense ?
  3. Is there any chance to get the "Optimal Workflow" accepted for implementation ?
$\endgroup$
1
$\begingroup$

I would suggest this: in the rig tab of your armature, create a pose library, and next a pose wich will hold the rest pose of your rig.

Next pose the rig as you like, make it the rest pose, work, and when you're done, restore the rest pose from the library.

BTW, maybe you can even make simpler: in the mesh object, modifiers tab, you can activate the 'Edit' button of the Armature modifier. Then you can pose your model and work on it, not only in 'Edit' mode, but 'Weight paint' too.

EDIT For instance, to rig a character already posed (i.e. being not standing straight), you can:

  1. create a standard rig.
  2. In pose mode, move the skeleton to fit the character body and limbs as accurately as you can.
  3. Still in pose mode, parent mesh to armature with 'automatic weights'. Then, if you return to rest pose, the mesh will follow.

Hope this helps

$\endgroup$
  • $\begingroup$ The Pose library does contains bone matrices relative to the Rest pose. so when the rest pose changes, the poses change as well. for example: When you store the current rest pose in the pose library, then all transformation matrices are identity matrices. When you now make another pose the rest pose and then apply the stored pose to that, nothing will change. :( $\endgroup$ – Gaia Clary Aug 27 '14 at 18:24
  • $\begingroup$ @Gaia Clary: I'm sure I've done this earlier, but you're right, it doesn't work as I said in my reply. Anyway, I thing enabling the 'edit' button in the mesh modifier would solve OP problem. $\endgroup$ – Pyrophorus Aug 28 '14 at 12:22
  • $\begingroup$ Enabling the Armature modifier in Edit mode and applying the edit cage in edit mode only show me how the mesh reacts on the pose. But how can this help me to bind a mesh that is not in the rest pose ? I suspect that i overlook something. $\endgroup$ – Gaia Clary Aug 29 '14 at 13:23
  • $\begingroup$ You can bind a mesh to an armature in pose mode, maybe this is what's you're missing. $\endgroup$ – Pyrophorus Aug 29 '14 at 13:34
  • $\begingroup$ But when i adjust the pose to the character, then (still in Pose mode) Pose -> Parent -> Armature deform -> With Automatic weights, then the result is a distorted character. $\endgroup$ – Gaia Clary Aug 29 '14 at 13:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.