[Bf-committers] Animation regression, quaternion normalization
Brecht Van Lommel
brechtvanlommel at pandora.be
Tue Feb 28 21:26:28 CET 2012
Ok, I found the commits that removed this auto-normalization. First it
was changed for pose bones in r27200, and then for objects in r33523
to make it consistent. For pose bones it was changed by Joshua with
the comment "This was a constant source of confusion in the past, so
let's see if we can do without it now :)".
I can definitely see the interpolation issue when they are not
normalized. So the question then is, what was this confusion?
One issue perhaps is when you want to enter a particular value for the
quaternion, if it keeps normalizing each time you enter a value, that
would be a problem.
Another issue with the implementation that I can see is that the
normalization was done in object update, so not on editing only but
also on any object animation evaluation. If you then animate only one
of the quaternion components, the other values keep changing as you
scrub through time and actually alter the animation. So perhaps that
should be done differently, though it's not something you would do
often I guess. Doing it immediately in RNA would also be problematic
if you're setting the quaternion component by component in a script,
the normalization does need to be delayed somehow.
Further, probably Joshua knows, mailing this to him as well to get his opinion..
On Fri, Feb 24, 2012 at 9:37 PM, Nathan Vegdahl <cessen at cessen.com> wrote:
> Hi Brecht,
> You are right that it appears there are a lot of releases with this
> regression! I'm not sure how I didn't notice before. Guess I wasn't
> animating anything with large rotations.
> It appears the regression was introduced in version 2.56. Versions
> 2.55 and earlier behave as desired.
> 2.4x and earlier _do_ auto-normalize (I just tested). In the 2.4x
> series quats are displayed as eulers in the n-panel, so you have to
> set keyframes and look at the values of the keys in the Ipo editor to
> see the actual quat values. Try, for example, keying a bone unrotated
> on frame 1, then rotated 180 degrees on frame 21. On frame eleven
> it's clear that the values given by the Ipo curves are not normalized.
> However, if you move to frame 11 and set a key, the inserted keys are
> This is a highly desirable behavior, because it keeps quaternion
> values from drifting and causing rotation speed issues with
> Perhaps we could just normalize quaternion values upon inserting
> keyframes? That is the primary use-case here.
> On Fri, Feb 24, 2012 at 7:51 AM, Brecht Van Lommel
> <brechtvanlommel at pandora.be> wrote:
>> Hi Nathan,
>> I tried manually typing in non-normalized values in the N key
>> transform panel in the 3d view, and rotating objects/bones after that
>> with transform, but could not see it auto-normalize the values in any
>> version I tested (2.49, 2.57, 2.60, 2.62).
>> Probably I'm misunderstanding something, but I can't find any traces
>> of this feature.
>> On Thu, Feb 23, 2012 at 11:03 PM, Nathan Vegdahl <cessen at cessen.com> wrote:
>>> Hi guys, I wrote to the list about this before but received no response.
>>> I don't know when this was changed, but quaternion rotations for
>>> objects and bones in Blender are no longer auto-normalized for the
>>> user. I am frustrated that a release (2.62) made it out the door with
>>> this being the case, as it substantially harms the practicality of
>>> animating with quaternions. It is not "incorrect" behavior per se, so
>>> I am hesitant to file a bug report. But it is something that needs to
>>> be changed.
>>> I think we either need to revert behavior back to how it was before
>>> (quaternions being auto-normalized in the transform panel), or find
>>> another solution. But as things are right now, quaternions are
>>> impractical to animate with in many circumstances (especially doing
>>> blocking on characters involving large rotations). I will be happy to
>>> provide a technical explanation of why that is the case, but at the
>>> moment I am swamped trying to finish my rigging DVD.
>>> I just want to make sure this doesn't slip into the next release as
>>> well! It is a serious regression.
>>> Bf-committers mailing list
>>> Bf-committers at blender.org
>> Bf-committers mailing list
>> Bf-committers at blender.org
> Bf-committers mailing list
> Bf-committers at blender.org
More information about the Bf-committers