Как создать не встречное твердое тело в PhysX

Мне нужно сделать NULL как твердое тело в PhysX 3.2. Не-сталкиваясь один — только в качестве опорной точки. Есть ли способ сделать это? Мне просто нужно, чтобы решить некоторые сочетания суставов.
заранее спасибо

0

Решение

Сначала создайте фильтр для пар:

PxFilterFlags Simplefilter( PxFilterObjectAttributes attributes0,
PxFilterData filterData0,
PxFilterObjectAttributes attributes1,
PxFilterData filterData1,
PxPairFlags& pairFlags,
const void* constantBlock,
PxU32 constantBlockSize )
{
if(filterData0.word0 = -99) //-99 is random
{
return PxFilterFlag::eKILL;
}
pairFlags =  PxPairFlag::eRESOLVE_CONTACTS;
pairFlags |= PxPairFlag::eCONTACT_DEFAULT;
pairFlags |= PxPairFlag::eNOTIFY_TOUCH_FOUND;
pairFlags |= PxPairFlag::eNOTIFY_CONTACT_POINTS;
return PxFilterFlag::eDEFAULT;
}

Затем при создании PxScene добавьте эту строку:

PxSceneDesc sceneDesc(gPhysicsSDK->getTolerancesScale());
...
sceneDesc.filterShader = Simplefilter;
gScene = gPhysicsSDK->createScene(sceneDesc);

Наконец, сделайте так, чтобы формы вашего актера (в моем примере gSphere) не встречались:

unsigned int nbShapes = gSphere->getNbShapes();

PxShape** shapes = new PxShape*[nbShapes];
if(nbShapes > 0)
{
gSphere->getShapes(shapes,nbShapes,0);
for(unsigned int j = 0; j< nbShapes; j++)
{
PxFilterData data;
data.word0 = -99; // the same number above

shapes[j]->setSimulationFilterData(data);
}
}
1

Другие решения


По вопросам рекламы [email protected]