Reskinning a mesh to diff frame

Hey all,

I’ve wrestled with this problem more than a dozen times now but I’ve never had the time/intelligence to figure out a solution. I was wondering if any of you genius-minds have found one!

The basics:
I’m using 3ds max if that matters, but I’d like to model a character with arms at 45º, then collapse that down to a T-pose mesh with the same skinning.
(See the gif below)

breakdown:

  1. So I’m modeling at frame 3 where the arms are lowered, I tweak all the skinning to work properly, and then I need to make the T-pose version of the mesh.

  2. The T-pose mesh should be able to be created by collapsing the frame0 T-pose. Skinning is correct so it should remain the same. Only the vertex positions should change.

  3. Ideally I should get a mesh like the pink one, but instead the volume is lost. Is there any way to avoid or correct this? assuming the pink mesh does NOT exist already?

The problem:
I assume the problem is that the volume is lost since referenceframe=3 means that those rotations are considered the base transform for the skinbones on the blue mesh vs. always interpreting them from 0 on all 3 meshes. I don’t mind frame0 looking a little wonky, but I’d like a solution that at least preserves frame3 from looking dumb. So I guess the stretch question is: Is there a corrective operation I can do to alter the frame0 mesh vertices to ensure it lined up to the blue mesh at frame3? If not, how would you guys handle it?

I can’t imagine a bunch of other people haven’t run into this already, so i really hope I’m just missing something and this has already been solved :slight_smile: any help is super appreciated!

I’ve not done much with this sort of technique myself, but if you’ve got the bone budget, you can add additional “volume-preserving” bones. Likewise if the target engine/hardware allows for it, you might be able to make use of dual-quaternion skinning.

http://www.youtube.com/watch?v=4e_ToPH-I5o

yeah, that’s probably true, but that sorta thing is usually out of my control :frowning:

Really I’m just looking for a way to model at a pose OTHER than the bindpose. I’m starting to wonder if it’s possible?

OK so you’ve skinned your mesh. Have you baked the verts?

What I do (well I use skin or die inside max because i like it miles better than the standard ui and it auto bakes verts), is :

  1. skin all the verts (ignoring envelopes because they are a a waste of space)
  2. bake verts
  3. save skin weights off (again i prefer the skin or die vertex weight format but the standard one from the skin mod should do)
  4. collapse my mesh in the pose I want
  5. recreate the skin modifier ensuring all the same bones are present in it
  6. reload the skin weights

This should give you what you are after. It looks from your images like the vertex weights on your t-pose mesh are not quite matching what you had previously.

You can model in what ever pose you want, just don’t trust that the skinning will get it in to a Tpose correctly, you still have to fix the shape at that point.

Matts advice is great and how I would deal with it in Maya.

Why are you having to deliver a straight T pose ?

bclark: I actually don’t care if it looks bad at T-pose since that pose is rare, but it SHOULD at least look good with the arms down at frame3. I was told our Tpose rig was required for a variety of reasons, so it’s out of my control :(:

I think my workflow is fairly similar, Matt.

but despite the skinning being exactly the same with whichever method i use, since the original transforms of the bones at bindpose are different:

  1. it loses volume as it animates back into Tpose - which then means
  2. it loses volume on the new mesh, once it’s collapsed and animates back into the original pose at frame3 :(:

Maybe it’ll be easier if I can supply a max file to test on, in the file below, I have a simple terribly meshed chest from forever ago. one skinned at frame3 and one at frame0. Is there some technique to get a closer match at frame 3?
http://funkybunnies3d.com/help/ReskinTest_2012.max

The most obvious way to fix it is to manually store all bone transforms at both frames and reevaluate the vertices’ positions, but that’s way higher math than im capable of. It really seems like someone must have either found a way around it or has done this already by now haha.

Right what you want is to know how much to correct the Tpose mesh verts in order to match the original once the arms are back down in to the correct modeled state, coming back from the Tpose- I understand now I think?

yeah, exactly :slight_smile:
I’ll keep wracking my brain for a solution

Let me just ask a question - when you create your new pose, are you deriving this pose by simply rotating the joints up into that t-pose then collapsing the stack, or are you remodelling it into that pose?

I’ll try and check out that file you linked and see if I can get some time to have a quick look at it… Thats a little odd what I’m seeing there - I’ll have a think about this it’s an interesting problem!

Hi Matt,
I’m actually collapsing the stack from frame3->frame0 at the Tpose - but of course the shoulder gets compressed there :frowning: so if there’s a better way I’m all ears!

thanks for taking a look!

Sorry for the doublepost,
I don’t suppose anyone has discovered any step towards a solution for this?

I’m thinking about scripting something but im not too sure where to start other than calculating and weighing each bone transformation myself :frowning:

just thinking maybe you can just use the old shape as a corrective shape to push the mesh back in to the original pose
http://www.scriptspot.com/3ds-max/scripts/morphmaker
and then collapse it down so you only have the mesh and skin.

holy hell, that’s exactly what I was looking for!

It seems to error out on my biped mockup scene but it works on the most other stuff, brilliant! I’ll have to try and figure out exactly what he’s doing :slight_smile:

thanks a ton Brad!