[Bf-committers] Quaternion keyframing, and normalization

Nathan Vegdahl cessen at cessen.com
Thu Jan 12 00:16:04 CET 2012


I notice that in recent builds, quaternion rotations do not stay
normalized like they used to.  In some ways this is nice, but I think
it actually makes the typical use-cases much more nasty.  Perhaps we
could strike some kind of middle-ground, where inserting key-frames
does a normalization by default, but everything else leaves them
alone?

The reason this is important is because large rotation differences
(e.g. > 120 degrees) between quaternions result in a noticeably
non-constant rotation speed when doing linear interpolation between
them (and by extension, unexpected speed variation with bezier
interpolation).  In the past, the solution to this was simple: insert
a (normalized) keyframe in-between.  But if keyframe insertion does
not normalize the quaternions, that doesn't work, and the animator
instead has to manually tweak the curves, which can be tricky for this
case.

For me this comes up a lot e.g. when I've finished blocking an
animation and start putting in my breakdown keys.

Anyway, as things are now, quaternions are a lot less of a "Just
Works(tm)" kind of thing, which is part of what I love about them.  So
could we normalize on key-framing?  At least as an option (preferably
on by default)?

--Nathan


More information about the Bf-committers mailing list