Pistons and cyclic dependencies

Ok so I’ve been working on this robot for a school project, and his limbs are based on pistons, something I thought would be cool but fairly easy to rig. Turns out that wasn’t the case. Due to cyclic dependencies some of them are lagging behind the animation, making the whole thing look wierd, but I have no idea how I should rig it without cyclic dependencies.

But I did notice something that could provide a work around. I you don’t render the animation as an animation, but rather render out an image, then skip to the next frame and render again the bones are given the time to behave correctly, but this would be really tedious work. I’m not a skilled programmer (took a beginner’s course in Java) but would it be possible to make a script that renders the animation in this way?

Or is there any other work around? Please help! I’ve attached the .blend file.


Juggernaught.blend (1.31 MB)

You need to create anchors for the pistons, basically a bone extruded from the base of each bone that makes up you piston/cylinder set up. This new anchor bone needs the same parent as the piston/cylinder bone you extruded it from. Then the piston/cylinder bones need to be children of their anchor bones. Finally, the track-to constraints on the piston/cylinder bones need to be set to the anchor bones.

I did this to the backupperarm on the left side. I also turned off (via the eye icon on the constraint) all your track-to constraints so they aren’t active to check for cyclic dependencies, and you still have one in there… Didn’t look into it…

Cool looking mech! Could I use it as a basis for another mech? I don’t quite understand the gear at the top, it looks cool though, but if it was replaced with a cockpit… Then I could use it in the epic mech battle animation that I will probably never end up making…


ps I rigged a lot of these recently and found setting the track-to constraint to pose space (bottom of the constraint) worked best…


Juggernaught.blend (1.26 MB)

And if you want to avoid cyclic dependencies, using IK instead of track to constraint could be a solution.
Here’s a useful tutorial about rigging pistons with IK constraints.

Thanks guys, although I managed to figure out that fix before looking here, Randy. And yeah sure, you can use it, just make sure you credit me ;p now… let’s animate the bastard ;D