1
\$\begingroup\$

Very often I see skeletal animation implemented like this:

  • On Init - store bone's local transforms and inverse bind pose
  • On Update - traverse the skeleton tree, multiplying local transforms on the way (and inverse bind pose)

However, it is more efficient to pre-calculate global poses from local transforms and just reassign them at specified time point to constant buffer.

What is the benefit of keeping all those local matrices? Does it have any meaningful application in other systems like physics, collision detection? People still choose the first scenario and that actually keeps me puzzled.

\$\endgroup\$
1
\$\begingroup\$

In a lot of cases animations are blended between to create a pose. In some cases many animations are layered at once, sometimes on only part of the body. Finally inverse kinematics can be applied on top or under animations. The only way for all this to work is if the bones transforms are first calculated in local space.

\$\endgroup\$
  • \$\begingroup\$ I've just tested animation cross-fading, and you are right :) Blending between local transforms of bones separately provides better results than blending between ready global transforms. \$\endgroup\$ – user63753 Jan 11 '16 at 14:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy