Page MenuHome

Undoing in pose mode destroys the entire pose.
Closed, ResolvedPublic

Description

System Information
Operating system: Darwin-18.2.0-x86_64-i386-64bit 64 Bits
Graphics card: Intel HD Graphics 4000 OpenGL Engine Intel Inc. 4.1 INTEL-12.4.7

Blender Version
Broken: version: 2.80 (sub 49), branch: blender2.7, commit date: 2019-03-16 23:34, hash: rBcc5bdf029324
Worked: (optional)

Short description of error
when you are posing a few bones / controllers in pose mode, if they are keyed and dont set a key right away you hit undo you lose the entire pose not just the last control you moved posed scaled or rotated.

Exact steps for others to reproduce the error

  1. open any rig (like victor) or any other
  2. key all the character
  3. go to an other frame in the timeline
  4. move an arm
  5. move a leg
  6. scale the head
  7. hit undo once
  8. everything goes back to the keyed pose

Event Timeline

William Reynish (billreynish) triaged this task as Confirmed, Medium priority.

Yes, can reproduce.

This did not happen in 2.79, so it is a definite regression since then.

I think you did some work on undo lately?

I think this is completely unrelated to armatures.
The same problem can be reproduced on a simple cube that has one keyframe for the location.
Undoing after the cube has been moved multiple times, resets its position to the keyframe.

So maybe it is related to rB0e9ea707b5e5be.

@Jacques Lucke (JacquesLucke) maybe it is!, have we got any solutions for this yet?

Brecht Van Lommel (brecht) raised the priority of this task from Confirmed, Medium to Confirmed, High.Apr 1 2019, 2:30 PM

@Sergey Sharybin (sergey), this one might be more related to the dependency graph than the undo system. I have not investigated, but I would guess what is happening here is that the after undo, the dependency graph is re-evaluating animation. Not sure how this worked in 2.7.

@Brecht Van Lommel (brecht), this is similar to T62092. We should really get rid of animation update in deg_graph_on_visible_update, but then am not really sure how linked proxies and linked action datablock are supposed to be tagged for update on file load? (note the comment is not really complete, opening Spring files leaves characters in a T-pose if we don't tag animation for recalc).

@Brecht Van Lommel (brecht), on a side note, it seems there is a global undo happening now? Otherwise i don't know why dependency graph is freed. Seems quite an overkill to me. Is this really intentional?

For pose mode we always use global undo, there exists no local undo for it. The same issue exists for any animated property in object mode, so it's not specifically about pose mode anyway.

I guess we could skip the animation update specifically for undo, but not file load. Or is it about skipping animation update for local datablocks, but not linked ones?