Rigid body dynamics tips and tricks
Here are some very basic tips, gathered from developer and customer experience, on how to best set up your rigid body scenes for fast, robust simulation. These notes were originally written for users of ODE, but they will apply also to optimizing your physX simualtions.
- Use primtive collision geometries (bounding box, sphere, etc) whenever possible.
- If you're using primitive collsions turn off adaptive substepping. Primitive collisions generally do not need the added accuracy of adaptive substepping, and this higher accuracy comes at a speed cost (more substeps = more time)
- Adaptive collisons is generally more useful with actual shape type collisons.
- Consider whether all objects have to be active at all times. For example, if you want to make a brick wall composed of 1000 bricks, being hit with a wrecking ball, there is no need to simulate the wall standing there doing
nothing before it is hit. You could make all the bricks passive until the frame before the wrecking ball hits, then make them active for the remaining frames. Clever use of animated passive/active and muted/unmuted paramaters can speed up complex simulations enormously.
- Normal direction is important to consider for RBD, make sure it is facing the proper direction.
- Use scaled cubes instead of grid primitives; the volume of the scaled cube (even if it is small) creates more stable collisons.
- To avoid interpenetration, seperate your objects slightly then compute the simualtion, as things settle cook the rest state as the new initial state for all the objects.
- You can decrease the substeps to avoid introducing large forces over short periods of time that generally contribute to the blowing apart problem. The downside is the collsions might not be modelled as accurately.
- Rigid body sytems that are seperated physically in space are evaluated independantly of each other, us this technique to create stable rigid body systems.
Applies To: XSI 4.0 on Win2K,Linux