Side-by-side render of a Medusa bust: the left mesh has self-intersections marked in coral red, while the right mesh is fully untangled without changing connectivity.

ACM Transactions on Graphics 45(4) · SIGGRAPH 2026

Untangling Surfaces viaShape and Mesh Repulsion

  • Jiří Minarčík1,2*
  • Michael Liu1*
  • Keenan Crane1,3
  • Minchen Li1,4
  • 1Carnegie Mellon University
  • 2Resistant AI
  • 3Roblox Research
  • 4Genesis AI
  • * Equal contribution

Intersection-Free Mesh Dataset Coming soon

Abstract

Self-intersections are widespread in surface meshes and invalidate downstream simulation, fabrication, and learning pipelines. Existing approaches typically treat self-intersections as local collision events, but embeddedness (i.e., lack of self-intersections) is a global geometric property that cannot be enforced through local reasoning alone.

We introduce an energy-based framework that enforces surface embeddedness simultaneously at the shape and mesh levels, based on the insight that successful untangling requires accounting for both global shape-level interactions and local mesh-level interactions. A shape-level energy captures global entanglement independent of discretization, while a mesh-level penalty regularizes local discrete interactions.

Together, these energies enable reliable removal of self-intersections without changing mesh connectivity and apply to a broad class of geometries, including surfaces with boundary, non-manifold configurations, immersion failures, and multi-object scenes. Compared to prior state-of-the-art methods, our approach resolves self-intersections across challenging datasets, enabling reliable downstream processing of surface meshes.

Methodology: Two Levels of Repulsions

Shape Level

The Gaussian self-contact energy couples surface regions that are close in space but distant across the shape.

\[ \mathcal E_{\mathrm G}(\Sigma;\varepsilon) = \iint_{\Sigma\times\Sigma} \frac{w(x,y)}{\varepsilon^p} \exp\!\left(-\frac{\lVert x-y\rVert^2}{\varepsilon^2}\right) \,d\mathcal H^2(x)\,d\mathcal H^2(y). \]

Surface dimension: p = 2. The bandwidth ε controls the interaction scale.

Use the two point sliders to move s₁ and s₂ along the camel. The map marker follows their pair.

Camel curveΓ

The camel curve and selected parameter pair require Canvas 2D support.
s₁ s₂

Pairwise integrandfixed log scale

The pairwise integrand map requires Canvas 2D support.
Parameters · s₁, s₂
0.764 · 0.867
Euclidean · ‖γ₁−γ₂‖
Intrinsic · dΓ

Mesh Level

Triangle intersection becomes an origin-containment query in the Minkowski difference.

AB={abaA,bB} AB0AB A-B=\{a-b\mid a\in A,\;b\in B\},\qquad A\cap B\neq\varnothing\Longleftrightarrow 0\in A-B
M[M]= (A,B)𝒫 max{0,φ(0,AB)} \mathcal{E}_{\mathrm M}[M]=\sum_{(A,B)\in\mathcal P}\max\{0,-\phi(0,A-B)\}

Drag either triangle to move it. Drag a vertex to reshape it.

Intersecting · 0 ∈ A − B

TrianglesA, B

A B

Minkowski differenceA − B

0

Applications

Cloth

Compare self-intersecting garments from the 3D+Texture dataset before and after untangling.

Dress

Red = Intersections

Reference
Resolved

Common Assets

Everyday objects from the ShapeNetCore v2 dataset, before and after untangling.

Jar

Red = Intersections Blue = Other triangles

Reference
Reference Jar from ShapeNetCore v2, case 03593526_569b55cfce8c4d15b136b011ae1ece0c. Red faces mark intersections; blue faces are other triangles.
Resolved
Resolved Jar from ShapeNetCore v2, case 03593526_569b55cfce8c4d15b136b011ae1ece0c. All triangles are blue.

Random & Fun

Unexpected direct meshes—from mathematical sculpture to anatomy—before and after untangling.

Selected specimen

Half-Kite Lattice

A dense half-kite lattice turns a mathematical sculpture into a geometric stress test.

Drag either view to orbit both models. Middle-drag, Shift-drag, right-drag, or use two fingers to pan. Scroll or pinch to zoom. Arrow keys orbit; Shift plus arrow keys pan; plus and minus zoom; Home resets.

Reference
A browser with WebGL 2 is required for this interactive mesh.
Resolved
A browser with WebGL 2 is required for this interactive mesh.
Coral = Initial intersections Amber = Formerly intersecting region

Shared view · Reference or Resolved

Vertices
67,506
Triangles
135,392
Initial proper pairs
240
Resolved intersections
0

Henry Segerman, Visualizing Mathematics with 3D Printing, Figure 1-18 · 3DPrintMath · CC BY-NC-SA 4.0 Noncommercial; the adapted mesh remains under ShareAlike. Modified for research visualization and untangling.

Choose a specimen

Asset-specific source and license terms govern each selected mesh and are not replaced by this project’s terms. No DRM is applied.

Full asset credits and terms
  1. Henry Segerman, Visualizing Mathematics with 3D Printing, Figure 1-18. Modified for research visualization and untangling. CC BY-NC-SA 4.0. Noncommercial; the adapted mesh remains under ShareAlike. Source.
  2. “Cranial arteries and aneurysm,” Nevit Dilmen, NIH 3D entry 3DPX-002604. Modified for research visualization and untangling. CC BY-NC 4.0. Noncommercial. Source.
  3. Kristen Browne and Heidi Schlehlein; Human BioMolecular Atlas Program (HuBMAP). Modified for research visualization and untangling. CC BY 4.0. Source.
  4. Moreton Bay Fig Tree 5 by b_nealie. Modified for research visualization and untangling. CC BY 4.0. Source.
  5. “Leaf shelter” by Boopie (boopie3), via Sketchfab, licensed under CC BY 4.0. Changes: exact-position attribute-seam consolidation, selection of one native curled-leaf component, uniform normalization, and mesh-untangling deformation. CC BY 4.0. Source.
  6. “Tube Sculpture” by Kalephrex, via Sketchfab, licensed under CC BY 4.0. The source describes it only as “It’s a tubular sculpture.” Changes: selected the six major native tube elements; omitted two tiny decorative/mount fragments of 52 and 12 faces; removed 10 source faces and added 30 faces across five local CGAL-safe attachment bridges; then applied uniform normalization and mesh-untangling deformation. CC BY 4.0. Source.
  7. “Celtic Knots” by Froggreen, via Sketchfab, licensed under CC BY 4.0. Changes: selected native edge-connected component 5 of six; applied global uniform normalization and mesh-untangling deformation. No remeshing, topology repair, or bridging was applied. CC BY 4.0. Source.
  8. “MB Games Foil Balloon” by Mason.Barry, via Sketchfab; licensed under CC BY 4.0. Changes: decoded the official FBX base mesh to authored triangles without modifiers, selected balloon component 0, welded exact coincident attribute positions for the solver surface, applied uniform normalization, preserved the qualified UV/material payload, and applied mesh-untangling deformation. CC BY 4.0. Source.
  9. “Destroyed Guitar” by Baptiste Chaplain (Crypton31), via Sketchfab; licensed under CC BY 4.0. Changes: selected the dominant native body-and-neck shell after exact coincident-position welding; deleted five audited defect faces; compacted unused vertices; applied uniform normalization and mesh-untangling deformation. No retained vertex was moved during intake, no face was reoriented, and no intersection was manufactured. CC BY 4.0. Source.
  10. “Crashed Abandoned Car - Game Ready” by Rashad Ibrahimli (rashad-brahimli), via Sketchfab; licensed under CC BY 4.0. Changes: used the official 1K GLB polygon mesh; selected the dominant damaged body/chassis component; welded exact coincident positions; deleted 24 audited invalid or excess faces; compacted and uniformly normalized the surface; and applied mesh-untangling deformation. No local intake displacement, volume conversion, remeshing, reconstruction, smoothing, or manufactured intersection was used. CC BY 4.0. Source.

Citation

Jiří Minarčík, Michael Liu, Keenan Crane, and Minchen Li. 2026. Untangling Surfaces via Shape and Mesh Repulsion. ACM Transactions on Graphics 45, 4, Article 163 (July 2026), 15 pages. https://doi.org/10.1145/3811382

@article{Minarcik2026Untangling,
  author    = {Minarčík, Jiří and Liu, Michael and
               Crane, Keenan and Li, Minchen},
  title     = {Untangling Surfaces via Shape and Mesh Repulsion},
  journal   = {ACM Transactions on Graphics},
  volume    = {45},
  number    = {4},
  articleno = {163},
  numpages  = {15},
  month     = jul,
  year      = {2026},
  doi       = {10.1145/3811382},
  url       = {https://doi.org/10.1145/3811382}
}