Thread: [Algorithms] Algo for weight assignment in skinned animation
Brought to you by:
vexxed72
|
From: Bill B. <wb...@gm...> - 2009-10-08 00:30:03
|
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 |
|
From: Jon W. <jw...@gm...> - 2009-10-08 00:44:21
|
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 > There is no *good* algorithm. I've tried finding the closest bone behind the surface, with some favoring of bones closer to the reverse vertex normal. In this case, a "bone" is not just the rotation center, but an imaginary line from the center of the bone rotation matrix to the center of the child rotation matrix (and there will be multiple such lines for a single bone with multiple children). It is by no means great, but at least it gets the skin deforming. Knees, elbows and arm pits will never look good with automatic weights. In general, it's really no better than what you get when you reset a skin or Physique deformer modifier to all default envelopes in 3ds Max... Well, except you can make it so you never end up with "floating" vertices :-) In fact, I know some artists who claim they will never look good with only skinning at all, that you need bulge deformers at a minimum :-) Sincerely, jw -- Revenge is the most pointless and damaging of human desires. |
|
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 > > |
|
From: Peter-Pike S. <pet...@ho...> - 2009-10-08 05:44:58
|
Hi Bill, I've heard people had good results with this paper: http://www.cs.washington.edu/homes/jovan/papers/baran-2007-ara.pdf (Just the heat diffusion skinning part, don't know about the other bits...) Peter-Pike > From: wb...@gm... > Date: Wed, 7 Oct 2009 17:29:29 -0700 > To: gda...@li... > Subject: [Algorithms] Algo for weight assignment in skinned animation > > 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 > > ------------------------------------------------------------------------------ > Come build with us! The BlackBerry(R) Developer Conference in SF, CA > is the only developer event you need to attend this year. Jumpstart your > developing skills, take BlackBerry mobile applications to market and stay > ahead of the curve. Join us from November 9 - 12, 2009. Register now! > http://p.sf.net/sfu/devconference > _______________________________________________ > GDAlgorithms-list mailing list > GDA...@li... > https://lists.sourceforge.net/lists/listinfo/gdalgorithms-list > Archives: > http://sourceforge.net/mailarchive/forum.php?forum_name=gdalgorithms-list |
|
From: Bill B. <wb...@gm...> - 2009-10-08 18:49:10
|
Heat diffusion for weights. Sounds reminiscent of the Harmonic Coordinates cage-based deformation technique of Joshi et al. The implementation looks easy enough, so I'll give it a try. Thanks for pointing that out! --bb On Wed, Oct 7, 2009 at 10:43 PM, Peter-Pike Sloan <pet...@ho...> wrote: > Hi Bill, > I've heard people had good results with this paper: > http://www.cs.washington.edu/homes/jovan/papers/baran-2007-ara.pdf > (Just the heat diffusion skinning part, don't know about the other bits...) > Peter-Pike > >> From: wb...@gm... >> Date: Wed, 7 Oct 2009 17:29:29 -0700 >> To: gda...@li... >> Subject: [Algorithms] Algo for weight assignment in skinned animation >> >> 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 >> >> >> ------------------------------------------------------------------------------ >> Come build with us! The BlackBerry(R) Developer Conference in SF, CA >> is the only developer event you need to attend this year. Jumpstart your >> developing skills, take BlackBerry mobile applications to market and stay >> ahead of the curve. Join us from November 9 - 12, 2009. Register now! >> http://p.sf.net/sfu/devconference >> _______________________________________________ >> GDAlgorithms-list mailing list >> GDA...@li... >> https://lists.sourceforge.net/lists/listinfo/gdalgorithms-list >> Archives: >> http://sourceforge.net/mailarchive/forum.php?forum_name=gdalgorithms-list > > ------------------------------------------------------------------------------ > Come build with us! The BlackBerry(R) Developer Conference in SF, CA > is the only developer event you need to attend this year. Jumpstart your > developing skills, take BlackBerry mobile applications to market and stay > ahead of the curve. Join us from November 9 - 12, 2009. Register now! > http://p.sf.net/sfu/devconference > _______________________________________________ > GDAlgorithms-list mailing list > GDA...@li... > https://lists.sourceforge.net/lists/listinfo/gdalgorithms-list > Archives: > http://sourceforge.net/mailarchive/forum.php?forum_name=gdalgorithms-list > |
|
From: Ignacio C. <ica...@nv...> - 2009-10-09 00:31:23
|
Blender also has an implementation of automatic weight assignment based on that paper: http://www.blender.org/development/release-logs/blender-246/skinning/ -----Original Message----- From: Bill Baxter [mailto:wb...@gm...] Sent: Thursday, October 08, 2009 11:49 AM To: Game Development Algorithms Subject: Re: [Algorithms] Algo for weight assignment in skinned animation Heat diffusion for weights. Sounds reminiscent of the Harmonic Coordinates cage-based deformation technique of Joshi et al. The implementation looks easy enough, so I'll give it a try. Thanks for pointing that out! --bb On Wed, Oct 7, 2009 at 10:43 PM, Peter-Pike Sloan <pet...@ho...> wrote: > Hi Bill, > I've heard people had good results with this paper: > http://www.cs.washington.edu/homes/jovan/papers/baran-2007-ara.pdf > (Just the heat diffusion skinning part, don't know about the other bits...) > Peter-Pike > >> From: wb...@gm... >> Date: Wed, 7 Oct 2009 17:29:29 -0700 >> To: gda...@li... >> Subject: [Algorithms] Algo for weight assignment in skinned animation >> >> 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 >> >> >> ------------------------------------------------------------------------------ >> Come build with us! The BlackBerry(R) Developer Conference in SF, CA >> is the only developer event you need to attend this year. Jumpstart your >> developing skills, take BlackBerry mobile applications to market and stay >> ahead of the curve. Join us from November 9 - 12, 2009. Register now! >> http://p.sf.net/sfu/devconference >> _______________________________________________ >> GDAlgorithms-list mailing list >> GDA...@li... >> https://lists.sourceforge.net/lists/listinfo/gdalgorithms-list >> Archives: >> http://sourceforge.net/mailarchive/forum.php?forum_name=gdalgorithms-list > > ------------------------------------------------------------------------------ > Come build with us! The BlackBerry(R) Developer Conference in SF, CA > is the only developer event you need to attend this year. Jumpstart your > developing skills, take BlackBerry mobile applications to market and stay > ahead of the curve. Join us from November 9 - 12, 2009. Register now! > http://p.sf.net/sfu/devconference > _______________________________________________ > GDAlgorithms-list mailing list > GDA...@li... > https://lists.sourceforge.net/lists/listinfo/gdalgorithms-list > Archives: > http://sourceforge.net/mailarchive/forum.php?forum_name=gdalgorithms-list > ------------------------------------------------------------------------------ Come build with us! The BlackBerry(R) Developer Conference in SF, CA is the only developer event you need to attend this year. Jumpstart your developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9 - 12, 2009. Register now! http://p.sf.net/sfu/devconference _______________________________________________ GDAlgorithms-list mailing list GDA...@li... https://lists.sourceforge.net/lists/listinfo/gdalgorithms-list Archives: http://sourceforge.net/mailarchive/forum.php?forum_name=gdalgorithms-list ----------------------------------------------------------------------------------- This email message is for the sole use of the intended recipient(s) and may contain confidential information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply email and destroy all copies of the original message. ----------------------------------------------------------------------------------- |