Page MenuHome

Driver controlled value not updates properly during animation - it has 1 frame lag
Closed, ArchivedPublic

Description

System Information
Kubuntu Linux 13.04 64bit, AMD Radeon HD 4670 graphics

Blender Version
Broken: tested in 2.70 official release (2014-03-19, hash 19e627c), 2.68a, 2.61
Worked: n/a

Short description of error
Driver controlled value not updates properly during
animation playback in viewport and during rendering
of animation. Usually it has 1 frame lag.

P.S. Driver controlled value is updated by select-grab-esc
of any bone of the armature under consideration.

Exact steps for others to reproduce the error
In attached .blend:

  1. Select Yellow bone in Pose mode and go to Bone Constrains Tab (if not already).
  2. In Timeline try to go through frames 1-2-3 and see Yellow bone orientation not corresponding to Orange bone On/Off position.
  3. Also in Bone Constrains Tab it is seen that IK constraint influence is not updates properly.

Description of rig setup:

  • Yellow bone has IK constraint on it (aiming at Red bone) and no animation on it.
  • Yellow bone's IK constraint influence is connected to Orange bone rotation through a driver.
  • Orange bone is animated.
  • Text mark added to faciliate Orange bone state indication.

Details

Type
Bug

Event Timeline

Aleksander Tarkhanov (stark) created this task.
Aleksander Tarkhanov (stark) raised the priority of this task from to Needs Triage by Developer.

I'd like to add that this seems like a widespread issue in Blender. Often when an object's property is driven by another property of itself, there seems to be a lag of one logic tick, even though the dependency is not cyclic. This bug can be reproduced simply by driving the rotation of an object by its location. The "extra object/data update" hacks do not appear to remedy this.

I would call this a pretty critical bug, as it can impede many advanced rigging techniques.

Ive run in to this problem a few times.
There is a work around, you can set the Driver Variable Space to Transform Space.
This should make blender update correctly.
Heres a modified example:

I dont know if your original example is a bug or not.
I dont know much about how the bone properties are suppose to be updated with the bones in pose mode.
Though I know different bone setups (If a bone has a parent or not) work correctly when using different Driver Variable Space.

Sergey Sharybin (sergey) closed this task as Archived.Mar 25 2014, 7:03 AM
Sergey Sharybin (sergey) claimed this task.

The setup you're using leads to a fake cycle which is only resolvable with more granular dependency graph which we're working on.

Thanks for the report, but it's considered a TODO for now.

Hi!

to rocketman,
yes, adding "extra object" to the chain just gives a clear "dependency cycle"... but behaviour is the same... i.e. my setup is really looks like fake dependency cycle in Blender. And I don't know what to try with "data update" - so I'll just believe that's not helps.

to koilz,
yes, switching to Transform Space gives a solution, but I don't understand the background - it looks like magic!

to sergey,
now I see that my setup is really looks like fake dependency cycle and splitting armature object in two seems a reasonable solution. On the "Object level" Blender will tell me when I'll get into "true" dependency cycle, I think.

More versatile dependency graph would be great! Nice to hear that it is among TODO's.

Thanx a lot to all of you, guys! Now I know a much more about the problem and have a workaround, and not just one!