Page 1 of 1

Rotational discontinuity during animated transform

Posted: Mon Feb 15, 2010 5:56 am
by triffid_hunter
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

Re: Rotational discontinuity during animated transform

Posted: Mon Feb 15, 2010 8:33 am
by triffid_hunter
triffid_hunter wrote: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?
Just tried this, exact same problem but in the other direction. Output shaft spins, other parts just wobble back and forth a bit as if output is only going +/-180 rather than continuous rotation.

Posted: Mon Feb 15, 2010 9:43 am
by triffid_hunter
this thread on blenderartists explains things for anyone else finding this, includes a kludge that seems to work.

Still no infinite rotation, but enough to run a few spins of my gearbox :)

Possilble workaround

Posted: Mon Jul 01, 2013 8:53 am
by aldoaldoz
Hi all, I'm new here, sorry if I'm going to write a well known idea, or in the wrong forum...

I started using Blender a couple of months ago to animate some gears, and got this problem with discontinuities in their motion.

I guess the problem is inside Blender rotation axis angles are always limited to a range of 0-360°, so if, for instance, I have a couple of 20 and 50 teeth gears, once the first gear passes from 359 to 360° (0°), the second one doesn't pass from 143.6° to 144°, but from 143.6° to 0°. May be a program solution could be to not limit the axis rotations to 0-360° after a transformation, but let free the angles to run outside this range.

Anyway, the workaround I found to make a complex gears model work correctly is to avoid transforms of angles-to-angles. I setup an invisibile linear slide to drive the overall model motion; then program all the needed trasnforms from THIS linear motion to all the rotation motions of the gears in the model: all the discontinuities completely disappear.