Spline IK gets disabled on random frames (new depsgraph) / bone drivers get updated too late

Hi, I’m trying to get my Spline IK working. It’s behaving the way I want to, except for random frames where it looks like the Spline IK doesn’t get applied to the bone chain and the bones go back to their default position. The error is visible in the viewport and in export and it’s on different frames every time. I already tried every solution I could find, I’ve…

  • put all the bone hooks into a seperate control rig (control), with a deform rig (deform) containing the spline IK and all the other bones copying transforms from the control rig (to avoid dependency cycles).

  • enabled Extra Object Update and Extra Data Update on every object.

  • added a second bone chain with bones that are unparented from each other, copying the transforms from the SplineIK to avoid the known scaling artifact when using Y stretching.

If anyone knows a good solution for this, I’d be very thankful! The only thing I can think of right now is exporting animations multiple times and stitching them together, overriding broken frames with working frames from other exports. But that would be very time consuming, especially when it needs to be done on a number of animations.

I’ve uploaded the blend file to my dropbox folder: https://www.dropbox.com/s/4r1qftj7x1e0hqe/splineIK.blend?dl=0

The rig is a WIP, I’m testing the Spline IK only on the right arm right now.

I’m using the new dependency graph in 2.79, switching back to the old dependency graph seems to solve the issue, but I really need to use the new dependency graph, so bone drivers don’t get updated a frame too late… If that’s the only workaround, do you have a solution that can force blender to update drivers instantly?

This solved itself when I discovered that having a control rig and a deform rig already solves the driver problem. It probably works now because they’re different objects and blender actually updates the dependencies on every frame.