There are 2 objects and an armature. The wheel uses a Transform Constraint so when I move the “Cube”, the wheel rotate but once I make a 180° turn with the cube, the rotation goes backward. I don’t understand why.
When you rotate the top bone, it starts moving back towards it’s original position. So the offset in local space is getting smaller.
The lower bone is changing it’s rotation direction. But because it’s a child of the main bone, the whole setup has turned around. That makes it look like it’s rotating the same way that it was in the initial direction.
What I don’t understand is in Local Space, the Top bone keeps moving towards its -Z axis and the rotation information of the lower bone comes from this. So there’s no reason to go backward.
I tried without an armature and it’s another behavior : the rotation goes backward only during the turn then it goes forward again (see .blend).
test_transform_rotation_driver.blend (907.1 KB)
Now i added a small expression(driver) for rotation based on whether Y rotation of Bone is zero. But i always find it confusing to transfer the data i see in view item inside the driver.
Well, the more I think about it, the more I think it’s not the good way to achieve what I want.
It could make more sense in the graph editor to understand why it doesn’t work : when the top bone rotate by 180°, the Z value doesn’t continue to increase but why it behaves another way when no armature involved ?!