How to animate armature bones on world axes?

Hi, up until now I was always animating mechanical stuff using parented object hierarchies. it was very simple and reliable. But now I am trying to do it using bones, because it allows me to keep the entire thing as a single mesh object which is more friendly for game export.

However, I can’t figure out how to rotate bones along world axes:

It seems much more complicated than just object based animation.

This is the desired result which was animated by a simple parented object hierarchy:

Simply setting the transform orientation mode for tools will not work…

…as it just sets the transform mode of the rotate tool, not the actual transform of the bone. If I rotate around world Z axis, I get rotation in all 3 axis channels:

That is unfortunately incompatible with the workflow, since the workflow is based on modifier animation. It’s not done by keyframes, but by combination of noise and limit modifier on a single axis.

So it’s not possible to coordinate these procedural modifiers on all 3 axes to add up to correct rotation on a world axis, and even if it was, the changes would be pain, having to keep modifier changes to all 3 individual axes in sync.

Anyone got any idea how to deal with this?

Thanks in advance.

Okay, I found a solution:

I completely forgot that bone hierarchy does not mean bones have to be connected. You can have unconnected bones still parented to each other. That means I can have proper bone orientations aligned with the mechanical piece orientations, not tilted.

There’s an operator to disconnect the bone but keep it parented: