+4 votes

I am trying to make something akin to Besiege, the physics sandbox vehicle designer game.

Instead of using cubes, I want to use free-form 3d shapes, and have them be individual rigid bodies connected by joints. The trouble is, I cant figure out how to stiffen the joint enough that it doesn't do this:

https://www.dropbox.com/s/5htlh1ewa8rs538/squishy%20joints.mov?dl=0

I've tried using each of the types of joints, and in the video am using a Generic6DOFJoint.

I've tried maxing and mining the values for restitution, softness and damping (which I don't really understand) and results vary from the squishiness above to the objects leaping miles offscreen.

Does anyone know how to configure one of the joints to just attach two rigidbodies, with a minimum of jiggling? Or, even better, does anyone have a link to somewhere the describes how joints work, what the various values mean to their behavior etc? The best I've found is this:
https://github.com/godotengine/godot/commit/f8c7d32987c91026174e01fa8ea28ec064ef7e22

Many thanks!

in Engine by (103 points)

1 Answer

+5 votes
Best answer

Answering my own question (partially), switching to the Hinge Joint produces good enough results.

The following joint setup seems to lock two rigid-bodies together quite well:
HingeJoint: - bias: 0.99 - enable: on - upper: 0 - lower: 0 - bias: 0.99 - softness: 0.9 - relaxation: 1

The new problem now is how to handle the jiggling feedback effect that propagates back and forth through long chains. Probably some reduction of the above effects - adjusting the linear and angular damp on the rigid bodies high enough also helps.

by (103 points)
Welcome to Godot Engine Q&A, where you can ask questions and receive answers from other members of the community.

Please make sure to read Frequently asked questions and How to use this Q&A? before posting your first questions.
Social login is currently unavailable. If you've previously logged in with a Facebook or GitHub account, use the I forgot my password link in the login box to set a password for your account. If you still can't access your account, send an email to [email protected] with your username.