I notice that Dual Quaternion skinning follows a non-commutative weighted sum, not lerp nor slerp.
However on animation blending, is it possible to nlerp Dual Quaternions commutativly?
There is alot of things to keep track of here. Because there are many quaternion operations going around, and doing them correct seems important.
1. Inside the Animation Track, Slerp between two quaternion keys seems OK. Outputs a Quaternion, possibly convert to Dual Quaterion.
2. Outside when blending animations, One Quaternion/Dual Quaterion from each track must be blended, either nlerp, or Slerp, or weighted multiplied or weighted summed. Which one is right?
3. How are the blended animations applied to the T-Pose bone, nlerp, Slerp, multiplication, summation?
4. When combining Dual Quaternion Bones to a Full skeleton, nlerp, Slerp, multiplication, summation?
5. On the GPU, Dual Quaternion Skinning, in which I see papers use non-commutative weighted sum.
There are many, many possiblities.
To me it looks like:
1. Slerp keys inside a track. Output a quaternion.
2. nlerp all quaternions. q = nlerp(q1, nlerp(q2, nlerp(q3, q4))) //any order is ok because nlerp is commutative. notice q does not have translation properties
3. qfinal = q* qT-pose. //T-Pose Bone is a Dual quaternion, but q is a quaternion, perhaps possible to overload operator
4. for each combine(qfinal, qparent);
5. qskinning = q1w1 + ..... + qnwn;
If the animation track also has translation then that must be implemented somehow, perhaps with Dual Quaternions from the track. But then which procedure to use?