I recently found-out about dual-quats, and refactored my matrix-lerp shader code for skinmeshes to use DQs instead. It works great, and I refactored the whole animation-mixer to be using DQs. Some questions arise, though:
Most engines use quat-slerp, but I’d rather not use several thousand trigonometry-instructions per mixed anim. Meanwhile, DualQuats are really fast, but I don’t see anyone using them much, yet. Specifically the ability to weighted-accumulate ( DQuat1+= DQ2*0.3) looks under-utilized.
=> Is there something one should avoid about DQs ?
My current code computes the final local-space bones via DQs, then converts each DQ to Mat4, then appends those Mat4 for the hierarchy, multiplies by the inverse Mat4 of the bind-pose, and finally converts the resulting Mat4s to an array of DQs to be used in the shader.
=> Is there a way to do the hierarchy-transforms only via DQs, instead of temporarily converting to Mat4 ?
P.S. as it stands, with DQs I can mix a bunch of anims without using even one trigonometry func! (or whatever other instruction that can take more than 10+ cycles)