Bones moving on track randomly when character is rotated

Hello, I’ve got another rigging issue ;-;
So I have a character that is all set up for animation. But when I try to rotate the character, this happens:

I cant figure out why the tracks won’t follow the body’s rotation. The arms are also moving at random when the character is rotated. Does anyone know what is going on? The arms use a Clamp constraint on a track.

It’s going to be almost impossible to answer without a file.

Based on what I’m seeing, the first thing I’d wonder is if you have the track path unparented. If the track path never rotates, the bones clamping to it won’t rotate with the body.

Ok, here is the file. I believe the track is parented correctly, this is my first rig so things might be a bit weird lol. (4.0 MB)

Things aren’t parented correctly, but things are kinda crazy in there, and I can’t tell you what you should do-- I think you’re trying to do something impossible with your rig, and I think you’ve overloaded what TrackSphere empties do.

So, the basic structure here is that your TrackSpheres are parented to the armature as an object, so acquire no rotation or location from individual bones in that object, and then your paths, which are unparented, Copy Locations the TrackSpheres. Then, you’re using the rotation of TrackSpheres to do other things via Transformation constraints.

So TrackSphere doesn’t copy the body’s rotation, and if it did, you might be screwing up your transformation constraints (that’s the overload I mentioned); and if it did, it doesn’t much matter, because your paths just copy location and don’t acquire rotation from anything.

The impossible thing I suspect you’re doing here is trying to make the tracks move automatically and appropriately as you move the robot around. The use of all the transformation constraints suggests that. I’m sure just about everybody tries doing that at some point or another, but it’s not possible. The most concise explanation of why it’s not possible is that how far you need to roll depends not on where you are but on where you’ve been, and Blender doesn’t know that, doesn’t keep track of it.

If that’s what you’re trying to do, and you agree that it’s impossible, then I think that can simplify your plan quite a bit, so my recommendation is to simplify-- clear all constraints, unparent everything, delete the armature, and rebuild the rig from scratch.

1 Like

Wow, ok. I had planned on just animating the tracks moving as the character moved (not having them do it on their own). Do you think there is a way I can just fix the z-axis rotation issue?

Hi, What bandages said is correct but you might be able to overcome this by adding an empty and selecting everything and parenting to the empty object.

It will only work for rotation.

The general structure for what you want should be: Axle bone parented to body bone; curve bone parented to axle bone; curve parented to curve bone; curve object bone parented to curve bone; curve object parented to curve object bone; three wheel bones parented to curve bone; rotation control bone, which doesn’t deform anything so parented however you want, from which wheel bones copy rotation and curve object bone does a rot->loc transformation.

In your case, this is complicated by the relationship of the curve object to the curve (and I understand, Blender doesn’t make this easy.) There are at least two ways to get this right, but the way that I do it is: curve origin is at first control of the curve, and rotation is applied; curve object origin is at same location as curve origin, and rotation is applied; mesh and array is built around those as (nearly) unchangeable facts of life. That way, as long as the curve object is only ever transformed by translating it in its curve modifier’s deform axis, relative to the curve, everything will always work.

Just tried this but it ended up breaking the rig. Thanks for the suggestion though.

Trying to figure that out, do you have any suggestions for the arm issue?

You need to select all in object mode. and parent as object.

I did, but it made some of the original functions of the rig stop working.

1 Like

Sorry, I didn’t even notice the arms at first. There are multiple problems here.

First is that the curve that the arm bones clamp to is parented to the armature as an object, rather than to any bone, so that curve will only ever move with the armature, not with the body.

That’s not the entire problem, there are still issues with how the bone decides which point it should clamp to, but I’ve never been able to fully understand how a clamp-to works. It probably has to do with the changing orientation of the curve.

There may be some way to make it work with a clamp to, but I wouldn’t know what it is. If I wanted to constrain the arm to a particular path, I would probably make a non-rendering mesh and shrinkwrap constraint the arm bone to that mesh instead. Or, use a different constraint, like a follow path, perhaps with fixed position and driven offset.

1 Like

Well, this project has an approaching deadline and I can still provide the end result while avoiding this type of movement. I’ll have to come back and redo the rig some other time. Thanks for the help!