Cyclic dependency errors - Rigging problems with stretching This is my first post here.

I'm a bit a newbie regarding rigging, and I have been modeling a number of mechanical devices for animating. I have been receiving different kind of errors due to cyclic dependencies and so on.

Although the rigs seem to work, they don't update properly when I try to render the animation; a sort of "manual refresh" is needed before rendering each frame, or objects won't get correctly placed. I guess this can be due to those cyclic errors, but it's difficult to trace them!

The System Console is the only tool for this? I can't copy-paste easily, search, not read the full text or getting old messages. Can't I inspect dependency errors directly within the app?

Many thanks in advance.

For those interested, I'm adding some images of the model:



The upper bone (red rectangle) controls the full scissor mechanism, with cylinders and security system moving around.



When rendering an animation, I get that result: cylinder orientation is not correctly updated, you can see both parts of the cylinder don't match. The same happens in the security system on the left.

The problem does not appear if I move and render still frames. Weird!



I have uploaded the model, for those interested. The upper red rectangle-bone controls all (or it should...)

Mechanical Rigging Issues Download

I have switched those options and this is the result, which looks even worse:


The approach I'm following for rigging all my mechanical models is building a bone armature which behaves as the real model and then parenting all the mechanical parts to different bones. Most armatures are quite simple, with some basic maths and simple constraints, but I'm getting these kind of problems all the time.

Manually switching frames seems to work, with a tiny delay/jump barely noticeable, although existent (which is weird...). No problem wen rendering frames. However, when rendering animations or different poses along different keyframes, update is not correctly done.

I first managed to do these riggings without bones, just with math, dummies, and constraints. All worked fine in that scenario, so I guess it's some sort of problem with bones configurations.

I have done a simple test with OpenGL rendering along four frames. First row shows the result I get when rendering the animation, while second row show the result rendering individual frames after switching them. The result is quite different, but you can see that bones seem to behave properly in both cases, with "bad parenting" of the components, much more noticeable when rendering the animation (you can see the cylinder is not correctly positioned in any case).



I have discovered something interesting after further investigation:

The problem origin seems to be in allowing bone stretching. In my rig, the top horizontal bones have stretching allowed (you can notice it in the image), which allows an easy rig of the main diagonal arms. If I switch that stretching OFF, the whole model seems to work fine, as in all the other models I have rigged and which don't need stretching. So I guess this is an internal limitation on bone stretching.

Thanks for your interest, I will continue investigating...
So after inspecting the file the problem is driver on Y axis of mel1200_center_IK bone (the one in the middle of the mechanism).

The "cyclic dependency" is between this driver and both IK constraints (bone_brazo, bone_pivot) and the base (bone_control bone) of both IK bone chains.

I've put the "cyclic dependency" into quotation marks, because logically on bone level there is no cycle - the error is on Blender side and on how it evaluates dependencies and drivers. You hit a limitation that solves the new dependency graph.

Enable it and the rig will update correctly.



Your other option is to build the rig differently either with constaints or drivers, but not mixing them. You can substitute the driver with this to solve the issue:



I suggest to get rid of your other drivers as well (me1200_bone_pestillo) and solve them with constraints only.