::simple skin weights tool::

May 10th, 2011 by hamish download the zooToolBox

Referencing. What a pain in the butt it can be. One of the big pains can be when you’re setting up a character. Skinning happens in one file, a rig in another, and animation in a third file. At least, thats how I’ve generally done it. There are variations on this theme, but the basic idea of model and rig in one file being referenced into an animated file is a pretty common paradigm I imagine.

So a lot of the time I find I’ll author my skeleton, skin the geo and build the rig only to find that the skinning doesn’t hold up so well as soon as I strike a certain pose in the animation.

Some people solve this by having a “test suite” of calisthenics they put their characters through before they get animated. And sure, this can work well provided you have some way of describing these calisthenics in a generalized way that will apply to any and all characters that come down the pipe. A spider is going to need a different set of poses to a human, which will be different again for a multi-headed dragon which is different again from a snake like creature with 6 arms.

Anyway, this happens enough that I figured I’d try to alleviate the problem a bit. So I wrote a tool that will take skin weight edits made in the animation file, and push them back to the file the model geometry is stored in.

The process goes something like this.

You’re animating away, and you strike a pose only to realize you’ve got horrible shearing happening somewhere. So in your animation scene, with the pose that breaks the skinning you crack open whatever weight/editing painting tool you’re into and go about fixing the problem area. Now because you’re in an animation scene the skinCluster you’re editing actually lives in a completely different file.

So you run this tool. The tool grabs the skinCluster edits made in the animation scene and shoves em into memory. Then it removes the ref edits from the skinCluster node and saves the animation scene. Then it opens up the file the skinCluster node lives in and applies the fixed weighting it stored from the animation scene and saves the file. Finally it opens the scene you were originally in and voila. Just like that, you’re weights are fixed across the board.

Its not the worlds most useful tool – but it saves the occasional headache, and in fact gets used quite regularly. It makes it easy to edit/fix skin weights “in context” without any convoluted workflow.  And in fact having such a tool means minor skin weight polishing happens more frequently now than before the tool existed because its so easy to do.  Skin fixes can be done in any animation as soon as the problem is seen.

NOTE: maya supposedly has functionality to “Save Reference Edits” but as usual, it seems like a largely useless feature.  Has anyone managed to use it successfully?

Share

This post is public domain

This entry was posted on Tuesday, May 10th, 2011 at 21:04 and is filed under main. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

  • http://profiles.google.com/floppydj David Shaw

    Hey Hamish,

    Nice tool, noticed it pop up in the depot a little while ago and meant to check it out.

    I’ve used the Save Reference Edits before, but not from an animation back through to the actor file I can generally/safely save off skin reference edits from the rig back through to the actor, but as per usual, Maya can be temper-mental.

    I am running 2011 though and did not do this much in earlier versions of Maya because, well, it equalled fail most of the time.

    Dave

  • http://profiles.google.com/arondurkin Aron Durkin

    so, when can i have this tool :)

  • Anonymous

     hey there aron,
    you can grab the tool from here;
    http://zootoolbox.googlecode.com/svn/trunk/refPropagation.py

    it’ll be in the next release.  It may not work with the current release, so you might need to check out the current state of the toolbox from here:
    http://code.google.com/p/zootoolbox/source/checkout