Page MenuHome

New Euler filter implementation
ClosedPublic

Authored by Sybren A. Stüvel (sybren) on Nov 19 2020, 12:58 PM.
Tokens
"Love" token, awarded by fin.eskimo."Like" token, awarded by lucky3."Love" token, awarded by Andrea_Monzini."Dat Boi" token, awarded by shader."Love" token, awarded by ChrisLend."Party Time" token, awarded by Juangra_Membata."Love" token, awarded by gilberto_rodrigues.

Details

Summary

This new discontinuity filter performs actions on the entire Euler rotation, rather than on the individual X/Y/Z channels only. This should make it fix a wider range of discontinuities, for example those in T52744: Euler Filter doesn't work.

This first review pass is to get feedback from animators on the functionality, so ignore the code for now.

Test builds:

Diff Detail

Repository
rB Blender
Branch
temp-T52744-euler-filter
Build Status
Buildable 11366
Build 11366: arc lint + arc unit

Event Timeline

Sybren A. Stüvel (sybren) requested review of this revision.Nov 19 2020, 12:58 PM
Sybren A. Stüvel (sybren) created this revision.
Sybren A. Stüvel (sybren) edited the summary of this revision. (Show Details)
  • Cleanup: Animation, fix uninitialised variable in Euler filter code
  • Merge remote-tracking branch 'origin/master' into temp-T52744-euler-filter
  • Reintroduce single-channel filter for completeness.
  • Better reporting after the filter is done, to prevent scary error messages
  • Add check on keyframe X-coordinates
  • Fix compiler warning
  • Implement Euler filter by using matrices instead of quaternions
  • Update comments and variable naming
  • Add unit test for BKE_fcurve_keyframe_move_value_with_handles

I've updated the test builds for the latest changes. The most visible change is the way the operator reports its result; it's less "error message" and more "this is what I've done".

Looks like a huge improvement from my tests : (gifs below)
old filter: <click to play>

new filter: <click to play>

test file:

Thanks

thanks for testing fin!, results are great.

Okay it's working nicely,

I wonder if euler filter should: work on all curves when no keyframe is selected
and if some keyframes are selected: work just on those: meaning you can create an area to be evaluated and corrected if for obvious reasons you don't want to touch the entire curve?

This patch doesn't change the selection of what to run the filter on. It only changes the filter itself, making it more useful. I think it's a good idea to keep those separated.

This revision is now accepted and ready to land.Nov 23 2020, 12:21 PM