Hey, thanks for the reply.
The large box is 10mx10mx10m and the smaller one is 1mx1mx1m so I thought that would be within the scale that bullet supports. I have tried shrinking everything and making it bigger as well and the same thing happens.
As for the time step i'm currently calling stepSimulation( time_elapsed ) but I have tried many different things and it doesn't seem to affect the problem.
I think you are right about the float failure though, I have found what might be causing the issue.
The following block of code exists inside btPersistentManifold.cpp around line 280
Code: Select all
projectedPoint = manifoldPoint.m_positionWorldOnA - manifoldPoint.m_normalWorldOnB * manifoldPoint.m_distance1;
projectedDifference = manifoldPoint.m_positionWorldOnB - projectedPoint;
distance2d = projectedDifference.dot(projectedDifference);
if (distance2d > getContactBreakingThreshold()*getContactBreakingThreshold() )
{
removeContactPoint(i);
}
It seems that the distance2d value is greater than the contact breaking threshold squared so the contact point gets removed and the collision doesnt get a response generated.
In a debug build the distance2d value is around 0.0005 and below range where the threshold squared is calculated to be 0.0012 however in a release build after the box does its first bound the distance2d value goes up to 0.096.
I'm not that familiar with Bullet so i'm currently digging around the source to see what's going on.
The frustrating thing is that this used to work for me fine but I went away on holiday for 3 weeks and then I came back it was broken. I haven't changed any of the settings within Bullet.