CylindricalConstraints stop updating physics for some time after reaching their minimum slider distance

I have a vehicle chassis that uses cylindrical constraints and springconstraints for suspension. And whenever there’s a fast bump that causes the wheel to retract to the minimum position, the wheel will stay retracted long after the force that caused the wheel to go up has gone away. And this does not happen when the wheel only retracts half the distance for example.

From my experience the CurrentPosition property of the CylindricalConstraint is always under 0.05 when this happens. The time it takes for the CylindricalConstraint to go back varies, it usually requires some other type of bump for it to start updating it again. And it doesn’t always get stuck but will always cause the suspension to look unnatural by sort of snapping in and out of the top position.

This has been happening for as long as I have been using constraints. But it has gotten harder to get around after the PGS engine was updated, since a workaround I have been doing by adjusting the MinLength of the SpringConstraint to force-update is no longer as reliable. (but not saying that needs to work well again)

Here’s a video showing how the suspension acts normally vs when one of the wheels reach the top position:

1 Like

0.05 is the margin of error for min/max positions on cylindrical/prismatic constraints (and for collisions and other positional limits)

How long is your SpringConstraint when the cylindrical is at its minimum? It’s possible the spring length is close to 0 or it gets inverted. So taking into account the error margin, you want the minimum position on the cylindrical to be larger than 0.05 to be safe.

The SpringConstraint also lies around 0.05 when the cylindrical is at minimum. I have tried increasing the MinLength of the spring to prevent it from retracting too far but that never worked, setting the MinLength too high just lead to the wheel never going back if it got stuck like in the video but didn’t prevent it from getting there in the first place.

It did seem to work to adjust the cylindrical so that the limit is further away from 0 as you said. Before the UpperLimit was set to (SuspensionLength + 0.1), and the LowerLimit at 0.1. And now I changed it to (SuspensionLength + 0.5), and the LowerLimit at 0.5 which seems to have stopped it from happening from the testing I have done so far.


Yes this should stop it from locking. Sizes in 0.1 ranges are just too low and system will fail because of the margins of errors.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.