Reputation: 1041
I have code that runs many skeletal animations using matrices, and I want to convert it to dual quaternions, to get better performance.
I have only one issue - I can't find a good resource on how to handle arbitrary scales.
I do not quite understand how the scales in the skeletal hierarchy carry.
Let's say for every node in the skeleton, I have its local dual quaternion (rotation + translation) and a 3D vector for scale, what do I do with them to incorporate the scale?
Upvotes: 1
Views: 534
Reputation: 1605
Skeletal animation and scale, especially non-uniform scale, is a tricky subject.
Using standard implementation of skeletal hierarchies with a matrix per bone, scale simply propagates to children, which is usually seen as unwanted behaviour - propagating non-uniform scale would lead to shear and other deformations on children bones, that would cause strange artifacts in skinning. For this reason, it is often "compensated for" on child matrix - for example, see Autodesk Maya implementation of this concept.
For a good description of integrating non-propagating scale into dual quaternions, several academic papers by Ladislav Kavan provide a lot of detail. He also has a number of lectures on Dual Quaternions on youtube.
Upvotes: 1