Expose the multi-point perturbation algorithm for btConvexPlaneCollisionAlgorithm

Usage:
	m_collisionConfiguration = new btDefaultCollisionConfiguration();
	m_collisionConfiguration->setPlaneConvexMultipointIterations();

It is only enabled for polyhedral convex shapes, because implicit/smooth surfaces such as spheres, cylinders, capsules and cones keep on rolling forever, due to the extra off-center contact points
This commit is contained in:
erwin.coumans
2011-09-14 20:38:33 +00:00
parent 9abcd9cf2e
commit 385933b5ed
3 changed files with 13 additions and 1 deletions

View File

@@ -296,3 +296,10 @@ void btDefaultCollisionConfiguration::setConvexConvexMultipointIterations(int nu
convexConvex->m_numPerturbationIterations = numPerturbationIterations;
convexConvex->m_minimumPointsPerturbationThreshold = minimumPointsPerturbationThreshold;
}
void btDefaultCollisionConfiguration::setPlaneConvexMultipointIterations(int numPerturbationIterations, int minimumPointsPerturbationThreshold)
{
btConvexPlaneCollisionAlgorithm::CreateFunc* planeCreateFunc = (btConvexPlaneCollisionAlgorithm::CreateFunc*)m_planeConvexCF;
planeCreateFunc->m_numPerturbationIterations = numPerturbationIterations;
planeCreateFunc->m_minimumPointsPerturbationThreshold = minimumPointsPerturbationThreshold;
}