How to read the dependency cycle log

image
I am building a rig and met a dependency cycle.
And I tried to read it from the system console.
The overall context is grasped, but I didn’t realize what was going on specifically.
Things like BONE_DONE() , BONE_READY() , BONE_POSE_PARENT() , Pose → Ready are quite new to me.

Yes. The log seems simple and structured. However, I am a beginner.
So I hope someone can unravel the log and explain it in soft sentences.

Thanks in advance.

I think you are looking at the name of the nodes in the node tree structure than is created in the dependency graph. I haven’t got back into the code but if I remember that is where those names come from. Someday maybe they will just display the node tree and it would make more sense. I haven’t seen the new code but I’m guessing that is what it is.

1 Like

Don’t pay attention to the BONE_READY etc parts, or most of the via parts. (Via child of is important; via parent bone is important; via action is important.) That’s probably more for devs. Notice that each dependency is actually represented by two or three lines, only one of which is important. Just look at the names of the bones. If you made the rig yourself, it should be pretty obvious how each bone depends on the one listed.

For your example, the important thing to realize is that mch.pelvis.l depends on ctrl.thigh.l which depends on subctrl.pelvis.l, which in turn depends on mch.pelvis.l. There’s your dependency loop. You’re going to have to decide about which bone you want to drive the hierarchy: mch, ctrl, or subctrl. (I would suggest that bones named mch should depend on bones named subctrl, which in turn should depend on bones named ctrl. Ctrl bones shouldn’t depend on anything except other ctrl bones.)

1 Like

Thank you. I have a lot of curiosity in the low-level world, but it seems to be the time to study more for beginners. I’m going to look into Blender code someday.

Yes. Definitely just checking the name of the bone helped me a lot in debugging. I wanted to know what Devs terminology specifically means, but it seems to be an unnecessary deep dive at the current level. Thank you for pointing it out. I removed the action constraints and cleaned up the rig structure to eliminate all dependency cycles! CTRL bones now lead all MCH bones and subCTRL bones from the top in my rig.