Rotational discontinuity during animated transform
Posted: Mon Feb 15, 2010 5:56 am
Hi, I'm trying to animate a model of a differential hypocycloid gearbox but I'm running into a problem.
As far as modelling the movement relationships, it closely resembles a wenkel rotary engine.
The model features a central shaft that rotates, an eccentric coupler, a couple of gear-like objects that attach to this eccentric coupler via a bearing, and an output cage. The gear-like objects rotate at 10% of the rate of the input shaft, and in the opposite direction.
I have the shaft rotating, and eccentric coupler moving correctly using child and transform constraints, but the gears 'jerk' when the main shaft crosses 180 degrees rotation. The discontinuity is only visible with the smaller gear in the animation, but both gears jerk as evidenced in wireframe mode by the larger gear spinning by 180 degrees between one frame and the next.
The output cage also jerks, even though it only spins at 1/90 the rate of the input shaft, and so only turns 2 degrees before the discontinuity.
To my programming mind, it seems that blender may internally convert rotations beyond +/-180 degrees to within those bounds before cascading constraints to other objects. If that is the issue, performing this conversion after cascading transformations would solve this.
In the meantime, perhaps I could animate the output cage and couple everything to that? Maybe multiplying rotation by 9 and 90 would work better than dividing by the same?
This problem is also visible when using the rotation tool, but I didn't notice until I tried to animate because my video card is nothing special and it all looked jerky anyway.
I am using blender 2.49a, and am installing 2.49b while I write this post.
edit: just tried in 2.49b, exactly the same result
As far as modelling the movement relationships, it closely resembles a wenkel rotary engine.
The model features a central shaft that rotates, an eccentric coupler, a couple of gear-like objects that attach to this eccentric coupler via a bearing, and an output cage. The gear-like objects rotate at 10% of the rate of the input shaft, and in the opposite direction.
I have the shaft rotating, and eccentric coupler moving correctly using child and transform constraints, but the gears 'jerk' when the main shaft crosses 180 degrees rotation. The discontinuity is only visible with the smaller gear in the animation, but both gears jerk as evidenced in wireframe mode by the larger gear spinning by 180 degrees between one frame and the next.
The output cage also jerks, even though it only spins at 1/90 the rate of the input shaft, and so only turns 2 degrees before the discontinuity.
To my programming mind, it seems that blender may internally convert rotations beyond +/-180 degrees to within those bounds before cascading constraints to other objects. If that is the issue, performing this conversion after cascading transformations would solve this.
In the meantime, perhaps I could animate the output cage and couple everything to that? Maybe multiplying rotation by 9 and 90 would work better than dividing by the same?
This problem is also visible when using the rotation tool, but I didn't notice until I tried to animate because my video card is nothing special and it all looked jerky anyway.
I am using blender 2.49a, and am installing 2.49b while I write this post.
edit: just tried in 2.49b, exactly the same result