# Rig/Constrain a 3 axis Gyroscope

(ChameleonScales) #1

Hi,
I’m having trouble constraining a gyroscope in order to have this behavior :

The deal is I want to control only the external axis and let the rest be solved by the constraints. With “child of” constraints I got close to it, as you can see here (only at the begining):

In case you want to see the constraints :

The problem is I need to make the middle circle the child of both the external and internal circles, with one axis in common (Y), but when I do so, obviously everything gets messed up.

Is there any way around this ?

(jaxtraw) #2

Surely each circle needs to be the child only of the next one “out” that it is attached to, inheriting its rotation axis from it.

Bear in mind the inherent problem of gimbal lock with this system, that makes some solutions go effectively out of bounds.

(ChameleonScales) #3

I think you’re right about having only one parent for each object. But the weirdest thing is that the problem only concerns the external part, whereas the blue and red circles never detach.
By gimbal do you mean when I hit R twice ? because I get the same result when I rotate using the classic rotation manipulator.

(ChameleonScales) #4

Ok so the problem comes from Blender’s coordinate system.
Look at this :

Only with 2 axes, I used a “copy rotation” constraint :

[ATTACH=CONFIG]406425[/ATTACH]

This is the result, the 2 parts are nicely attached :

Now I rotate everything by 90° on Z and apply the rotation, Just like if I modeled the gyroscope along the Y axis instead on the X axis at the first place. Logic and math would tell me to switch the X and Y checkboxes on the constraint :

[ATTACH=CONFIG]406424[/ATTACH]

And here’s what happens :

I tried all the checkbox combinations after applying the 90° rotation and nothing works. Actually the only way to make it work is when the black joints are oriented along the X axis. How fucked up is that ?
I tried changing the rotation mode of both pieces (XYZ Euler, XZY Euler, etc…) and nohing changed.
I’m 100% sure I did it right.
So now I’m quite stuck.

Any idea ?

(ChameleonScales) #5

I feel so stupid.

If the constraint only works on X, just rotate the piece that has its joint on Z so that it goes on X, then parent it to an empty and add the constraint to the empty instead of the piece. Now everything stays attached.
As for the yellow disk staying in place, I had to uncheck the X axis box on the 2 “copy rotation” constraints and set a starting position with perpendicular axes (with the rotations applied) instead of a flat starting position which is normal because how would you expect the disk to stay in place if all the gimbals are aligned and you rotate the outer gimbal on itself ?

Problem solved. Thanks to LucasVB, the guy who created the gif for Wikipedia and jaxtraw !

Also if you don’t want to use an empty. The previous bug has been fixed. Watch this video :

(jaxtraw) #6