Page MenuHome

Animation: support filtering for curves that have cycle issues.
Needs RevisionPublic

Authored by Alexander Gavrilov (angavrilov) on Nov 24 2021, 2:42 PM.

Details

Summary

It is possible to have curves with cyclic extrapolation that
have a mismatch in their end keyframes, causing a jump.

Also, since the looping behavior is defined per curve rather than at
action level, it is possible for curve loop periods to get out of
sync with each other. This commit adds an option to compare curves
against the manual frame range specified in the action, and treat
any mismatches as errors for the purpose of F-Curve filtering.

When enabled, the check verifies that end values of cyclic curves
match, curves within a cyclic action have valid cyclic extrapolation,
and the action period evenly divides by the curve period (since
a curve looping at e.g. half of the action period length still
repeats in sync with the action).


Originally this was a part of D11803, but I split it off for more review after deciding to make this a filter option rather than an action option:

To summarize, this detects:

  • End key mismatch in a cyclic curve.
  • Non-cyclic curve in a cyclic action.
  • Wrong cycle period for a curve in a cyclic action.

This patch is included in the experimental build of the temp-angavrilov branch.

Diff Detail

Repository
rB Blender
Branch
temp-angavrilov-cycle-errors (branched from master)
Build Status
Buildable 18935
Build 18935: arc lint + arc unit

Event Timeline

Alexander Gavrilov (angavrilov) requested review of this revision.Nov 24 2021, 2:42 PM

Rebased and renamed the option to "Cyclic Extrapolation Issues".

Sybren A. Stüvel (sybren) requested changes to this revision.Dec 13 2021, 11:22 AM

This was discussed in last week's Animation & Rigging module meeting. A summary of the responses:

  • Jason: what happens with fixed curves? Do they disappear immediately?
  • Paolo: "Cycle error" might need a better term, to avoid confusion with "cycles".
  • Orestis: Unclear how the last key is used -- wouldn't it be better to enable a "this is looping" setting, and avoid playing back the last frame.
  • Daniel S: Idea is good, but UI design needs some attention.
  • Brad: The "looping" concept could be even bigger than just FCurves and Actions, for example automatically finding the best looping point in an animation and just making it loop. Less "reporting errors" and more "helping in making it loop".
  • Paolo: warning about baked simulation on top of bones, as it can cause apparent mis-matches that still result in a good loop.
  • Brad: there are many ways in which to loop, should be clearer which kind of "errors" are shown here.
  • Daniel S & Bassam: there are many different reasons for "cycle errors", should be clearer what the issue is.
  • Bassam: The current UI is for real errors like "this FCurve doesn't do anything". These mismatches are more "warning" than error, and should also explain more about what is wrong with it.

From this, I think there are a few things to work on:

  • A "bigger picture" design that discusses how warnings about specific FCurves are handled. This kind of thing should be discussed in a larger scope than just this particular use case.
  • Some screenshots of what those cycle errors look like in practice, and maybe a video that shows how they show up, and how they disappear after they've been tackled.
This revision now requires changes to proceed.Dec 13 2021, 11:22 AM