Thursday, March 29, 2012

Possibly Faster Skinning of Animated Characters

Subdiv can give us a low vertex count cage mesh to be used for skinning. Why is a low vertex count mesh used in skinning helpful? Because fewer vertices being skinned means less vertices to paint weights on. Also if we need to correct the skin using something else we can have a low resolution thing to work on.

Why even make a subdiv when I could just use a polygon or nurbs? The subdiv gives us a low resolution version that roughly fits it automatically. Using subdiv we don't need to model an external influence and try to have it fit our model then use it for skin as an influence.

But aren't we really interested in skinning the hi res character, why are we bothering with the low res version?
Because if we skinned the low res mesh we could also be getting the vertices of the hi res subdiv to move as if they were skinned. How do we do that? We could use a wrap deformer where we have the low res poly telling the hi_res components where to move.

Because cage mesh and hi res talk the hi res character gets "skinned". Also we can correct bad looking skinning using low res blendshapes created out of cage mesh. The skinned low res (that tells hi res what to do) talks to blendshapes via set driven keys on joint rotations. So we can tell skin something like correct this part using this blendshape(s) when this knee joint is rotated here.

Hope this is helpful,

getting the low res mesh from the subdivision -- make sure to check vertices, and not tesselation with base level at 0 to get the cage mesh
getting a poly to be a subdivision -- modify, convert to subdiv, to add more vertices select vertices and refine components)
what to drive in sdks for skinning with blendshapes -- to find the driven tip is to open blendshape window and click on select, then in sdk window click on blendshape of interest, driver something like joint rotation
if max distance not working in wrap -- increase it as little as possible until it does work
remembering joint rotations for sdking corrective shapes -- setting keys on joint rotations

Inspired by Steven Stahlberg (androidblues dot com)
Inspired by Jason Schleifer (jasonschleifer dot com)