fixes in raycasting
This commit is contained in:
parent
c781a840b2
commit
8291024b99
@ -54,8 +54,11 @@ bool SubsimplexConvexCast::calcTimeOfImpact(
|
||||
//float radius = 0.01f;
|
||||
|
||||
SimdScalar lambda = 0.f;
|
||||
SimdVector3 s = rayFromLocalA.getOrigin();
|
||||
SimdVector3 r = rayToLocalA.getOrigin()-rayFromLocalA.getOrigin();
|
||||
//todo: need to verify this:
|
||||
//because of minkowski difference, we need the inverse direction
|
||||
|
||||
SimdVector3 s = -rayFromLocalA.getOrigin();
|
||||
SimdVector3 r = -(rayToLocalA.getOrigin()-rayFromLocalA.getOrigin());
|
||||
SimdVector3 x = s;
|
||||
SimdVector3 v;
|
||||
SimdVector3 arbitraryPoint = convex->LocalGetSupportingVertex(r);
|
||||
@ -120,7 +123,7 @@ bool SubsimplexConvexCast::calcTimeOfImpact(
|
||||
//int numiter = MAX_ITERATIONS - maxIter;
|
||||
// printf("number of iterations: %d", numiter);
|
||||
result.m_fraction = lambda;
|
||||
result.m_normal = -n;
|
||||
result.m_normal = n;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -508,6 +508,7 @@ bool CcdPhysicsEnvironment::proceedDeltaTime(double curTime,float timeStep)
|
||||
|
||||
|
||||
|
||||
|
||||
if (!SimdFuzzyZero(timeStep))
|
||||
{
|
||||
|
||||
@ -1300,9 +1301,9 @@ PHY_IPhysicsController* CcdPhysicsEnvironment::rayTest(PHY_IPhysicsController* i
|
||||
|
||||
ConvexShape* convexShape = (ConvexShape*) body->GetCollisionShape();
|
||||
VoronoiSimplexSolver simplexSolver;
|
||||
//SubsimplexConvexCast convexCaster(&pointShape,convexShape,&simplexSolver);
|
||||
SubsimplexConvexCast convexCaster(&pointShape,convexShape,&simplexSolver);
|
||||
//GjkConvexCast convexCaster(&pointShape,convexShape,&simplexSolver);
|
||||
ContinuousConvexCollision convexCaster(&pointShape,convexShape,&simplexSolver,0);
|
||||
//ContinuousConvexCollision convexCaster(&pointShape,convexShape,&simplexSolver,0);
|
||||
|
||||
if (convexCaster.calcTimeOfImpact(rayFromTrans,rayToTrans,body->getCenterOfMassTransform(),body->getCenterOfMassTransform(),rayResult))
|
||||
{
|
||||
|
@ -508,6 +508,7 @@ bool CcdPhysicsEnvironment::proceedDeltaTime(double curTime,float timeStep)
|
||||
|
||||
|
||||
|
||||
|
||||
if (!SimdFuzzyZero(timeStep))
|
||||
{
|
||||
|
||||
@ -1300,9 +1301,9 @@ PHY_IPhysicsController* CcdPhysicsEnvironment::rayTest(PHY_IPhysicsController* i
|
||||
|
||||
ConvexShape* convexShape = (ConvexShape*) body->GetCollisionShape();
|
||||
VoronoiSimplexSolver simplexSolver;
|
||||
//SubsimplexConvexCast convexCaster(&pointShape,convexShape,&simplexSolver);
|
||||
SubsimplexConvexCast convexCaster(&pointShape,convexShape,&simplexSolver);
|
||||
//GjkConvexCast convexCaster(&pointShape,convexShape,&simplexSolver);
|
||||
ContinuousConvexCollision convexCaster(&pointShape,convexShape,&simplexSolver,0);
|
||||
//ContinuousConvexCollision convexCaster(&pointShape,convexShape,&simplexSolver,0);
|
||||
|
||||
if (convexCaster.calcTimeOfImpact(rayFromTrans,rayToTrans,body->getCenterOfMassTransform(),body->getCenterOfMassTransform(),rayResult))
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user