I have a set of closed loops on the surface of a non-self-intersecting triangle mesh, and I need to create inset versions of them on the surface of the mesh. In other words, I want to generate a straight skeleton from them.

Within each single triangle of the mesh, this algorithm should behave just like a 2D straight skeleton.

I've found several tools for offsetting loops of edges in a mesh, or generating loops equidistant from a point on the mesh, but I need to be able to input arbitrary loops of my own and offset them.

I ran through various corner cases by hand on some graph paper, and it seems to me the algorithm described by Felkel and Obdrzalek should be perfectly applicable, except the wavefront may at times have to switch between contracting and expanding when it encounters geometries that give it more space.

This algorithm seems like it would be useful in several CAM applications, does anyone know of an existing implementation?

  • $\begingroup$ Do you want the insets to travel on the surface itself? $\endgroup$
    – joojaa
    Commented Mar 17, 2016 at 21:41
  • $\begingroup$ Yes, on the surface. I've found papers for insetting 3D shapes in 3D, but I need to adhere to the surface. $\endgroup$ Commented Mar 17, 2016 at 22:35
  • $\begingroup$ This is easier for cad applications as they have mathematically better surfaces than polygon meshes. But yes you could extrude tubes of varying sizes along edges then repeat and you'd get a good approximation. Its just that defining what distance along internal polygons is shortest and valid one is a bit hard. $\endgroup$
    – joojaa
    Commented Mar 18, 2016 at 18:37

1 Answer 1


This is more of a long comment

Yes you can do this. The problem lies in how you measure the surface. I tried to do this manually by progressively extruding tubes along the edges, and finding their intersection with the surface. It would work but is a bit hard to compute. Obviously you may want to take more steps than i did for a more accurate solution.

enter image description here

Image 1 Straight skeleton (magenta) and insets by finding the intersection of tubes along edges, and then the created edges on mesh (blue) From this experiment I can conclude that are many complex cases to consider.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.