What is soft constraint in box2d?

606 Views Asked by At

I am creating a mouse joint and I bump across this term, what it actually means.

documentation for mouse joint:-"A mouse joint is used to make a point on a body track a specified world point. This a soft constraint with a maximum force. * This allows the constraint to stretch and without applying huge forces."

1

There are 1 best solutions below

2
On

Let's say that we have a distance joint;

b2DistanceJointDef DistJointDef;

you can achieve a spring-like effect by tuning the frequency and damping ratios.

DistJointDef.frequencyHz = 0.5f;
DistJointDef.dampingRatio = 0.5f;

FrequencyHz will determine how much the body should stretch/shrink over time. whereas the dampingRation will determine how long the spring-like effect will last.

These principles are also applied to Mouse joints. you can modify their frequency and damping ratio to achieve a similar effect.

If I recall correctly, you can apply the soft constraints on wheel joints as well.

here is a little bit more info on the subject from Box2dManual

Softness is achieved by tuning two constants in the definition: frequency and damping ratio. Think of the frequency as the frequency of a harmonic oscillator (like a guitar string). The frequency is specified in Hertz. Typically the frequency should be less than a half the frequency of the time step. So if you are using a 60Hz time step, the frequency of the distance joint should be less than 30Hz. The reason is related to the Nyquist frequency.

The damping ratio is non-dimensional and is typically between 0 and 1, but can be larger. At 1, the damping is critical (all oscillations should vanish).