2.91 introduced a new collider shape called 'Compound Parent'. If I'm not mistaken the main idea is to have a low poly parent which acts as collider instead of the high poly child while calculating rigid body physics.(as seen in this video https://www.youtube.com/watch?v=M5zBqQELdVU)

but the chain example seen on https://wiki.blender.org/wiki/Reference/Release_Notes/2.91/Physics uses just edges as collider.I would like to know how it was done.

and i would also like to know if there is difference between using a 'copy transforms' or 'child of' constraint instead of compound parent.

I tried having multiple edges as child objects with mesh collider but the mesh just passes through each other instead of colliding.

my attempt


1 Answer 1


Compound Shapes can be used for more than just attaching a low poly mesh as collider to another object. Actually, if all you need is to combine a high poly object with a low poly collision shape object, just parent them or use constraints.

To give you more of an idea how and when to use compound shapes, i'll explain what problem they try to solve:

Collisions of concave objects are always a bit problematic. Before Blender got the Compound Parent shape, the only way to have concave collision shapes was to use the Mesh shape. While it works in most cases it produces bad results in some corner cases, some of which are:

  • When the objects intersect too much, the algorithm can't determine contacts reliable anymore. Objects will get unstable, get stuck in each other or pass each other.
  • If the collision margin is too small, the simulation will get inaccurate or even unstable.

And even when it works, you need to increase the simulation steps per frame to get decent results.

The basic idea behind compound shapes is that you can combine primitive and convex shapes like

  • Spheres
  • Capsules
  • Boxes
  • Cylinders
  • Cones
  • Convex hulls (Basically capsules and spheres are special cases of this)

to more complex but concave shapes. The advantage about the above mentioned primitive shapes is that collision between them can be calculated much easier and more reliable, therefore they are faster and more stable (Especially convex hulls, spheres and capsules).

Now to the chain example from above. It is using several Convex Hull shapes which are parented to a Compound Parent object to create a single concave shape out of the several convex hulls. Basically the shape of the chain element is approximated by capsules that are overlapping, which would look like this if you could see the collision shapes:

Shape of chain element approximated by capsules

Each convex hull is defined by 2 vertices that create a capsule like shape. And the margin of each convex hull object determines the radius of the capsule. The connection between vertices (the edge) doesn't matter, it's just there for visualisation purposes. Now, you could use the built in Capsule shape instead of the convex hull, and the simulation result would be really close if not the same. But in the example you linked it was made just with vertices, because it's easier to place a few vertices than to align boxes for the capsule shapes.

To better show you how two vertices form a capsule, i made an example of two rigid body objects with the same resulting collision shape. The left object is using the built in Capsule shape with a diameter of 2m (1m radius), the size of the capsule is determined by the box mesh of the object. The right object is using a Convex Hull shape consisting of two vertices with a margin of 1m. Beside that they look different in the viewport, they react and collide the same way:

Capsule vs Convex Hull settings

There is a lot more stuff you can do with compound shapes and margins. There is a video somewhere showing you how to create complex parts with rounded edges and other things. Even though the examples in the video were made with the blender game engine (which had compound shapes), it shows the basics which are still applicable to the compound shapes in Blender 2.91.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .