Rigging several differenet dependancies

Okay, I hope I can make this clear enough. I’ve included a sample Blend file for folks to play with.

I’m trying to rig the leg of my robot. So, the blue box rotates on the piston separately, easily done. It’s hollow and the yellow box is an insert.

Now, when the yellow box underneath rotates on the piston, I need everything underneath it to rotate with it. In this case, the red and the green parts. Easily done by parenting a few bones together.

Now, this is where it gets interesting. I want to be able to slide the red part back and everything above it moves with it. It’s as if the red and green parts are connected on rails.

This is where it gets even more fun. Try to imagine another piston, this time going vertically through the yellow, red, and green parts. Now, the red and the green parts need to rotate on this piston together, because, as I said, they’re “connected” by rails. This rotation is only a very small one.

How in the heck do I set up something like this?

I’ve been trying to have separate bones for each of the boxes and parent the green and the red to the yellow so it copies the X rotation, but I need another bone or an empty to drive just the Z rotation of the green and red parts together. Since the red part needs to move backwards, I can’t parent the yellow bone/box to that as then it moves the green part because the green part is parented to the yellow box for the main piston rotation. ARRRRRGH!!

Or do I also just use a driver to rotate the green part based on the rotation of the yellow box somehow?

I just linked another image of the actual robot and it looks like the vertical piston/rotation comes from the back of the red part.

This has my head fried! I’ve only ever done some super simple rigging before, and a long time ago, so any help on this setup is really appreciated.

Rig_solution.blend (850.9 KB)

Okay, so I think I have the theory of how to set this up works. I’m not on my machine but I needed to write it down before I forget what I think should happen.

Basically, I can leave it all as it, but I need to be able to tell the Z rotation of the green box to use that of the control bone, but also to pivot from that point (or the end of the bone in the red box).

So I guess the question is, how to I get just one axis position (in this case the Z) of a bone to use the pivot position of another bone?

Am I overthinking or complicating this set up at all?


So, here’s an updated version of the basic rig. I think I have the main controls in place fairly well. I can rotate all of it with one controller, and also slide the top bits back without affecting the bottom piece.

It’s the other rotation that’s still what’s giving me a headache

Rig_solution.blend (916.9 KB)

If I use the Pivot constraint on the bone and then add a copy rotation, it moves the whole piece back. I just need to find a way to offset the rotation without moving the bone completely. Is this even possible?

Should I maybe do this move on the object level? I really want to try and contain all of this inside an armature.

Or can I somehow bind the bottom pieces to a piece of proxy geo and use that to drive the rotation. Maybe parent them to a proxy box that engulfs them both and then lock its location and have its pivot copy the location of my rotation controller and have the bottom pieces copy just the rotation of that.

Something to try tomorrow.

I’d like to help, but it’s not very clear what you’re after.

I suspect that you are.

Not super clear, but copy local rotation from different axes onto two different bones in two different position. Warning, not actually a good idea.

I took a look at the file, and I’m not sure what you’re trying to do, but there are a few obvious weirdnesses:

  1. A bone with a pivot constraint, targeting itself? With a driver for offset? Just use another bone as the pivot point. No driver. To change the offset, move the target bone.

  2. All of these per-axis copy rotations and limit rotations are a bad idea. Orientations aren’t really cleanly divisible into 3 axes. Your constraints will probably work with limited input rotations, but I’d recommend staying away from trying to do things like this. I always try to work with damped track, locked track constraints to do per axis work instead.

I am also unsure what you’re trying to do. I played around with rigging a model the way I’d do it if I wanted easy interfaces for posing it. That is, one control for the body and then a separate control for each of the legs.
If it is of any help, play around with it and ask if anything is unclear.
Blend file here (4.7 MB)
Original file found here
Found description of the legs here

1 Like

Perhaps I did over complicate things!

In the YouTube video of the model build, at the 9:55 time, when he joins the two parts, there is a pivot. I’m not sure if the model actually pivots on that axis or this is just for joining the pieces, but from a ton of reference I have there’s a bit of movement there. It’s that bit that’s getting me. I can’t figure out how to use that pivot to rotate the two pieces that slide along each other, as one part without them skewing.

I’ll try and do a screen cap tomorrow of my problem, and I’ll also have a dive into your blend file.

Right, yeah I saw that too.
Bone Leg.Lower pivots around this hidden joint and is the main IK bone to the control/target bone Ctrl.Foot.Target. However, the distance from Leg.Lower to the “hip joint” at Leg.Upper is so short that the solver gives it little movement, since it cannot do very much. You can still see some movement in my video. The main method (though technically not part of the IK chain) for the rig to reach the control bone is instead the Leg.Lower.Stretch that handles the sliding motion.

@Ruff, I cannot thank you enough for this file and explanation. Whilst the rotation that I was after may not be super accurate and/or feasible/mechanically realistic, it is probably a step too far for me right now.

I really was overthinking a ton of this stuff (and I still am to be honest! I’m already thinking about how to rig up the turrets and guns and all of that and have it all constrained controlled by just a few handles.) so for now I’ll continue following the tutorial I was following and try and apply as much as I can to my model. (https://www.youtube.com/watch?v=dEJdM6VntLE&list=PLbjn7kaP877v6ByHd-fgek3kOmUYFOzR0&index=2)

It was the Stretch To constraint that I didn’t know about and it’s simply super. Really simple and perfect. I’ll play around with that a ton now and see if I can mirror your setup in my file.

It may take me a few iterations though, lol. As you can probably tell, my rigging experience is non-existent.

Again, thank you so much.

You are very welcome. That was a good tutorial with lots of stuff I didn’t know, though nothing about “sliding” parts. Btw: If you look at my rig you’ll se a different (and quite common) way of solving hydraulic cylinders.
It’s funny, looking through my post history I realize how little I knew about rigging not too long ago and how much I still can pick up from a beginner tutorial.

I can relate very much to the overthinking. Keep watching tutorials, play around on your own and disect other peoples (mechanical) rigs. In that order I think. At some point it will “click” and from there on it will be more of a puzzle than a search for help and references. Case in point: It took me like five tries to get this rig working (though I’m sure there’s lots of room for improvement), and I was able to have fun with every iteration while using zero external support.

1 Like

I really think that rigging is something that I could really get into. As you said, it’s like a puzzle (as is most of the stuff in the 3D workflow really) and I love trying to get stuff working.

I’m thinking of buying the Creative Shrimp hard surface rigging course as that seems to cover a lot, but for now some Youtube stuff and trying to learn how to use constraints correctly will suffice for now.