Objects stop moving: why?

Objects stop moving: why?


I have a few situations in which dynamic objects suddenly stop moving. There's no crash, some objects just freeze.

Apparently this can happen for example when objects leave the broad-phase bounds. This is fair enough and easy to fix.

However it also seems to happen in other cases for which I can't find a reasonable explanation, and that I can't find way a way to fix. A simple repro would be just creating an array of 64*64 non overlapping dynamic boxes in a scene (that's it, the scene is otherwise empty). If I create less boxes, they start falling under gravity as expected. But for 64*64 boxes they just freeze and can't move anymore no matter what I do.

Unless I missed something this doesn't seem related to the size of the broadphase.

Is there a parameter to tweak somewhere, that would make this scene work?


publicaciones de 4 / 0 nuevos
Último envío
Para obtener más información sobre las optimizaciones del compilador, consulte el aviso sobre la optimización.

Hi Pierre,

I think the deactivation parameters are what you are looking for. Have a look at "Tweaking Physics Behaviour" in the User Guide (the first section covers deactivation). Deactivation can be set at a world level (e.g. each object will stop when they satisfy particular conditions) or at an individual level (e.g. specifying a single object to never be deactivated through hkpRigidBodyCinfo::m_solverDeactivation).

If you're still having problems with the 64*64 boxes scene after that maybe send through the simple repro you have. I've tried setting up a scene like you described but the 64*64 boxes still fell, albeit very slowly, but they fell :) so I'm probably missing something that you are setting differently.

Amy Developer Support Engineer Havok www.havok.com

Hi Amy,

No, this is unrelated to the solver deactivation. It happens no matter what activation mode I use.

The repro is simple but the app to run it is not, so I can't easily send a repro. I'll try to reproduce the same problem in the demos though.

Hmm I can't repro it in the demos framework so far.

However I found that my problem disappears if I setup the m_collisionTolerance to 0.01f, instead of the 0.1f default. The 64*64 objects are not touching but they are very close to eachother, so maybe using the default tolerance internally generates contacts or something, and some memory buffer overflows. No idea. It would be good to get an error message when this happens, instead of having all objects silently freezing.

I will continue investigating but I think I can solve my problem for now, by tweaking the collision tolerance.

Deje un comentario

Por favor inicie sesión para agregar un comentario. ¿No es socio? Únase ya