Skip to content

No contact generation between convex hull and triangle mesh at certain angles #476

Description

@alektron

Library and Version

PhysX v5.6.1 and older

Operating System

Windows 10/11

Description

When colliding a dynamic convex hull body with a static triangle mesh body at a very specific angle, no contacts get generated
and the convex hull passes through the triangle mesh.

It happens only with very specific transforms. The following code snippet can reliably reproduce the bug.
(A large portion of the snippet is just vertex data, posted separately below, for better readability. The code itself is very straighforward).

#include "PxPhysicsAPI.h"

using namespace physx;

///**************************
/// INSERT VERTEX ARRAYS HERE (Posted in separate code snippet below for better readability)
///**************************

static PxFilterFlags SimulationFilterShader(
  PxFilterObjectAttributes attributes0, PxFilterData filterData0,
  PxFilterObjectAttributes attributes1, PxFilterData filterData1,
  PxPairFlags& pairFlags, const void*, PxU32)
{
  pairFlags |= PxPairFlag::eSOLVE_CONTACT;
  pairFlags |= PxPairFlag::eDETECT_DISCRETE_CONTACT;
  return PxFilterFlag::eDEFAULT;
}

static float Radians(float deg) { return deg * (physx::PxPi / 180.f); }

int main()
{
  //Regular PhysX initialization
  physx::PxDefaultAllocator m_PxDefaultAlloc;
  physx::PxDefaultErrorCallback m_PxErr;
  auto m_PxFoundation = PxCreateFoundation(PX_PHYSICS_VERSION, m_PxDefaultAlloc, m_PxErr);

  auto m_Pvd = PxCreatePvd(*m_PxFoundation);
  PxPvdTransport* transport = PxDefaultPvdSocketTransportCreate("127.0.0.1", 5425, 10);
  m_Pvd->connect(*transport,PxPvdInstrumentationFlag::eDEBUG);

  auto m_Physics = PxCreatePhysics(PX_PHYSICS_VERSION, *m_PxFoundation, PxTolerancesScale(), false, m_Pvd);
  PxInitExtensions(*m_Physics, m_Pvd);

  auto pxBodyMaterial = m_Physics->createMaterial(.2f, .2f, 0.0f);

  PxSceneDesc sceneDesc = PxSceneDesc(m_Physics->getTolerancesScale());
  sceneDesc.gravity = PxVec3(0.0f, -9.81f, 0.0f);
  sceneDesc.cpuDispatcher = physx::PxDefaultCpuDispatcherCreate(1);
  sceneDesc.filterShader = SimulationFilterShader;

  auto m_PxScene = m_Physics->createScene(sceneDesc);

  m_PxScene->getScenePvdClient()->setScenePvdFlag(PxPvdSceneFlag::eTRANSMIT_CONTACTS, true);
  m_PxScene->setVisualizationParameter(PxVisualizationParameter::eCONTACT_FORCE , 1.0f);
  m_PxScene->setVisualizationParameter(PxVisualizationParameter::eCONTACT_NORMAL, 1.0f);
  m_PxScene->setVisualizationParameter(PxVisualizationParameter::eCONTACT_POINT , 1.0f);

  //Vertex welding can be enabled or disabled, does not affect the bug
  auto params = PxCookingParams(PxTolerancesScale());
  //params.meshPreprocessParams |= PxMeshPreprocessingFlag::eWELD_VERTICES;
  params.meshWeldTolerance = 0.05f;
  params.suppressTriangleMeshRemapTable = true;
  params.scale = m_Physics->getTolerancesScale();

  //Create static triangle rigid body
  {
    PxTriangleMeshDesc meshDesc;
    meshDesc.points.count  = sizeof(BLOCK_VERTICES) / sizeof(BLOCK_VERTICES[0]);
    meshDesc.points.stride = sizeof(PxVec3);
    meshDesc.points.data = BLOCK_VERTICES;

    PxTriangleMeshGeometry triangleGeo(PxCreateTriangleMesh(params, meshDesc, m_Physics->getPhysicsInsertionCallback()));

    auto triangleActor = m_Physics->createRigidStatic(PxTransform(PxVec3(0, 0, 0)));
    triangleActor->attachShape(*m_Physics->createShape(triangleGeo, *pxBodyMaterial));
    m_PxScene->addActor(*triangleActor);
  }

  //Create dynamic convex hull rigid body
  {
    PxConvexMeshDesc meshDesc;
    meshDesc.points.count  = sizeof(STICK_VERTICES) / sizeof(STICK_VERTICES[0]);
    meshDesc.points.stride = sizeof(PxVec3);
    meshDesc.points.data   = STICK_VERTICES;
    meshDesc.flags |= PxConvexFlag::eCOMPUTE_CONVEX;

    PxConvexMeshGeometry convexGeo(PxCreateConvexMesh(params, meshDesc, m_Physics->getPhysicsInsertionCallback()));

    auto dyn = m_Physics->createRigidDynamic(PxTransform(PxVec3(0, 0, 0)));
    dyn->attachShape(*m_Physics->createShape(convexGeo, *pxBodyMaterial));
    PxRigidBodyExt::setMassAndUpdateInertia(*dyn, 5);
    m_PxScene->addActor(*dyn);

    PxTransform t;
    t.q = PxQuat(0.0245738328f, -0.405561209f, 0.792972624f, -0.453994036f);

    //Using this position produces the bug
    t.p = PxVec3(0.0250501633f, 1.50000012f, 0.0103675127f);

    //Using this position generates contacts correctly (to make sure that the general setup is correct. Inertia seems to be off but that should not affect contact gen.)
    //t.p = PxVec3(0.0250501633f, 1.50000012f, -0.5103675127f);
    dyn->setGlobalPose(t);
  }

  for (size_t i = 0; i < 200; i++) {
    m_PxScene->simulate(0.016f);
    m_PxScene->fetchResults(true);
  }
}
//Vertices for static triangle mesh
PxVec3 BLOCK_VERTICES[] = {
{ 1.000000f, -1.000000f, -2.000000f },
{ 1.000000f, -1.000000f, 0.000000f },
{ -1.000000f, -1.000000f, 0.000000f },
{ -1.000000f, 1.000000f, -2.000000f },
{ 1.000000f, 1.000000f, -2.000000f },
{ 1.000000f, -1.000000f, -2.000000f },
{ 1.000000f, 1.000000f, -2.000000f },
{ 1.000000f, 1.000000f, 0.000000f },
{ 1.000000f, -1.000000f, 0.000000f },
{ -1.000000f, 1.000000f, -2.000000f },
{ -1.000000f, 1.000000f, 0.000000f },
{ 1.000000f, 1.000000f, 0.000000f },
{ 1.000000f, 1.000000f, 0.000000f },
{ -1.000000f, 1.000000f, 0.000000f },
{ -1.000000f, -1.000000f, 0.000000f },
{ -1.000000f, -1.000000f, 0.000000f },
{ -1.000000f, 1.000000f, 0.000000f },
{ -1.000000f, 1.000000f, -2.000000f },
{ -1.000000f, -1.000000f, 0.000000f },
{ -1.000000f, 1.000000f, -2.000000f },
{ -1.000000f, -1.000000f, -2.000000f },
{ -1.000000f, 1.000000f, -2.000000f },
{ 1.000000f, -1.000000f, -2.000000f },
{ -1.000000f, -1.000000f, -2.000000f },
{ 1.000000f, 1.000000f, -2.000000f },
{ 1.000000f, -1.000000f, 0.000000f },
{ 1.000000f, -1.000000f, -2.000000f },
{ 1.000000f, 1.000000f, 0.000000f },
{ -1.000000f, -1.000000f, 0.000000f },
{ 1.000000f, -1.000000f, 0.000000f },
{ 1.000000f, -1.000000f, -2.000000f },
{ -1.000000f, -1.000000f, 0.000000f },
{ -1.000000f, -1.000000f, -2.000000f },
{ -1.000000f, 1.000000f, -2.000000f },
{ 1.000000f, 1.000000f, 0.000000f },
{ 1.000000f, 1.000000f, -2.000000f },

};

//Vertices for dynamic convex hull
PxVec3 STICK_VERTICES[] = {
{ -0.000000f, 0.014162f, -0.875579f },
{ -0.010471f, 0.010471f, -0.057488f },
{ -0.000000f, 0.014162f, -0.057488f },
{ -0.014162f, -0.000000f, -0.875579f },
{ -0.010471f, -0.010471f, -0.057488f },
{ -0.014162f, -0.000000f, -0.057488f },
{ -0.000000f, -0.014162f, -0.875579f },
{ 0.010471f, -0.010471f, -0.057488f },
{ -0.000000f, -0.014162f, -0.057488f },
{ 0.014162f, 0.000000f, -0.875579f },
{ 0.010471f, 0.010471f, -0.057488f },
{ 0.014162f, 0.000000f, -0.057488f },
{ 0.000000f, 0.000000f, 0.163186f },
{ 0.010471f, -0.010471f, 0.163186f },
{ 0.014162f, 0.000000f, 0.163186f },
{ -0.000000f, 0.000000f, -0.875579f },
{ 0.010471f, 0.010471f, -0.875579f },
{ 0.014162f, 0.000000f, -0.875579f },
{ -0.010471f, 0.010471f, -0.875579f },
{ -0.000000f, 0.000000f, -0.875579f },
{ -0.014162f, -0.000000f, -0.875579f },
{ -0.010471f, -0.010471f, 0.163186f },
{ 0.000000f, 0.000000f, 0.163186f },
{ -0.014162f, -0.000000f, 0.163186f },
{ -0.010471f, -0.010471f, -0.875579f },
{ -0.000000f, -0.014162f, -0.057488f },
{ -0.010471f, -0.010471f, -0.057488f },
{ 0.010471f, 0.010471f, -0.875579f },
{ -0.000000f, 0.014162f, -0.057488f },
{ 0.010471f, 0.010471f, -0.057488f },
{ -0.010471f, 0.010471f, 0.163186f },
{ 0.000000f, 0.000000f, 0.163186f },
{ -0.000000f, 0.014162f, 0.163186f },
{ -0.010471f, -0.010471f, -0.875579f },
{ -0.000000f, 0.000000f, -0.875579f },
{ -0.000000f, -0.014162f, -0.875579f },
{ -0.000000f, 0.000000f, -0.875579f },
{ 0.010471f, -0.010471f, -0.875579f },
{ -0.000000f, -0.014162f, -0.875579f },
{ 0.000000f, 0.000000f, 0.163186f },
{ 0.010471f, 0.010471f, 0.163186f },
{ -0.000000f, 0.014162f, 0.163186f },
{ 0.010471f, -0.010471f, -0.875579f },
{ 0.014162f, 0.000000f, -0.057488f },
{ 0.010471f, -0.010471f, -0.057488f },
{ -0.010471f, 0.010471f, -0.875579f },
{ -0.014162f, -0.000000f, -0.057488f },
{ -0.010471f, 0.010471f, -0.057488f },
{ -0.010471f, 0.010471f, 0.055888f },
{ -0.014162f, -0.000000f, 0.163186f },
{ -0.010471f, 0.010471f, 0.163186f },
{ 0.010471f, 0.010471f, 0.055888f },
{ -0.000000f, 0.019385f, 0.050058f },
{ -0.000000f, 0.014162f, 0.055888f },
{ 0.010471f, -0.010471f, 0.055888f },
{ 0.014162f, 0.000000f, 0.163186f },
{ 0.010471f, -0.010471f, 0.163186f },
{ 0.010471f, -0.010471f, -0.057488f },
{ -0.000000f, -0.019385f, -0.051658f },
{ -0.000000f, -0.014162f, -0.057488f },
{ 0.010471f, 0.010471f, 0.163186f },
{ -0.000000f, 0.014162f, 0.055888f },
{ -0.000000f, 0.014162f, 0.163186f },
{ 0.010471f, -0.010471f, -0.057488f },
{ 0.019385f, 0.000000f, -0.051658f },
{ 0.014332f, -0.014333f, -0.051658f },
{ -0.010471f, -0.010471f, 0.055888f },
{ 0.000000f, -0.014162f, 0.163186f },
{ -0.010471f, -0.010471f, 0.163186f },
{ 0.010471f, -0.010471f, 0.055888f },
{ -0.000000f, -0.019385f, 0.050058f },
{ 0.014333f, -0.014333f, 0.050058f },
{ 0.014162f, 0.000000f, 0.055888f },
{ 0.010471f, 0.010471f, 0.163186f },
{ 0.014162f, 0.000000f, 0.163186f },
{ 0.010471f, -0.010471f, 0.055888f },
{ 0.019385f, 0.000000f, 0.050058f },
{ 0.014162f, 0.000000f, 0.055888f },
{ 0.000000f, -0.014162f, 0.163186f },
{ 0.010471f, -0.010471f, 0.055888f },
{ 0.010471f, -0.010471f, 0.163186f },
{ 0.010471f, 0.010471f, -0.057488f },
{ 0.019385f, 0.000000f, -0.051658f },
{ 0.014162f, 0.000000f, -0.057488f },
{ -0.014162f, -0.000000f, 0.163186f },
{ -0.010471f, -0.010471f, 0.055888f },
{ -0.010471f, -0.010471f, 0.163186f },
{ -0.010471f, 0.010471f, -0.057488f },
{ -0.019385f, -0.000000f, -0.051658f },
{ -0.014333f, 0.014333f, -0.051658f },
{ -0.000000f, 0.014162f, 0.055888f },
{ -0.010471f, 0.010471f, 0.163186f },
{ -0.000000f, 0.014162f, 0.163186f },
{ 0.010471f, 0.010471f, 0.055888f },
{ 0.019385f, 0.000000f, 0.050058f },
{ 0.014333f, 0.014333f, 0.050058f },
{ -0.014333f, 0.014333f, -0.051658f },
{ -0.019385f, -0.000000f, 0.050058f },
{ -0.014333f, 0.014333f, 0.050058f },
{ 0.014333f, -0.014333f, 0.050058f },
{ 0.019385f, 0.000000f, -0.051658f },
{ 0.019385f, 0.000000f, 0.050058f },
{ 0.014332f, 0.014333f, -0.051658f },
{ -0.000000f, 0.019385f, 0.050058f },
{ 0.014333f, 0.014333f, 0.050058f },
{ -0.014333f, -0.014333f, 0.050058f },
{ -0.000000f, -0.019385f, -0.051658f },
{ -0.000000f, -0.019385f, 0.050058f },
{ 0.019385f, 0.000000f, -0.051658f },
{ 0.014333f, 0.014333f, 0.050058f },
{ 0.019385f, 0.000000f, 0.050058f },
{ -0.000000f, -0.019385f, 0.050058f },
{ 0.014332f, -0.014333f, -0.051658f },
{ 0.014333f, -0.014333f, 0.050058f },
{ -0.019385f, -0.000000f, -0.051658f },
{ -0.014333f, -0.014333f, 0.050058f },
{ -0.019385f, -0.000000f, 0.050058f },
{ -0.000000f, 0.019385f, -0.051658f },
{ -0.014333f, 0.014333f, 0.050058f },
{ -0.000000f, 0.019385f, 0.050058f },
{ -0.010471f, -0.010471f, 0.055888f },
{ -0.019385f, -0.000000f, 0.050058f },
{ -0.014333f, -0.014333f, 0.050058f },
{ 0.010471f, 0.010471f, -0.057488f },
{ -0.000000f, 0.019385f, -0.051658f },
{ 0.014332f, 0.014333f, -0.051658f },
{ -0.010471f, -0.010471f, -0.057488f },
{ -0.019385f, -0.000000f, -0.051658f },
{ -0.014162f, -0.000000f, -0.057488f },
{ -0.010471f, -0.010471f, 0.055888f },
{ -0.000000f, -0.019385f, 0.050058f },
{ -0.000000f, -0.014162f, 0.055888f },
{ -0.010471f, 0.010471f, 0.055888f },
{ -0.000000f, 0.019385f, 0.050058f },
{ -0.014333f, 0.014333f, 0.050058f },
{ -0.010471f, -0.010471f, -0.057488f },
{ -0.000000f, -0.019385f, -0.051658f },
{ -0.014333f, -0.014333f, -0.051658f },
{ -0.010471f, 0.010471f, 0.055888f },
{ -0.019385f, -0.000000f, 0.050058f },
{ -0.014162f, -0.000000f, 0.055888f },
{ -0.010471f, 0.010471f, -0.057488f },
{ -0.000000f, 0.019385f, -0.051658f },
{ -0.000000f, 0.014162f, -0.057488f },
{ -0.000000f, 0.014162f, -0.875579f },
{ -0.010471f, 0.010471f, -0.875579f },
{ -0.010471f, 0.010471f, -0.057488f },
{ -0.014162f, -0.000000f, -0.875579f },
{ -0.010471f, -0.010471f, -0.875579f },
{ -0.010471f, -0.010471f, -0.057488f },
{ -0.000000f, -0.014162f, -0.875579f },
{ 0.010471f, -0.010471f, -0.875579f },
{ 0.010471f, -0.010471f, -0.057488f },
{ 0.014162f, 0.000000f, -0.875579f },
{ 0.010471f, 0.010471f, -0.875579f },
{ 0.010471f, 0.010471f, -0.057488f },
{ 0.000000f, 0.000000f, 0.163186f },
{ 0.000000f, -0.014162f, 0.163186f },
{ 0.010471f, -0.010471f, 0.163186f },
{ -0.000000f, 0.000000f, -0.875579f },
{ -0.000000f, 0.014162f, -0.875579f },
{ 0.010471f, 0.010471f, -0.875579f },
{ -0.010471f, 0.010471f, -0.875579f },
{ -0.000000f, 0.014162f, -0.875579f },
{ -0.000000f, 0.000000f, -0.875579f },
{ -0.010471f, -0.010471f, 0.163186f },
{ 0.000000f, -0.014162f, 0.163186f },
{ 0.000000f, 0.000000f, 0.163186f },
{ -0.010471f, -0.010471f, -0.875579f },
{ -0.000000f, -0.014162f, -0.875579f },
{ -0.000000f, -0.014162f, -0.057488f },
{ 0.010471f, 0.010471f, -0.875579f },
{ -0.000000f, 0.014162f, -0.875579f },
{ -0.000000f, 0.014162f, -0.057488f },
{ -0.010471f, 0.010471f, 0.163186f },
{ -0.014162f, -0.000000f, 0.163186f },
{ 0.000000f, 0.000000f, 0.163186f },
{ -0.010471f, -0.010471f, -0.875579f },
{ -0.014162f, -0.000000f, -0.875579f },
{ -0.000000f, 0.000000f, -0.875579f },
{ -0.000000f, 0.000000f, -0.875579f },
{ 0.014162f, 0.000000f, -0.875579f },
{ 0.010471f, -0.010471f, -0.875579f },
{ 0.000000f, 0.000000f, 0.163186f },
{ 0.014162f, 0.000000f, 0.163186f },
{ 0.010471f, 0.010471f, 0.163186f },
{ 0.010471f, -0.010471f, -0.875579f },
{ 0.014162f, 0.000000f, -0.875579f },
{ 0.014162f, 0.000000f, -0.057488f },
{ -0.010471f, 0.010471f, -0.875579f },
{ -0.014162f, -0.000000f, -0.875579f },
{ -0.014162f, -0.000000f, -0.057488f },
{ -0.010471f, 0.010471f, 0.055888f },
{ -0.014162f, -0.000000f, 0.055888f },
{ -0.014162f, -0.000000f, 0.163186f },
{ 0.010471f, 0.010471f, 0.055888f },
{ 0.014333f, 0.014333f, 0.050058f },
{ -0.000000f, 0.019385f, 0.050058f },
{ 0.010471f, -0.010471f, 0.055888f },
{ 0.014162f, 0.000000f, 0.055888f },
{ 0.014162f, 0.000000f, 0.163186f },
{ 0.010471f, -0.010471f, -0.057488f },
{ 0.014332f, -0.014333f, -0.051658f },
{ -0.000000f, -0.019385f, -0.051658f },
{ 0.010471f, 0.010471f, 0.163186f },
{ 0.010471f, 0.010471f, 0.055888f },
{ -0.000000f, 0.014162f, 0.055888f },
{ 0.010471f, -0.010471f, -0.057488f },
{ 0.014162f, 0.000000f, -0.057488f },
{ 0.019385f, 0.000000f, -0.051658f },
{ -0.010471f, -0.010471f, 0.055888f },
{ -0.000000f, -0.014162f, 0.055888f },
{ 0.000000f, -0.014162f, 0.163186f },
{ 0.010471f, -0.010471f, 0.055888f },
{ -0.000000f, -0.014162f, 0.055888f },
{ -0.000000f, -0.019385f, 0.050058f },
{ 0.014162f, 0.000000f, 0.055888f },
{ 0.010471f, 0.010471f, 0.055888f },
{ 0.010471f, 0.010471f, 0.163186f },
{ 0.010471f, -0.010471f, 0.055888f },
{ 0.014333f, -0.014333f, 0.050058f },
{ 0.019385f, 0.000000f, 0.050058f },
{ 0.000000f, -0.014162f, 0.163186f },
{ -0.000000f, -0.014162f, 0.055888f },
{ 0.010471f, -0.010471f, 0.055888f },
{ 0.010471f, 0.010471f, -0.057488f },
{ 0.014332f, 0.014333f, -0.051658f },
{ 0.019385f, 0.000000f, -0.051658f },
{ -0.014162f, -0.000000f, 0.163186f },
{ -0.014162f, -0.000000f, 0.055888f },
{ -0.010471f, -0.010471f, 0.055888f },
{ -0.010471f, 0.010471f, -0.057488f },
{ -0.014162f, -0.000000f, -0.057488f },
{ -0.019385f, -0.000000f, -0.051658f },
{ -0.000000f, 0.014162f, 0.055888f },
{ -0.010471f, 0.010471f, 0.055888f },
{ -0.010471f, 0.010471f, 0.163186f },
{ 0.010471f, 0.010471f, 0.055888f },
{ 0.014162f, 0.000000f, 0.055888f },
{ 0.019385f, 0.000000f, 0.050058f },
{ -0.014333f, 0.014333f, -0.051658f },
{ -0.019385f, -0.000000f, -0.051658f },
{ -0.019385f, -0.000000f, 0.050058f },
{ 0.014333f, -0.014333f, 0.050058f },
{ 0.014332f, -0.014333f, -0.051658f },
{ 0.019385f, 0.000000f, -0.051658f },
{ 0.014332f, 0.014333f, -0.051658f },
{ -0.000000f, 0.019385f, -0.051658f },
{ -0.000000f, 0.019385f, 0.050058f },
{ -0.014333f, -0.014333f, 0.050058f },
{ -0.014333f, -0.014333f, -0.051658f },
{ -0.000000f, -0.019385f, -0.051658f },
{ 0.019385f, 0.000000f, -0.051658f },
{ 0.014332f, 0.014333f, -0.051658f },
{ 0.014333f, 0.014333f, 0.050058f },
{ -0.000000f, -0.019385f, 0.050058f },
{ -0.000000f, -0.019385f, -0.051658f },
{ 0.014332f, -0.014333f, -0.051658f },
{ -0.019385f, -0.000000f, -0.051658f },
{ -0.014333f, -0.014333f, -0.051658f },
{ -0.014333f, -0.014333f, 0.050058f },
{ -0.000000f, 0.019385f, -0.051658f },
{ -0.014333f, 0.014333f, -0.051658f },
{ -0.014333f, 0.014333f, 0.050058f },
{ -0.010471f, -0.010471f, 0.055888f },
{ -0.014162f, -0.000000f, 0.055888f },
{ -0.019385f, -0.000000f, 0.050058f },
{ 0.010471f, 0.010471f, -0.057488f },
{ -0.000000f, 0.014162f, -0.057488f },
{ -0.000000f, 0.019385f, -0.051658f },
{ -0.010471f, -0.010471f, -0.057488f },
{ -0.014333f, -0.014333f, -0.051658f },
{ -0.019385f, -0.000000f, -0.051658f },
{ -0.010471f, -0.010471f, 0.055888f },
{ -0.014333f, -0.014333f, 0.050058f },
{ -0.000000f, -0.019385f, 0.050058f },
{ -0.010471f, 0.010471f, 0.055888f },
{ -0.000000f, 0.014162f, 0.055888f },
{ -0.000000f, 0.019385f, 0.050058f },
{ -0.010471f, -0.010471f, -0.057488f },
{ -0.000000f, -0.014162f, -0.057488f },
{ -0.000000f, -0.019385f, -0.051658f },
{ -0.010471f, 0.010471f, 0.055888f },
{ -0.014333f, 0.014333f, 0.050058f },
{ -0.019385f, -0.000000f, 0.050058f },
{ -0.010471f, 0.010471f, -0.057488f },
{ -0.014333f, 0.014333f, -0.051658f },
{ -0.000000f, 0.019385f, -0.051658f },
};

Expected Behavior

The stick (convex hull) should bounce off the cube (triangle mesh).

Actual Behavior

The stick passes right through the cube with out any contacts being generated.

Additional information

This issue was first discovered in PhysX 4.0 and persists up until the most recent version of PhysX 5.
Slight changes to the position or rotation values of the convex body can already change the behavior, the bug only occurs at very specific angles.
Enabling/Disabling vertex welding has no effect.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions