Code: Select all
for (int i=0;i<6;i++)
{
btVector3 from((i-3)*5,1,0);
btVector3 to((i-3)*5,1,30);
m_dynamicsWorld->getDebugDrawer()->drawLine(from,to,btVector4(0,0,0,1));
btCollisionWorld::AllHitsRayResultCallback allResults(from,to);
allResults.m_flags |= btTriangleRaycastCallback::kF_KeepUnflippedNormal;
//kF_UseGjkConvexRaytest flag is now enabled by default, use the faster but more approximate algorithm
//allResults.m_flags |= btTriangleRaycastCallback::kF_UseSubSimplexConvexCastRaytest;
allResults.m_flags |= btTriangleRaycastCallback::kF_UseSubSimplexConvexCastRaytest;
allResults.m_flags &= ~btTriangleRaycastCallback::kF_FilterBackfaces;
// allResults.m_flags |= btTriangleRaycastCallback::kF_FilterBackfaces;
m_dynamicsWorld->rayTest(from,to,allResults);
for (int i=0;i<allResults.m_hitFractions.size();i++)
{
btVector3 p = from.lerp(to,allResults.m_hitFractions[i]);
m_dynamicsWorld->getDebugDrawer()->drawSphere(p,0.1,red);
m_dynamicsWorld->getDebugDrawer()->drawLine(p,p+allResults.m_hitNormalWorld[i],red);
}
}
Edit: The bug is already in the issue tracker and will be addressed at some point.
https://github.com/bulletphysics/bullet3/issues/459