SoftJointLimit -> define "soft" and other ambiguities...

I'm trying to wrap my head around some terminology and functionality little by little.

Sometimes, the documentation is a little ambiguous, forcing me to experiment with values to understand certain properties and vars related to the physics system. But, often, observation doesn't make the connection.

So! With SoftJointLimit, what exactly does "soft" mean?

For instance,

"spring : If greater than zero, the limit is soft. The spring will pull the joint back."

What is a 'soft' limit? Does the second sentence here rely on spring being greater than zero? (That is, will the spring NOT pull back if spring is zero?)

I think just a few more sentences on each of these variables would help me (and hopefully others) understand how to better control the physics.

Ultimately, a reply that describes a case scenario incorporating each of the four variables from SoftJointLimit and how changing them effects its behavior would be swell!

PS - I am fully aware that some of these terms are probably perfectly obvious to programmers with a computer science background... of which, I am not :-P So, hold my hand, please :-D

A hard limit is one that cannot be exceeded without a break occurring. Picture the way a person's arm bends at the elbow. Once the arm is straight, it can't go any farther.

A soft limit is one that can be exceeded, but where resistance will increase if the limit is exceeded. Kind of like the way a person's wrist acts if you try to bend it back. There isn't a hard limit like there is with the elbow. Instead, resistance increases the farther you pull it back. If you let it go, it will "spring" back into a more neutral position.