From 62485abafe0134bf2f8685bd3d2a2057e1c61440 Mon Sep 17 00:00:00 2001 From: erwincoumans Date: Mon, 11 Jun 2018 17:32:44 -0700 Subject: [PATCH] PyBullet: disable deterministic pairs by default PyBullet: Only set static when sleeping is enables (todo: figure out issue with determinism) --- examples/Importers/ImportURDFDemo/URDF2Bullet.cpp | 14 +++++++++----- .../BroadphaseCollision/btDispatcher.h | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/examples/Importers/ImportURDFDemo/URDF2Bullet.cpp b/examples/Importers/ImportURDFDemo/URDF2Bullet.cpp index 171619666..b336659f2 100644 --- a/examples/Importers/ImportURDFDemo/URDF2Bullet.cpp +++ b/examples/Importers/ImportURDFDemo/URDF2Bullet.cpp @@ -333,11 +333,12 @@ void ConvertURDF2BulletInternal( btRigidBody* linkRigidBody = 0; btTransform inertialFrameInWorldSpace = linkTransformInWorldSpace*localInertialFrame; + bool canSleep = (flags & CUF_ENABLE_SLEEPING)!=0; if (!createMultiBody) { btRigidBody* body = creation.allocateRigidBody(urdfLinkIndex, mass, localInertiaDiagonal, inertialFrameInWorldSpace, compoundShape); - bool canSleep = (flags & CUF_ENABLE_SLEEPING)!=0; + if (!canSleep) { body->forceActivationState(DISABLE_DEACTIVATION); @@ -365,7 +366,7 @@ void ConvertURDF2BulletInternal( if (cache.m_bulletMultiBody==0) { - bool canSleep = (flags & CUF_ENABLE_SLEEPING)!=0; + bool isFixedBase = (mass==0);//todo: figure out when base is fixed int totalNumJoints = cache.m_totalNumJoints1; cache.m_bulletMultiBody = creation.allocateMultiBody(urdfLinkIndex, totalNumJoints,mass, localInertiaDiagonal, isFixedBase, canSleep); @@ -595,10 +596,13 @@ void ConvertURDF2BulletInternal( } } else { - if (cache.m_bulletMultiBody->getBaseMass()==0 && cache.m_bulletMultiBody->getNumDofs()==0) + if (canSleep) { - //col->setCollisionFlags(btCollisionObject::CF_KINEMATIC_OBJECT); - col->setCollisionFlags(btCollisionObject::CF_STATIC_OBJECT); + if (cache.m_bulletMultiBody->getBaseMass()==0 && cache.m_bulletMultiBody->getNumDofs()==0) + { + //col->setCollisionFlags(btCollisionObject::CF_KINEMATIC_OBJECT); + col->setCollisionFlags(btCollisionObject::CF_STATIC_OBJECT); + } } diff --git a/src/BulletCollision/BroadphaseCollision/btDispatcher.h b/src/BulletCollision/BroadphaseCollision/btDispatcher.h index d7a97e8e0..a0e4c1892 100644 --- a/src/BulletCollision/BroadphaseCollision/btDispatcher.h +++ b/src/BulletCollision/BroadphaseCollision/btDispatcher.h @@ -47,7 +47,7 @@ struct btDispatcherInfo m_allowedCcdPenetration(btScalar(0.04)), m_useConvexConservativeDistanceUtil(false), m_convexConservativeDistanceThreshold(0.0f), - m_deterministicOverlappingPairs(true) + m_deterministicOverlappingPairs(false) { }