allowedCcdPenetration questions
Posted: Fri Oct 29, 2010 7:13 pm
A couple questions about allowedCcdPenetration.
What is the intent of allowedCcdPenetration? Is it designed to improve gjk stability, or perhaps to allow the user to ignore grazing contacts? Or am I on the wrong track here?
Also, what is the expected effect? I previously thought it was something like a backwards collision margin -- continuous sweeps would not detect hits unless body0 and body1 penetrate more than allowedCcdPenetration. However, in this situation:
- allowedCcdPenetration is the default (0.04)
- body0 and body1 are slightly penetrating (say 0.03)
- body0 performs a short (0.03) convex sweep test into body1
I expect to receive a hit at the point where body0 penetrates 0.04 units into body1; or, perhaps an hit at t=0. Instead, it seems as if all sweeps of length < 0.04 return with no result. Specifically, the check in btContinuousConvexCollision::calcTimeOfImpact examines projected velocity instead of max penetration, which seems incorrect if there is pre-existing penetration. Is this the expected/desired behavior, or a bug?
The concrete case I'm looking at is a character proxy, which can walk substantially into collision when moving slowly.
(edit: added a bit of clarification)
What is the intent of allowedCcdPenetration? Is it designed to improve gjk stability, or perhaps to allow the user to ignore grazing contacts? Or am I on the wrong track here?
Also, what is the expected effect? I previously thought it was something like a backwards collision margin -- continuous sweeps would not detect hits unless body0 and body1 penetrate more than allowedCcdPenetration. However, in this situation:
- allowedCcdPenetration is the default (0.04)
- body0 and body1 are slightly penetrating (say 0.03)
- body0 performs a short (0.03) convex sweep test into body1
I expect to receive a hit at the point where body0 penetrates 0.04 units into body1; or, perhaps an hit at t=0. Instead, it seems as if all sweeps of length < 0.04 return with no result. Specifically, the check in btContinuousConvexCollision::calcTimeOfImpact examines projected velocity instead of max penetration, which seems incorrect if there is pre-existing penetration. Is this the expected/desired behavior, or a bug?
The concrete case I'm looking at is a character proxy, which can walk substantially into collision when moving slowly.
(edit: added a bit of clarification)