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:
@@ -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)
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user