Dynamic/Kinematic Collision Jitter on PhysX 3.3.1 Win 64-bit (SOLVED)

I am having collision jitter as represented in this video. And captured in this PVD.

I’m afraid some of this may have to do with a kinematic actor pulling on a dynamic actor. The reason I’m doing this is that I don’t want the actor to be affected by what he is pulling. I still want the actor to respond only to player input and not be tossed around.

In my scene are a number of rigid dynamic boxes floating in zero gravity. My main actor is a rigid kinematic sphere with a rope attached to a rigid dynamic box. The rope is made of a series of rigid dynamic boxes with spherical joints.

Things that I’ve tried are:

  • Adjusting PxTolerancesScale. My scene is in meters, but my object masses average 20 for a length^3 volume. I'm using (length = 1, mass = 20, speed = 10). My playing with these hasn't produced a measurable difference.
  • Adjusting SolverIterationCounts for the boxes. The video shown is at (10,10) (position iterations,velocity iterations) although the default of (4,1) produces the same results.

The rope links where the sphere joints are connected have a mass of 1. The joints themselves use the PxConstraintFlag::ePROJECTION flag with setProjectionLinearTolerance of 0.9f. To increase rope stability, I am reducing tethered object masses to 2.

I am looking for solutions that will reduce the jitter of collisions while allowing for a similar setup (kinematic actor pulling objects). Advice welcome, hopefully I’ve included the necessary details.

I’ve changed my main simulation loop and added substepping. It has helped but hasn’t eliminated the issue.

Have you looked at the moment of inertia values? Reducing the difference in masses will help stability but that it is only half the problem.

Well chosen moments of inertia will definitely help stability. Reducing the ratio of inertia components will help too.



Hmm, no, thanks for mentioning this.

I was noticing that the moment of inertia is very low on my objects as it takes hardly any torque to create very fast angular acceleration. Looking through the docs again, I see reference to PxRigidBodyExt::updateMassAndInertia(), looks like this helper is the ticket :)

After testing, I can confirm that this has eliminated my jitters.