How can I change the centre of rotation of objects during an animation? I have developed several puzzles in Blender, and to test them I wanted to animate them.   The first problem I encountered was the rotation of an object around a central hub.   Between keyframes the object would cut across rather than follow the circular path.   To solve this I moved the origins to the centre of rotation, and that worked fine.   The next problem was to move the rotation of one or more of the objects to another hub.   This is where it gets a bit tricky!   It's not practical to have to keep changing individual origins for every keyframe.   I've tried parenting to the hubs but this doesn't make it any easier.   Perhaps there is a way with armatures?   Maybe I've missed something very basic.

I made a small demo to illustrate the kind of rotation I mean:


Keyframe 1.


Keyframe 2.


Keyframe 3.

At this stage there are three answers to my question, and all of them require constraint influences to be turned on or off for each object that needs to change its centre of rotation. Multiply this several times and it becomes a bit of a nightmare!

I'm thinking that to position the 3d cursor at the centre of the wheel and then select all the objects required to turn for each rotation might be easier than the answers so far, but I was hoping for something more straight forward than that.

Don't get me wrong, I do appreciate the effort you guys have put in so far, thanks. :)
Add multiple Child Of constraints and animate their influences as desired. But for the example usage above that's not required, merely disable the unwanted Location and Rotation transforms as shown: