Dual Quaternion Skinning

What is "dual quaternion"?

  • Analogue of homogeneous matrices to quaternions
  • So can represent a translation also
  • Chasles' Theorem
    • Every rigid transformation can be expressed as a screw (rotation and translation along the same axis)

  • Application of "dual numbers" concept to quaternions
  • SLERP in quaternions corresponds to ScLERP(Screw LERP) in dual quaternions that generalizes SLERP to all rigid transformations.

What are its merits?

  • Coordinate Invariance
    • interpolation of regular quaternion & translation is not coordinate invariant
      • always rotates about origin
    • ScLERP is coordinate invariant
      • rotates about screw axis
  • Preserves rigidity (top: linear skinning / bottom: DQ skinning)

How about performance?

  • Conversions between (regular quaternion + translation) & dual quaternions require just one quaternion product
  • Only marginally more expensive than regular quaternion skinning

A pitfall (comes out in regular quaternions also)

  • Coping with antipodality
    • We have to find the shortest path of rotation among two possible candidates
    • One can do this in vertex shader or approximately precompute on CPU
  • Not a panacea
    • Dual quaternion skinning can have its own share of problems in certain areas
    • We can fix it somewhat with additional bones, but definitely not an ideal solution

Reference

크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 2

top