use collision margin of btBvhTriangleMeshShape for convexTest.

Thanks to reltham for the contribution.
http://www.bulletphysics.com/Bullet/phpBB3/viewtopic.php?f=9&t=2121&p=8454#p8454
This commit is contained in:
erwin.coumans
2008-05-18 01:15:00 +00:00
parent 0b48b1c76b
commit 6a69fe7f3b
3 changed files with 8 additions and 5 deletions

View File

@@ -449,7 +449,7 @@ void btCollisionWorld::objectQuerySingle(const btConvexShape* castShape,const bt
BridgeTriangleConvexcastCallback(const btConvexShape* castShape, const btTransform& from,const btTransform& to, BridgeTriangleConvexcastCallback(const btConvexShape* castShape, const btTransform& from,const btTransform& to,
btCollisionWorld::ConvexResultCallback* resultCallback, btCollisionObject* collisionObject,btTriangleMeshShape* triangleMesh, const btTransform& triangleToWorld): btCollisionWorld::ConvexResultCallback* resultCallback, btCollisionObject* collisionObject,btTriangleMeshShape* triangleMesh, const btTransform& triangleToWorld):
btTriangleConvexcastCallback(castShape, from,to, triangleToWorld), btTriangleConvexcastCallback(castShape, from,to, triangleToWorld, triangleMesh->getMargin()),
m_resultCallback(resultCallback), m_resultCallback(resultCallback),
m_collisionObject(collisionObject), m_collisionObject(collisionObject),
m_triangleMesh(triangleMesh) m_triangleMesh(triangleMesh)
@@ -505,7 +505,7 @@ void btCollisionWorld::objectQuerySingle(const btConvexShape* castShape,const bt
BridgeTriangleConvexcastCallback(const btConvexShape* castShape, const btTransform& from,const btTransform& to, BridgeTriangleConvexcastCallback(const btConvexShape* castShape, const btTransform& from,const btTransform& to,
btCollisionWorld::ConvexResultCallback* resultCallback, btCollisionObject* collisionObject,btTriangleMeshShape* triangleMesh, const btTransform& triangleToWorld): btCollisionWorld::ConvexResultCallback* resultCallback, btCollisionObject* collisionObject,btTriangleMeshShape* triangleMesh, const btTransform& triangleToWorld):
btTriangleConvexcastCallback(castShape, from,to, triangleToWorld), btTriangleConvexcastCallback(castShape, from,to, triangleToWorld, triangleMesh->getMargin()),
m_resultCallback(resultCallback), m_resultCallback(resultCallback),
m_collisionObject(collisionObject), m_collisionObject(collisionObject),
m_triangleMesh(triangleMesh) m_triangleMesh(triangleMesh)

View File

@@ -105,19 +105,21 @@ void btTriangleRaycastCallback::processTriangle(btVector3* triangle,int partId,
} }
btTriangleConvexcastCallback::btTriangleConvexcastCallback (const btConvexShape* convexShape, const btTransform& convexShapeFrom, const btTransform& convexShapeTo, const btTransform& triangleToWorld) btTriangleConvexcastCallback::btTriangleConvexcastCallback (const btConvexShape* convexShape, const btTransform& convexShapeFrom, const btTransform& convexShapeTo, const btTransform& triangleToWorld, const btScalar triangleCollisionMargin)
{ {
m_convexShape = convexShape; m_convexShape = convexShape;
m_convexShapeFrom = convexShapeFrom; m_convexShapeFrom = convexShapeFrom;
m_convexShapeTo = convexShapeTo; m_convexShapeTo = convexShapeTo;
m_triangleToWorld = triangleToWorld; m_triangleToWorld = triangleToWorld;
m_hitFraction = 1.0; m_hitFraction = 1.0;
m_triangleCollisionMargin = triangleCollisionMargin;
} }
void void
btTriangleConvexcastCallback::processTriangle (btVector3* triangle, int partId, int triangleIndex) btTriangleConvexcastCallback::processTriangle (btVector3* triangle, int partId, int triangleIndex)
{ {
btTriangleShape triangleShape (triangle[0], triangle[1], triangle[2]); btTriangleShape triangleShape (triangle[0], triangle[1], triangle[2]);
triangleShape.setMargin(m_triangleCollisionMargin);
btVoronoiSimplexSolver simplexSolver; btVoronoiSimplexSolver simplexSolver;
@@ -157,4 +159,4 @@ btTriangleConvexcastCallback::processTriangle (btVector3* triangle, int partId,
} }
} }
} }
} }

View File

@@ -47,8 +47,9 @@ public:
btTransform m_convexShapeTo; btTransform m_convexShapeTo;
btTransform m_triangleToWorld; btTransform m_triangleToWorld;
btScalar m_hitFraction; btScalar m_hitFraction;
btScalar m_triangleCollisionMargin;
btTriangleConvexcastCallback (const btConvexShape* convexShape, const btTransform& convexShapeFrom, const btTransform& convexShapeTo, const btTransform& triangleToWorld); btTriangleConvexcastCallback (const btConvexShape* convexShape, const btTransform& convexShapeFrom, const btTransform& convexShapeTo, const btTransform& triangleToWorld, const btScalar triangleCollisionMargin);
virtual void processTriangle (btVector3* triangle, int partId, int triangleIndex); virtual void processTriangle (btVector3* triangle, int partId, int triangleIndex);