RE: [Algorithms] Skeletal animation blending artefacts
Brought to you by:
vexxed72
From: Tyson J. <twj...@sa...> - 2002-12-06 18:23:07
|
Jumping spider? Why not just move the whole spider up by the amount that its legs penetrate? Assuming everything is smooth (no discontinuities in calculated interpenetration) your spider will look somewhat startled, but won't look like it's a ghost. Another thing to check is what is happening on the root joint? If it's moving away from the floor, perhaps you could just interpolate the root faster so that the spider gets its full height in time to avoid pushing into the floor. I expect that aside from such quick and dirties, IK is the "real" answer, isn't too hard (but do get a book :), and is fast *provided* you have a good and well optimized math library. IK tends to expose slow functions in the math library once you get above 2 bones. -----Original Message----- From: gda...@li... [mailto:gda...@li...] On Behalf Of Awen Limbourg Sent: Friday, December 06, 2002 8:33 AM To: gda...@li... Subject: RE: [Algorithms] Skeletal animation blending artefacts Maybe you could compute a single 'spider-shoulder' rotation transformation to force its (bad, very bad) foot above the floor ? (=>a single joint IK operation) -----Message d'origine----- De : gda...@li... [mailto:gda...@li...]De la part de Jon Jansen Envoye : vendredi 6 decembre 2002 15:23 A : gda...@li... Objet : [Algorithms] Skeletal animation blending artefacts I'm using a simple time-driven interpolation system to give smooth transitions from one skeletal animation to the next. However, it's causing rather unpleasant artefacts for certain transitions on certain models. For instance, when our spider changes from idle to attack, the spider can be seen to momentarily (but smoothly!) disappear part-way into the floor. The problem is caused by the fact that I'm using simple linear interpolation for the positional component of each bone's transform and a quaternion slerp for the orientation component. It's easiest to illustrate if I do it in terms of simple trig. Suppose the height of the spider's body above the floor is 'h', and that the spider has a single leg of length 'l' which makes an angle 'theta' with the horizontal. As animated, the spider's leg always makes contact with the floor, so the artist has effectively arranged for: h = l * sin(theta) Now suppose I'm blending between two animated configurations using a blend parameter b. If the configurations are: h1 = l * sin(theta1) h2 = l * sin(theta2) Then the blending produces: h = b * h1 + (1-b) * h2 and theta = b * theta1 + (1-b) * theta2 But whoops, the constraint h = l * sin(theta) no longer holds true, and the foot penetrates the floor by a distance given by: b * h1 + (1-b) * h2 - l * sin(b * theta1 + (1-b) * theta2) So (I think) I understand the cause of the problem, but the only solutions I can think of are either unpalatable or just plain unworkable: 1) Runtime IK (yikes!) 2) Ask our artists to produce transition anims (but the whole point of blended transitions was to avoid this, and also to allow any animation to be interrupted by another at any time) 3) Ask our artists to modify the original animations to make them more amenable to blended transitions (I'm not even sure I know what this ought to involve) I'm beginning to think I can't have my cake and eat it... ------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ GDAlgorithms-list mailing list GDA...@li... https://lists.sourceforge.net/lists/listinfo/gdalgorithms-list Archives: http://sourceforge.net/mailarchive/forum.php?forum_id=6188 |