Skip to content

Dynamic updates to AABB tree; intersection-blocking mesh decimation#2301

Merged
alecjacobson merged 45 commits intomainfrom
alecjacobson/Dynamic-AABB
Oct 14, 2023
Merged

Dynamic updates to AABB tree; intersection-blocking mesh decimation#2301
alecjacobson merged 45 commits intomainfrom
alecjacobson/Dynamic-AABB

Conversation

@alecjacobson
Copy link
Copy Markdown
Contributor

This adds a couple features and bug fixes in pursuit of adding a feature to high-jack the callbacks of decimate to prevent (new) self-intersections to be made during edge collapses. To do this efficiently, I modified the AABB tree so that leaves could be dynamically updated (roughly following Eric Catto's notes).

Along the way I also found some bugs in the fast_find* functions (intersections with neighbors were ignored). I've added some routines to detect these intersections (approximately! using floating point ; i.e., not exactly like CGAL or with fancy igl::predicate*). The logic in these functions should be reusable so could benefit from abstracting over fancy types/predicates.

Added tests and tutorials.

I made this nasty "balloon inflation" mesh to create a high-res input that has no self-intersections but would cause a ton during decimation. The new feature successfully avoids all self-intersections.

-hb.mp4

Since it wraps existing callbacks it can be used with qslim metrics:
Le_Transi_De_Rene_De_Chalon

Would be cool to extend to a nested cages/progressive hulls type of constraint for cage / level of detail hierarchies. For now, you can at least go all the way down to super coarse with no self intersections:

image

Using the trivial decimate callbacks, you can kind of use this for self-intersection-free remeshing. Though it'd be much better to just use the dynamic AABB in the same way for a real remesher like Silvia's port of https://github.com/sgsellan/botsch-kobbelt-remesher-libigl
Screen Shot 2023-10-10 at 10 57 36 AM

@alecjacobson alecjacobson merged commit 112c1b8 into main Oct 14, 2023
@alecjacobson alecjacobson deleted the alecjacobson/Dynamic-AABB branch October 14, 2023 11:32
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 this pull request may close these issues.

1 participant