Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--extern/bullet/Bullet/NarrowPhaseCollision/SubSimplexConvexCast.cpp9
-rw-r--r--extern/bullet/Extras/PhysicsInterface/CcdPhysics/CcdPhysicsEnvironment.cpp5
-rw-r--r--source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp5
3 files changed, 12 insertions, 7 deletions
diff --git a/extern/bullet/Bullet/NarrowPhaseCollision/SubSimplexConvexCast.cpp b/extern/bullet/Bullet/NarrowPhaseCollision/SubSimplexConvexCast.cpp
index a71272552da..019b4c3bfcb 100644
--- a/extern/bullet/Bullet/NarrowPhaseCollision/SubSimplexConvexCast.cpp
+++ b/extern/bullet/Bullet/NarrowPhaseCollision/SubSimplexConvexCast.cpp
@@ -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;
}
diff --git a/extern/bullet/Extras/PhysicsInterface/CcdPhysics/CcdPhysicsEnvironment.cpp b/extern/bullet/Extras/PhysicsInterface/CcdPhysics/CcdPhysicsEnvironment.cpp
index 4359eeffffe..fd4bca40e7f 100644
--- a/extern/bullet/Extras/PhysicsInterface/CcdPhysics/CcdPhysicsEnvironment.cpp
+++ b/extern/bullet/Extras/PhysicsInterface/CcdPhysics/CcdPhysicsEnvironment.cpp
@@ -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))
{
diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
index 4359eeffffe..fd4bca40e7f 100644
--- a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
+++ b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
@@ -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))
{