Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

collapseEdgeTriangular loses halfedge data #134

Open
lfyMeta opened this issue Nov 28, 2022 · 1 comment · May be fixed by #135
Open

collapseEdgeTriangular loses halfedge data #134

lfyMeta opened this issue Nov 28, 2022 · 1 comment · May be fixed by #135

Comments

@lfyMeta
Copy link

lfyMeta commented Nov 28, 2022

When we edge collapse, we also remove the degenerate face(s) incident to the edge, which results in removing further edge(s):

 |        x           |
edge degenerate-face edge

 |        x           +
edge degenerate-face deleted-edge

This destroys halfedge data that we still need in the neighborhood post collapse:

 he1 | he2        x            he3 | he4
    edge      degenerate-face     edge

 he1 | he2        x            -- | --
    edge      degenerate-face    deleted-edge

 he1 |  he2 (lost he4!)
    edge (after)

he2 and he3 become completely unnecessary post collapse, but we've lost he4, which disrupts invariants the user may have wanted to maintain, such as parameterization boundaries (e.g., if he1 and he4 were on opposite sides of a UV boundary).

Although we'd like to do so, we cannot directly perform

 he1 | --         x             -- | he4
    edge      degenerate-face     edge

because this violates the implicit sibling property of manifold meshes (a part of which seems to assume that abs(he - he.twin) = 1).

Also, the data may be stored in parallel structures outside this mesh object.

@lfyMeta lfyMeta linked a pull request Nov 28, 2022 that will close this issue
@lfyMeta
Copy link
Author

lfyMeta commented Nov 28, 2022

See #135 for a potential solution, where we provide a callback for the user to fix up their own containers depending on which halfedges are lost.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant