This sounds like it should be simple but I've googled and looked through SE questions but can't find a good solution to the following problem. I have a shaft with a keyseat machined into it, a key and a geometrically correct involute gear. I want this as true to life as I can, I want the shaft to rotate the key which then transmits its power to the gear using physics. After about four rotations, it looks as though the gear has rotated a little more than the shaft. If anything I would have expected the opposite. This is what I have:

1) a cylindrical shaft with a square keyseat (using a rectangular prism/boolen subtraction)

2) a key in the keyseat (just a rectangular prism parented to the shaft)

3) a complex geometrically correct involute gear (constructed using an XYZ surface to calculate the gear faces consisting of about 3000 vertices - the least number I could make it).

4) the gear and the shaft have rigid body collision settings set to shape:mesh, source:base, friction:1.000, margin: 0.040. It has rigid body dynamics set to damping translation: 1.000, damping rotation:0.000

5) the shaft has the same settings except for surface response(friction):1.000

I have tried changing the rotation and damping and found that if I turn on collision margin it makes things a lot worse. Could anyone help point me in the right direction please?

enter image description here

  • $\begingroup$ My guess is the general problem here is the physics system hasn't really been made for this sort of precision and this kind of mechanical simulation, or geometric interaction. It most likely lacks the mathematical precision and computational accuracy for this to work reliably. It is not really my area of expertise, but this would probably be best approached with constraints and/or drivers to animate it properly. $\endgroup$ – Duarte Farrajota Ramos Feb 14 '17 at 2:11
  • $\begingroup$ is there any reason you need to use a rigid body sim for this? $\endgroup$ – David Feb 14 '17 at 2:27
  • $\begingroup$ I don't know any better yet. My main motivation was simply to see what would happen. I'm a beginner at blender but have a technical/mechanical background. I want to do 'real world' simulations. I'm retired now and Blender is really good and is free. Other packages would be a big hit on my budget. $\endgroup$ – BlackBooks Feb 14 '17 at 2:44
  • $\begingroup$ Well you may want to look into constrains and drivers then, it might be a lot more suited for this sort of mechanical animation and may yield a lot more accurate 'real world' results with less computer strain $\endgroup$ – Duarte Farrajota Ramos Feb 14 '17 at 2:52

The Rigid Body World default values are OK for crude approximations of physics without much computational overhead but can be tweaked to produce more accuracy. In particular, try adjusting the following settings :

rigid world settings

Increasing Steps Per Second should give a better simulation as each simulated step will be smaller and so more accurate. Similarly, increasing the number of Iterations gives it more chance to settle on a stable solution. Enabling Split Impulse should stop objects bouncing apart at unexpected velocities if/when the simulation results in them overlapping.

Try significantly increasing the number of Steps and Iterations and see if that improves your simulation and also try with Split Impulse enabled and disabled. Once you've got acceptable results you can try gradually reducing them to get a good balance between realism and efficiency.

  • $\begingroup$ Thanks Rich. I tried just enabling Split Impulse however it slipped further and more quickly, seemingly at a faster rate. With Split Impulse disabled I then tried increasing the steps per second from 60 to 100 and then to 150. At first I thought it had worked but discovered that the slipping still occurred but after many more rotations. I increased the solver iterations and the bodies went flying away, with Split Impulse enabled or not. I'll keep trying different combinations. $\endgroup$ – BlackBooks Feb 14 '17 at 10:27
  • 1
    $\begingroup$ I've found that simply increasing the Steps per Second to 200, leaving solver iterations at 10 and leaving Split Impulse disabled gives me about 1600 frames @ 24 fps of rotation without the gear slipping - so about a minute of simulation. Good enough for now - so thanks for the advice. I'll eventually learn more and get it right. $\endgroup$ – BlackBooks Feb 14 '17 at 11:16
  • $\begingroup$ Excellent - glad to hear it's working. The ideal Steps per Second will also depend on how fast it's turning and how closely meshed the cogs are. Always best to go higher if you can afford the extra processing time for the extra steps. Also, once you've got the animation how you want it you can always bake it so that it doesn't have to recalculate each time. $\endgroup$ – Rich Sedman Feb 14 '17 at 13:25

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.