Robotic rigging misalignment

I have a robotic rig, and I am struggling with aligning objects in the ankle. I have an IK bone that just serves as a directional bone, and another bone that allows bending of the foot. The actual rotations of each part is handled via the “copy rotation” constraint on each part.

The current problem is that there is a misalignment at harsher angles. Can someone point to what would be causing the issue?

ankle rig.blend (3.0 MB)

It’s good that you are rigging your objects and not skinning them. I would say it’s down to your objects not aligned correctly with your bones. You could probably get away with using object constraints here if you don’t plan on joining your objects into one mesh. I also noticed your objects have strange rotations which makes it difficult to work with. You should keep things nicely aligned before rigging because you will pose it later.

Well the messy angles are because those were the angles of the leg bones, which are ultimately where all those objects are pinned to. There shouldn’t be any misaligned parts, i haven’t had any issues elsewhere. I am using object constraints, but so you have a better setup?
The primary issue from what i can tell is that the ankle joint should probably have one bone that accounts for the slight tilt it has.

Well, that’s a bit wonky now isn’t it? Yeah you have some alignment issues.

Take a look at the back of the foot -


I rotated it on the y-axis and it’s out of alignment because the axis of that part aren’t aligned with the angle of the joint. Here’s a side view to show you what I mean -

Notice the y-axis points straight back? That part should have the y-axis pointing in the direction of the green line because that’s how that part should rotate. Right?

So who rigged this?

If it were me, I’d work on creating a deform rig first for this and get that to working. By that I mean a series of bones that rotate the way the parts should rotate. So I’d have one bone where my green line is. Then since this is mechanical rigging, get rid of the constraint on the object, and just parent the object to the bone. (select mesh object, shift-select armature, enter pose mode, select bone, Ctrl-P → Parent to Bone) That ankle joint might be tough to rig…

Then I’d create a control rig, with the nice bone shapes, that’d move the deform rig around.

Randy

Hey sorry I didn’t get a notification but I think @revolt_randy knows what I’m talking about. The problem is that your objects and bones are not correctly aligned. Rotate your objects in local pivot mode and you will see what I mean. The Y axis of your object and the bone should be aligned otherwise you will get the problems you are getting.

I don’t know why you have bones with constraints and objects copying there rotations when you can just parent the object to the bone that is controlling it. If objects could have an IK constraint I wouldn’t even use a rig for this if your goal is to avoid skinned mesh renderers. If you are trying to avoid using a skinned mesh renderer then I suppose it does make sense to use a rig and have objects copy their transforms because you can animate the objects and remove the rig later. I’ve done something similar to that in past projects for games.

I aligned the bones to the objects and fixed all the object pivots to where the joints are. I also aligned the axis of rotation in the ankle to follow the cylinder that it should rotate around.


I also set the ankle bone to YXZ Euler.

AnkleRig.blend (1.0 MB)

I tried it with it properly rotated, it shows the same issues as well. I will probably use a bone for that angled bit, but it looks like i need to do a bit more experimentation to get it to have the same current functionality.

I think the main issue is that the ankle has two axis that are not intersecting, causing them to spin out. I was using locked track constraints for some of the other joints, so I was hoping it would work here.

https://imgur.com/a/KaoojpJ

I was hoping to use locked track/copy rotations to save having to individually control 3 axis of rotation, but I probably will have to use bones due to how the axis are offset in the ankle.

Did you check my example? It doesn’t misalign anymore. You just need to align the bones axis with the objects axis and position them both to the joint or wherever you want it to pivot from. You can make those bones copy another bone or object after for a single control. Also set the bone to YXZ Euler and lock the X and Z axis. Like I said object constraints can’t use IK for some reason otherwise I wouldn’t even use bones.