Hi,
The problem of a capsule passing through a box was
already mentionned in:
http://ode.org/pipermail/ode/2007-January/021254.html
I'm getting a really similar problem and I was able to create a test case of the problem
Compile test_CapBoxCollision.cpp and test it.
You can also test with a cylinder with:
test_CapBoxCollision --cylinder
I'm having the problem when I use OPCODE and dDOUBLE.
I'm using the revision trunk-1998
The problem seem to be coming from the function dClosestLineBoxPoints.
The 2 points lret (Collision point on the line in World frame) and bret (Collision point of the box in the World frame can have a really small difference.
For example, I'm getting
lret = (0, 0, -1e-16)
bret = (0,0,0)
Since the normal returned for the contact is:
...
c->normal[2] = lret[2] - bret[2];
...
c->normal is normalized to be (0,0,-1)
The real answer should be c->normal = (0,0,1)
or to take the default value of (1,0,0)
So if you have any clue on how to solve this. I will appreciate any news from you.
Remi
test case of the collision problem between a Cap and a Box