Sunday, 29 May 2011

Automatic hair/fur plane skin weighting

So, been a bit busy of late with work, projects (I'm building a custom e-bike with various bits ordered from China) and also a community farm project that takes up my time. A post on here is way, way overdue... I don't know where the time has gone.

The tool I'm going to cover here automatically skins hair planes based on an underling mesh, and ensures that each vertex in a single hair segment has unified skin weight values to preserve (as much as possible) the shape and volume of each piece as it deforms.
This is definitely aimed more at the games developers that don't have the luxury of using the various hair/fur shaders, but it should be of general interest for anyone looking to write skinCluster related scripts.

Friday, 27 May 2011

Copying skin weight values between vertices

I was writing a new post on an automatic hair plane skinning tool and realised it had a dependency in the form of another tool I use all the time so thought I'd better quickly post up about this one first.

So, this is a procedure that copies skin weight values from one source vertex to one or more targets and it's something I use a huge amount when skinning characters. It will work if the vert selection is across multiple meshes (though they do need to have the same influences so it can assign weight values to them) so it's useful for things like unifying weight values on seams between meshes or, for example, weighting a button mesh so it follows the nearest weighted vertex on a coat.

I know anyone with Maya 2011 will be saying about now "but isn't this kind of unnecessary with the new skinning tools?" and it kind of is is... if you're running 2011 (I think they finally included this in the tool set). Unfortunately, being part of a wider studio I don't get the final say on what version we upgrade to.... so I'm on 2010. Yeah, I'm kind of gutted...
That said, I wrote this script a while back and over time it's become an integral part of my tool set so even if I was on 2011 it would still be a useful.

Anyway, I'm not going to spend a load of time with this as really I'm only posting it up as a precursor to a new post I've mostly written already. Also I've commented the script itself pretty exhaustively and I'll only end up repeating myself.