GeometryCollective / boundary-first-flattening

MIT License
768 stars 96 forks source link

Why surfaces with genus greater than 0 are not supported? #1

Closed OlegJakushkin closed 5 years ago

OlegJakushkin commented 6 years ago

Are there any plans for such surfaces, and what are the main challenges for their support?

rohan-sawhney commented 6 years ago

Hi Oleg, support can be added.

The topology of all genus > 0 surfaces requires them to be treated differently compared to sphere like (genus 0) surfaces. In both cases, a cut needs to be made on these surfaces to make them flattenable (i.e., they need to be transformed into surfaces with a single boundary). In the genus 0 case, the cut forms a spanning tree through the cone singularities. In the genus > 0 case, the cut is slightly more complicated (this is a good resource on what the cut needs to be like and how to compute it: http://www.cs.cmu.edu/~kmcrane/Projects/LoopsOnSurfaces/).

There are 2 practical challenges: 1) Automatic methods for cutting these surfaces tend to produce zigzaggy boundaries which might be difficult to edit on a granular level. An alternative here could be to let the user manually specify the cut. A hybrid approach is also possible. 2) Since genus > 0 surfaces will be cut as a preprocessing step and the resulting surface will serve as input to BFF (or any other uv mapping tool), the map will have seams across the cut on the original surface.

GeometryCollective commented 6 years ago

@rohan-sawhney Neither of these issues should be too hard to deal with:

  1. There are plenty of ways to get a nicer cut through handles. Even just using short homology generators will give something nicer than homotopy generators. (We can chat more about this.)

  2. There should be no problem enforcing length compatibility across this cut: just use a single length degree of freedom per cut edge when constructing the boundary polygon. This way there is (at very least) no jump in texture resolution across the cut.

GeometryCollective commented 6 years ago

@OlegJakushkin To summarize, this is mainly a matter of development effort; some good solution is definitely possible.