From 5bd6decb2efb35d9590f378845b4e9ec5fe100a7 Mon Sep 17 00:00:00 2001 From: "erwin.coumans@gmail.com" Date: Sat, 19 Oct 2013 16:42:17 +0000 Subject: [PATCH] Use the more accurate, but slightly slower, gjk ray test by default, instead of the sub-simplex convex cast. Set the rayCallback.m_flag btTriangleRaycastCallback::kF_UseSubSimplexConvexCastRaytest to enable the previous approximate/faster ray test. --- src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp | 6 +++--- .../NarrowPhaseCollision/btRaycastCallback.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp b/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp index 60b714976..093c6f9b2 100644 --- a/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp +++ b/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp @@ -294,10 +294,10 @@ void btCollisionWorld::rayTestSingleInternal(const btTransform& rayFromTrans,con //btContinuousConvexCollision convexCaster(castShape,convexShape,&simplexSolver,0); bool condition = true; btConvexCast* convexCasterPtr = 0; - if (resultCallback.m_flags & btTriangleRaycastCallback::kF_UseGjkConvexRaytest) - convexCasterPtr = &gjkConvexCaster; - else + if (resultCallback.m_flags & btTriangleRaycastCallback::kF_UseSubSimplexConvexCastRaytest) convexCasterPtr = &subSimplexConvexCaster; + else + convexCasterPtr = &gjkConvexCaster; btConvexCast& convexCaster = *convexCasterPtr; diff --git a/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h b/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h index 6df5a4cfe..3999d4005 100644 --- a/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h +++ b/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h @@ -35,7 +35,7 @@ public: kF_None = 0, kF_FilterBackfaces = 1 << 0, kF_KeepUnflippedNormal = 1 << 1, // Prevents returned face normal getting flipped when a ray hits a back-facing triangle - kF_UseGjkConvexRaytest = 1 << 2, // Uses a more accurate but slightly slower ray versus convex algorithm + kF_UseSubSimplexConvexCastRaytest = 1 << 2, // Uses an approximate but faster ray versus convex intersection algorithm kF_Terminator = 0xFFFFFFFF }; unsigned int m_flags;