Articulation crash when wake after putToSleep();

I’m using Physx 3.3.2

I’ve created an articulation. Works fine and interacts with the scene with no problems. However I’d like to spawn a version and up it into sleep mode so it can be woken when another actor collides with it. WHen I do this the simulation crashes at the moment of impact with the following assert:

File: …\LowLevel\software\src\PxslslandManagerAux.cpp(1565)
: Assertion failed: !TSecondPass || node.getIsKinematic() ||
!node.getIsInSleepingIsland()

The crash is a 100% repro and happens the instant something collides with the sleeping articulation.

I’ve tested with normal actors and they wake up just fine so it’s something to do with articulations.

I don’t know what this error means and can’t find a mention of it anywhere

I’m developing using VS2013 in 32 bit.

Any help would be much appreciated

I couldn’t cut and paste from teh assert so had to copy by hand into the post,so there may be typos :(

I did some more experiments and when the ragdoll comes to rest it appears to go into sleep mode correctly (according to the PVD which shows the ragdoll going orange) when I shoot it with a dynamic actor it wakes up correctly so it appears the problem only occurs if I force it to sleep with: ragDollArticulation->putToSleep();

Hi,

This has already been fixed and released in 3.3.3. If you need to stick with 3.3.2 then the fix is to replace the assert with the the following change:

PX_ASSERT(!TSecondPass || node.getIsKinematic() || (node.getIsArticulated() && !node.getIsRootArticulationLink()) || !node.getIsInSleepingIsland());

Cheers,

Gordon

Thanks Gordon,

But I can only see 3.3.2 on your download page: https://developer.nvidia.com/gameworksdownload#?tx=$gameworks,physx

am I looking in the wrong place?

regards,

Tony

You can download 3.3.3 from github. More details and links can be found here:

http://physxinfo.com/wiki/PhysX_SDK_3.x