I have two meshes of helical gears.

I tried to simulate their motion using rigid body physics. Both gears have hinges connected to a static mesh, and one of them has a motor.

When I press play, the gears just seem to jam and glitch into each other:

enter image description here

There is a wide margin between the gear teeth:

enter image description here

Very similar gears with the same mechanics but straighter teeth work just fine as a rigid body simulation:

enter image description here

The helical gears are able to move just fine when they are separated, so I assume I have set up the rigid body constraints sensibly:

enter image description here

(The rear one has a hinge and a motor. The foreground one has only a hinge, but is able to interact correctly and spin when receiving an impulse from a colliding cube.)

The collision type on all gear is set to 'MESH'. The collision margin is 0.0, but increasing it (within the available space) does not seem to help. The teeth look quite thin, but thicker teeth (with the same clearance as in the working example) didn't work either, and in any case these thin teeth are able to interact with the falling cube above.

Increasing the simulation's substeps and iterations and decreasing its speed doesn't seem to help. In fact, by drastically increasing the substeps and iterations to 60 and decreasing the speed by 1000X to 0.001, I can see that the gears invariably end up with their teeth aligned and clipped into each other after just one or two frames:

enter image description here

The meshs are all fully manifold, and the normals are all facing outward.

Why is this not working?

  • $\begingroup$ Preemptively just in case, as I'm going to bed: This is not a duplicate of blender.stackexchange.com/questions/108829/…, as the problem there was inverted normals, which are not the case in my scene. $\endgroup$ – Will Chen Mar 19 at 2:26
  • $\begingroup$ Also: I'm aware of and have systems for simulating gear motion using scripted expressions, but my goal here is to be able to use the rigid body physics system to validate the results of those simulations. $\endgroup$ – Will Chen Mar 19 at 2:28

I don't have the technical knowledge to explain why, but the Bullet physics library seems to like denser meshes.

not working

Subdividing the tooth surfaces 4 times (equivalent to 15 cuts) made these gears work.


  • 1
    $\begingroup$ I did notice that because the twisted quadrilaterals on these gears aren't planar, the triangulated collision mesh would actually be quite bumpy. IDK how exactly that would lead to such strong phantom forces, but subdividing the mesh does reduce the size of those triangular facets. I wonder if a retopo with completely planar faces would also work. $\endgroup$ – Will Chen Mar 19 at 5:58
  • $\begingroup$ I don't believe that there is a way to mesh this type of surface with perfectly flat quads, but you may be able to reduce the poly count by only subdividing in one direction or by using some other topology altogether. $\endgroup$ – HISEROD Mar 19 at 6:17
  • $\begingroup$ I'm pretty sure you could align the quads diagonally, maybe with one triangle at each corner. Actually, I think the "Unsubdivide" mode on the "Decimate" modifier will actually produce that kind of topology in some (odd-edged) cases. Anyway, after a couple tests, the threshold for the simulation to be stable seems to be that the twist angle between adjacent profile edge loops should be around or less than 1°. It probably varies with the amount of twisting, and thus with the gear's parameters, but this worked in all the cases where I've tested it. $\endgroup$ – Will Chen Mar 19 at 13:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.