PDA

View Full Version : Need help - skinning poly characters in Maya


Laa-Yosh
02-11-2003, 08:07 PM
(I saw this coming for a while now... )

So, I have a cast of 6 different characters, all waiting to get skinned in Maya 4.5. I've already built skeletons and low-res proxy rigs for the animators, so all that's left is to somehow bind the mesh to the joints. The models are made from polygons, ranging between 7000-10000 faces.

So far I've spent two days on the first model... I decided to cut it up into Sets, one for each limb and one for the torso including the hip area. I've already got the arms and legs done with Rigid Skin and some flexors / manual weighting for the fingers. It gets OK deformations and most importantly, it's quite fast to set up :)

My biggest problem is - surprise, surprise - the shoulder and hip areas. I've tried Smooth Bind, but I simply hate the painting stuff :( and the results so far aren't good either. I've been able to get some acceptable shoulders when the arms are lowered, but in any other pose the mesh breaks apart...

So, I wonder what everyone else does in Maya. As there's a lot of animation done with it, there should be a better way to skin these characters, and without writing some muscle simulation plugins ;) I'm open for any suggestions.

goosh
02-11-2003, 09:14 PM
I use smooth bind for the whole character.. I find painting is not a problem.. but if you do, you can always go to the component editor and do things manualyy if you want to

Goosh

seasterling
02-11-2003, 09:38 PM
I smooth bind the whole character too. Paint weights to get things looking pretty good. After you do it a few times you'll start to see a "formula" for the weights around different areas which makes it much faster to do. Just remember that the weights are based on the joints rotation value.

Then I add influence objects, either joints or polys depending on the situation. Hook them to your joints with SDKs to control the deformation. You can go as crazy with this as you want, down to a single vertex if you want. You could throw in a blendshape too, but I don't really find it necessary, the influence objects work great. I think a lot of people think of influence objects too much as a muscle model rather than just a way to control the vertices and maybe don't realize their potential.

Laa-Yosh
02-11-2003, 11:12 PM
Well I've tried as hard as I could and went on with painting the weights... I now have one of the shoulders looking OK but still not too good.

Question: is there some easy way (other than the component editor - we're talking about hundreds of vertices here ;) to get the same weighting on the other shoulder area?

Also, seasterling, could you elaborate a bit more on how to use influence objects (starting with type and shape of geometry etc.)? The Maya help is good for technical stuff and descriptions, but not much practical content there...

seasterling
02-12-2003, 12:22 AM
Question: is there some easy way (other than the component editor - we're talking about hundreds of vertices here to get the same weighting on the other shoulder area?

You can mirror skin weights.

Also, seasterling, could you elaborate a bit more on how to use influence objects (starting with type and shape of geometry etc.)?

Doesn't really matter what the object looks like. I usually create a poly object with its vertices on or near the vertices that I want to affect, just to make it an intuitive process.

Add the poly object as an influence to the smooth bind. Weight the vertices you want to affect to this poly object. Now you can move, rotate, scale the poly object to deform your mesh.

Parent the object into your hierarchy and use SKDs to transform the object based on whatever joints rotation, etc.

Hope this makes sense.

spakman
02-12-2003, 03:54 AM
Originally posted by Laa-Yosh
(I saw this coming for a while now... )

The models are made from polygons, ranging between 7000-10000 faces.


Ah, the joys of vertex binding. Just wait. It gets real fun when you start shooting for realtime...

d=^)

Laa-Yosh
02-12-2003, 11:15 AM
Originally posted by seasterling
You can mirror skin weights.

Yes I see now... somehow it didn't work well the first time I've tried it ;)

Doesn't really matter what the object looks like. I usually create a poly object with its vertices on or near the vertices that I want to affect, just to make it an intuitive process.

Add the poly object as an influence to the smooth bind. Weight the vertices you want to affect to this poly object. Now you can move, rotate, scale the poly object to deform your mesh.

Parent the object into your hierarchy and use SKDs to transform the object based on whatever joints rotation, etc.

Hope this makes sense.

Let me see if I get the workflow right:

- Smooth bind the skin and paint weights until you get OK deformation.
- Locate vertices that have bad deformations in certain poses.
- Add influence object geometry to joints near the vertices. Modify vertex weights so that the influence object affects them as well.
- Rotate joint to problematic pose; now rotate/scale/translate influence object so that it corrects the wrong deformation and set driven key to the joint's rotation.
- Repeat until satisfied :)

So it's basically like adding some more bones to the skin whose behavior is controlled by the joint via set driven keys, right?

Also, does the geometry of the influence object have any effect? Can I use blendshape on it?

Thanks for the help!

Doogie
02-12-2003, 01:41 PM
I had a proxy model running my subD model w/ a wrap deformer. So i used a rigid bind. Since it was controlling the subD versionl, it was essentially smoothing out the influence anyway. My problem was everyone i talked to used smooth binds and knew little about rigid binding. I didnt have problems in my shoulders or hips, but i believe i have seen some use lattices (bound with the geometry), which sucks because youve already bound and weighted.

Ill go double check and get back to you if it turns out to be something else.

good luck.

Laa-Yosh
02-12-2003, 07:07 PM
Ugh, there's a big problem... I've created a NURBS sphere for the shoulder influence and added it to the skin. Result: all the weighting I've spent hours painting is gone out of the window... what am I doing wrong? Or do I really have to re-paint the whole stuff?

Edit: hm, it seems that if I add the influence with locked weights set to zero, then it does not mess up the existing weighting... phew, I was so scared for a moment ;)

sp0rk3d
02-12-2003, 08:32 PM
have you considered useing corrective blendshapes?... these are the most valuable tool i have seen in rigging any character for these reasoons....

1 they are not too complicated
2 they evaluate fairly quickly (depending on mesh density)
3 they allow you to get the EXACT shape that you want...

so the way that i go about makeing corrective shapes is this:
you have to start with a duplicate of your geomitry that is NOT deformed... so select the mesh and show all the inputs and turn all the deformer nodeStates to "has no effect" this sets your char gemoitry to an undeformed state...

Then duplicate the mesh..... unlock then channels for the dup and this is the starting point for your corrective shape rename it to correctiveShoulderMesh or something like that... , you can set the original mesh nodeState back to "normal"

now add the dup as a blendshape to the original.... *and turn the blendshape ON*

then deform your character using your shoulder joint for example.... but just rotate one joint at a time and only in one axis at a time (ie rotate shoulderY so arm is pointing forward)...

now you can move the points of the shoulder around on the duplicate (correctiveShoulderMesh) and watch the original character update as you move the points...
once you get the original to the shape you are looking for you just need to set up a setDrivenKey....
the duplicate blendshape mesh endsup looking very odd in most cases but this is ok.....

repeat as neccecary for all the joints axis (ie you could have up to 6 corrective blendshapes for each joint rotation... +X -X +Y -Y +Z -Z) but you don't always need that many...

Lastly in order to get them to all work together they must all be in the SAME blendShape node... so after you sculpt them all delete the blendshape nodes that have accumulated on your mesh. Then select all the corective meshes first and the original last and create a blend shape... they HAVE to be in the same blend shape node so they do not fight each other.....

last but not least you set up the setDrivenKey the joint Rotate axis is the driver and the blendShape node is the driven.... the tedius part is keying all the blendshapes on and off... So as the shoulder rotateY goes from 0 - 90 degrees the blendShape goes from 0 -1

well there is my $0.02
sorry if i confused anyone feel free to ask me if you don't understand....

CGTalk Moderation
01-14-2006, 09:00 AM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.