Search code examples
animationopenglmathquaternionscomplex-numbers

Why is it difficult to use Quaternions for the LBS(Linear Blend Skinning) formula?


Why would be difficult to use quaternions for the LBS(Linear Blend Skinning) formula?:

See picture:

Linear Blend Skinning Formula

  • P': Point transformed
  • P: Point
  • wi: matrix of weights
  • wi(P): weight of point P in entry i
  • Ti: Transform at i

I couldn't really find an answer, I thought that maybe because a transform matrix can store 4x4 values rather than quaternions which can only represent a rotation in 4 values then we wouldn't have a way to represent both a translation and rotation for any bone using a quaternion but I'm not too sure.


Solution

  • You are absolutely right. The fact that quaternions can only represent rotations (and scalings) makes them unusable for this task. There are extensions to quaternions (dual quaternions) that circumvent this restriction. And then, blending linearly works pretty well.

    Also, keep in mind how to transform a point with a quaternion - you have two multiplications instead of one. Therefore, you would usually first blend the quaternions and then transform the point. Although blending the transformed points can be done as well, this makes little sense as it is computational heavier and has the same problems as simple LBS.

    Whether or not the question aims at something more is still open.