
Some downsides of this technique are that it will happily create overlapping parts in the flat pattern, and it is dependent on finding a good starting face. User-specified cuts can be handled as edge deletions before the tree step. Locations for tabs correspond to edges that were in the original mesh, but are not in the flattenable tree. Then walk the tree and add the new faces by calculating the new vertex as the intersection of two circles with radii corresponding to the lengths of the edges in the original mesh. Once you have the tree, start by drawing your starting face at the origin. As you glued the model together, errors would build up until the last few faces didn't fit at all. With each edge equally weighted all trees are minimum spanning trees, even one that would unfold your mesh into one big spiral. Dijkstra's algorithm is good here, but minimum spanning tree doesn't work. it is a tree.Ī good tree represents the fewest fold lines to get to the farthest face from the starting point, since each fold represents error that will accumulate in the finished model. One of these graphs represents an unfoldable mesh if and only if it has no loops, i.e. If you'd like to unfold the mesh exactly as it is modeled, such as for polyhedra models, then here's a relatively simple technique for unfolding any mesh as it standĬonstruct a graph from your source mesh where each face is a vertex in the graph, and two vertices are connected if they share a common edge in the mesh. The algorithms eed3si9n linked to will generate nice reasonable papercraft meshes from complicated geometry. There is also an earlier related paper called Paper craft models from meshes (9MB pdf) by Shatz et al. So I googled it and found Papercraft Models using Generalized Cylinders (pdf) by Massarwi et al. When I read your question, the words "automatic papercraft algorithm" came to me. I realize that finding the optimal net (fewest nets / least pages) is probably computationally expensive, but a good heuristic for finding 'good enough' nets would suffice. The reality for complex shapes is likely to be somewhere in the middle. This isn't ideal, obviously: The ideal case is a single continuous net. The obvious degenerate case is simply to create one net per face, with tabs on half the edges. Generating tabs in the appropriate places, for attaching adjacent faces.Breaking a mesh up into multiple nets if they can't be represented as a single one, due to overlap or page size constraints.Recognizing when two panels in the net would overlap (and are thus invalid).Handling fitting a mesh into fixed size canvases (sheets of paper).Multiple possible decompositions for any given object.How would you devise an algorithm to decompose the mesh into one or more 2d 'nets' - that is, a 2-dimensional representation that can be cut out and folded to create the original 3d object.Īmongst other things, the algorithm would need to account for: Suppose you have a 3 dimensional object, represented as a 3d mesh in some common file format.
