# Sudden 180° Change in Bone Orientation While Rotating Another Bone in the Hierarchy

I am developing the motion control for an industrial robotic arm. I have defined the skeleton and assigned all components to the frame. This is the complete skeleton:

I need the last two axes (the last 2 bones) to maintain their current rotation:

The bone 'Arm 5' should be oriented vertically and perpendicular to the floor.

The bone 'Arm 6' must maintain its orientation, pointing consistently in the same direction.

If I rotate the 'Arm 2' bone, I get exactly what I expected:

If I rotate also the 'Arm 1' bone, I get exactly what I expected:

But if I continue rotating the 'Arm 1' bone, at a certain point, unexpectedly, the 'Arm 5' bone rotates its vertical orientation upward.

I'm not defining an animation yet; I'm simply rotating the axes.

These are the properties of the 'Arm 5' bone in Edit Mode:

Something strange is also happening to the 'Arm 6' bone: when I apply a rotation to the same bone as before, 'Arm 6' at a certain point completes a 360° rotation!!! How crazy!

Where am I going wrong?

When you copy rotation, you're reading Euler angles. The problem: Euler angles are aliased-- there's more than one Euler angle for some orientations.

Example: XYZ Euler 180,0,0 is the same as XYZ Euler 0,180,180. I encourage you to test it out, but I pick this particular example because it can be easily visualized even without using Blender.

So when Blender copies YZ rotation from this, does it read 0,0,0 or does it read 0,180,180? It is not reasonably predicatable, and it is not continuous, and those two orientations are very, very different.

That means that copy rotation constraints with limited axes are a bad idea unless using local space, with rotations guaranteed to be in the -90,90 range. (World space in that range would be okay, but who can predict world space angle limits?)

What can you do instead? Odds are good that if you want to copy Y rotation, you want the bone to spin around to face the same direction as another bone, right? You can do that by making a marker bone parented to that other bone, perhaps in its +Z axis, and then using a locked track constraint, lock Y track Z, to point your constrained bone's Z axis at the same marker.

It's less clear exactly what you want when you want to copy YZ rotation. You've written that you want it pointed at the floor. So make an unparented bone, pointed at the floor; copy location from its pseudoparent; and then locked track (again, lock Y) a marker as above.

Copy rotation in limited axes is almost always a bad idea. (There are times that it's okay, but they should be considered "expert" applications.) Use of locked track and damped track constraints to set the orientations of bones is almost always a better idea.

• I greatly appreciate your response. As a Blender novice, it took me some time to interpret it correctly, but now, thanks to your advice, everything is working perfectly. Awesome! Thank you! Jan 18 at 8:32