# Given seams, how do I unfold a mesh?

If a user marks a seam on a mesh, how do 3D modelling programs (like Blender or Maya) unfold the mesh on to a 2D surface? I can only find papers trying to automate the seaming for you. Given user-defined seams, does the unfolding happen?

• naive method, put seam on plane and rotate directly attached triangle to the plane, propagate outwards; adjusting deformation as you go. Nov 18, 2014 at 10:52
• @ratchetfreak,Do you have any references to papers?
– Abhi
Nov 18, 2014 at 15:30
• Blender does this; I'm not sure how its algorithm works, but it's seems more robust than your naive method. Nov 22, 2014 at 2:43

One simple method is to use a force-directed graph approach. You model each vertex as a point mass in UV space. Each vertex receives a spring-like force that tries to keep it at the correct distance in UV space from each (post-seam-split) vertex with which it shares an edge, attractive when they're too far apart and repulsive when they're too close.

That handles (approximate) local shape preservation, but then you need a force to spread non-adjacent faces apart so they don't stay crumpled-up in UV space. You could model this as a weak repulsion from non-adjacent vertices or, as is done with Pelt Mapping, an attraction between seam vertices and a "stretching frame."

Other types of iterative constraint solving can work too, like using Verlet integration with an angular constraint to try to preserve face or edge angles.

The hope is that after many iterations, the local corrections will diffuse through the connections between vertices to arrive at a globally-acceptable output.

A more sophisticated approach is called Least Squares Conformal Mapping.

• Thanks, I realized LSCM is what I needed. The reason I didn't know before was because the title of the LSCM paper says "Automatic Texture Atlas Generation" so I assumed it was just a segmentation algorithm and not a mapping algorithm.
– Abhi
Nov 22, 2014 at 19:08