Blendin fails when previous action has different channels keyed
Closed, InvalidPublic


Category: Animation

OK, I'm not a coder, so the my assesment of exactly when this bug occurs may be off, and this one was trick to isolate,

When my character turns from left to right or vice versa, blendin on the action actuator works beautifully. The first
movement after jumping though, it doesn't seem to do anything (as though it was set to 0). I noticed that blendin not
working seemed to happen consistently after playing some animations and not others (eg walk left -> walk right works,
jump -> walk right doesn't). I *think* the common thread is that the animations that blend properly all seemed to
have 1+ rotation keys on the root, while those that don't have this key don't seem to work. I'm hypothesising that the
problem is that blendin looks for the rotation from the previous actions key on the same channel... doesn't find it
and so skips blendin altogether.

I've attached a simple blend to demonstrate. The left and right keys trigger animations with root rotation keys to make
the arrow face left and right. You'll notice they blendin perfectly. Space plays an action with only scale keys.

***All action actuators use blendin over 9 frames.***

You can see the error if you push space, and then afterwards push left/right in the opposite direction to where the
arrow is facing. It "pops" as though blendin wasn't being used at all.
ben2610 (Benoit Bolsee) added a comment.Via Old WorldSep 15 2009, 12:48 AM
I have identified the problem with the blend algorithm in the blend_pose() function: the blending is done on location, size, rotation independently based on which field was set by the most recent action on the source pose.

I think the test on POSE_ROT/POSE_LOC/POSE_SIZE could simply be removed and the blending done on all fields anyway. The other problem I see is that the bones that are present in the new action but not the old action are not blended at all. It doesn't seem right either.

The problem is that this function is not only used in the GE but also in do_nla(). So it is outside my 'juridiction' and I need to ask the animation specialist.
ben2610 (Benoit Bolsee) added a comment.Via Old WorldSep 15 2009, 12:51 AM
I pass this problem to Josua for advise, he can send it back to me afterwards.
moguri (Mitchell Stokes) added a comment.Via Old WorldFeb 23 2013, 9:48 AM
Is this still a problem? It seems to blend in trunk r54785.
kupoman (Daniel Stokes) added a comment.Via Old WorldJul 26 2013, 1:48 AM
Can not reproduce in r58610.

There have been many animation changes since this bug was reported, and it looks like it is gone now. Closing this report in about a week unless I hear that the bug is still present.
kupoman (Daniel Stokes) closed this task as "Invalid".Via Old WorldAug 3 2013, 7:04 AM

Add Comment