For the bubble graph construction above you need a circle packing (which can be generated from a triangulated mesh with tangent incircles). If you want to generate the outer bubble edges too, this circle packing also has to be tangent to one circle enclosing all the others (or equivalently, be a circle packing that covers a sphere, because we can transform between the two via stereographic projection).

It is possible to generate such a circle packing mesh for any triangulated mesh.

Practically though, the definition above might sometimes need a bit of extra guidance to stop the mesh folding over itself and getting stuck on its way to this circle packing optimum.

Which is why in the *bubblegraph2* definition I posted above, you’ll see a slider connected to the ‘Rod’ goal, and set to 0.

When you start the relaxation with this set to some positive value, this gives the boundary some stiffness, which can help stop the mesh distorting too wildly at first.

However, this rod goal also prevents it from reaching a true circle packing. So the idea is to start with it up, then slide it down to zero. Guiding the mesh in to a gentle landing, so to speak.

For some more complex meshes it may be though that some other strategy is needed here. If you have an example of one that isn’t working I can take a look.