Concave mesh collision

Just to briefly explain the game I’m working on:
It’s a 2D physics game using 3D graphics for the iPad and iPhone. I have a concave mesh collider set up for the game world, and there will be numerous other objects falling on to it and colliding with each other.

Many of these objects are irregular concave shapes, so I cannot use convex mesh colliders because it would be inaccurate to the shapes of the objects. I want to avoid using primitive colliders (box/sphere/capsule) so the collision is as close to the render mesh as possible.

Now, to get around the limitation of not being able to use multiple concave meshes, I had the idea of creating several children of each object. Each child would have its own convex collision, but when combined they would form a concave shape. For example, I could use three cubes to form an L shape (although obviously more complex than cubes otherwise I’d just use box colliders).

Does anyone know if this would be a sensible work-around? Would the extra processing required (2+ meshes per object instead of just 1) make the entire system sluggish, especially as I’m working with iPad and iPhone? Should I only work with one collision mesh per game object?

Any help much appreciated!

It shouldn’t be too bad so long as they all have 1 rigidbody to move the set. The other alternative would be to create two different meshes (one for rendering and one for physics) and have the physics mesh be incredibly simplified. However I think that your initial idea would be faster, provided you don’t end up with 20+ primitives for a single mesh.

Primitives a geometric checks and are therefore faster than individual triangle checks (mesh colliders). for exampel a Sphere is just a simple distance check, and oriented boxes are 12 greater than/less than checks for a colliding point. This is much simpler than doing 12 line intersecting triangle checks that a mesh collider would consist of.

I am already using two different meshes (one is a simplified collision mesh).

Thanks for the help! I’m going to try using primitives wherever possible, and combinations of meshes in the trickier cases.

Update: Seems to work a treat in the editor, although it’s a convoluted process to set up. Will report back when I’ve done some testing with the target hardware.