Re: [Algorithms] Algo for weight assignment in skinned animation
Brought to you by:
vexxed72
|
From: Jason H. <jh...@st...> - 2009-10-08 05:29:40
|
Bill, I've thought about this on and off for years, but never took the time to attempt it, so grain of salt here. It seems to me that the best smooth skinning is generally one that induces the least amount of exaggerated motion, and maintain volume as much as possible. So, perhaps you could artificially animate the skeleton by randomly perturbing the joints into many different poses (+/- 20 degrees per axis, maybe more) and adjust the weighting until you find one that relaxes the skin as much as possible (distance to closest point along weighted bones in bind pose is as close to fixed in all poses), and the volume of the mesh is as close to the original as possible. Also, make sure that bones being weighted to are mostly shared among a given triangle and adjacent triangles. That'll help with flip-flopping when picking nearest bones under the skin. Not saying this would guarantee a usable skin weighting, but if these are salient components of a good skin weighting, it should help the artist start somewhere good. Problems: Scaling joints used for driven keys/muscle plumping is inherently not volume-preserving nor is an affixed distance from vertex to associated bone. Skin sliding, cloth on characters, props, etc... there are plenty of places this wouldn't particularly help your artist. But for a basic initial skinning, it might do better than closest-bone. It might also be fun to do a feature analysis of the mesh in bind pose, then make sure that those features are neither exaggerated nor diminished in other poses. Might be able to do that by measuring the curvature change (with quadrics?) and attempting to retain nearly the same degree of curvature over non-extreme pose adjustments. At least that way you'd know if you're attaching to the completely wrong joints and reduce their influence down to near-zero. So, no, there's no standard algorithm. :-) JH Jason Hughes President Steel Penny Games, Inc. Austin, TX Bill Baxter wrote: > Is there any standard algorithm used for automatically assigning > reasonable bone weights to vertices in a mesh, given just the mesh and > the skeleton? (I.e. you have no animation data, so you can't use > observed deformations to guide how to assign the weights as in James & > Twigg's "Skinning Mesh Animations"). And in particular are there any > algorithms which work within a per-vertex weight budget constraint, so > that you can use hardware skinning effectively? I've been looking > around, but haven't been able to find anything. > > Thanks, > --bb > > |