forked from 1b-agent/fieldcraft-upstream
docs: shell quad meshing survey (advancing front in (u,v) with a cross field); citation fix (#44)
Survey of ~40 papers for meshing curved B-rep faces for shells: frontal-Delaunay point placement in the cross-field metric (Remacle et al. 2013), recombination to all-quad, cleanup (Reberol et al. 2021), global parity by minimum T-join, verification on shell benchmarks; licences of every code base. Also fixes the Lee & Lo 1994 author initials in literature.md B7.2. Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm Co-authored-by: jyviko <[email protected]> Co-authored-by: Claude Opus 5.5 <[email protected]>
This commit is contained in:
2 files changed
+851
-2
No files matched your search
@@ -799,7 +799,11 @@ Delaunay methods with Voronoi/ODT improvement, then (2) all-hex and hex-dominant
|
||||
shape metrics for hexes, wedges and quads.
|
||||
|
||||
|
||||
### B7. Planar quadrilateral meshing (implemented in `modelcraft-mesh::quad`)
|
||||
### B7. Planar quadrilateral meshing
|
||||
|
||||
> Shell (curved-face) quad meshing — advancing front in (u,v) with a cross field, recombination and cleanup — is surveyed separately in [shell-quad-literature.md](shell-quad-literature.md).
|
||||
|
||||
(implemented in `modelcraft-mesh::quad`)
|
||||
|
||||
The face meshers under mapped and swept hex meshing and shell meshing. All quads on prescribed
|
||||
boundary nodes, so faces sharing an edge share its nodes. DOIs below were checked through
|
||||
@@ -824,7 +828,7 @@ boundary nodes, so faces sharing an edge share its nodes. DOIs below were checke
|
||||
non-uniform quadrilateral mesh generator using a minimum-cost perfect-matching algorithm.* IJNME 89(9):1102–1119,
|
||||
2012. DOI [10.1002/nme.3279](https://doi.org/10.1002/nme.3279). **Verdict: reference (upgrade path for the
|
||||
matching).** Paper only: the implementation lives in Gmsh, which is GPL and forbidden.
|
||||
- **Recombination and split.** D. T. Lee, S. H. Lo. *A new scheme for the generation of a graded quadrilateral
|
||||
- **Recombination and split.** C. K. Lee, S. H. Lo. *A new scheme for the generation of a graded quadrilateral
|
||||
mesh.* Computers & Structures 52(5):847–857, 1994. DOI
|
||||
[10.1016/0045-7949(94)90070-1](https://doi.org/10.1016/0045-7949(94)90070-1). **Verdict: BUILD ON.** Triangles
|
||||
merged into quads, then every element split once, which makes the mesh all-quad whatever the merge found.
|
||||
|
||||
@@ -0,0 +1,845 @@
|
||||
# Shell meshing literature survey for ModelCraft: quad and quad-dominant meshes of curved B-rep faces
|
||||
|
||||
Compiled 2026-10-13. Scope: all-quad and quad-dominant surface meshes of the curved faces (planes, cylinders,
|
||||
cones, spheres, tori, NURBS) of SolidCraft parts, meshed in each face's (u,v) parameter space with metric
|
||||
correction and conforming across shared B-rep edges, for shell analysis (MITC4-class shells now,
|
||||
continuum shells on swept hexes in M8). This extends `docs/meshing/literature.md` §B7, which compared
|
||||
paving, Q-Morph and Blossom-Quad for **planar** faces only and chose CDT → greedy recombination →
|
||||
Catmull–Clark split (`modelcraft-mesh::quad`).
|
||||
|
||||
Same format as `docs/meshing/literature.md`: per paper, citation, DOI/URL, method, problem solved,
|
||||
robustness/limits, complexity, code + licence, verdict. Part P is the opinionated plan.
|
||||
|
||||
## How this was verified
|
||||
|
||||
- **DOIs.** Every DOI below returned `responseCode 1` from `doi.org/api/handles/<doi>` on 2026-10-13, and
|
||||
its title, authors, year, venue, volume and pages were checked against Crossref metadata. ACM TOG article numbers are omitted because Crossref does not carry them. Items without a
|
||||
DOI (Meshing Roundtable papers before 2007, preprints) are cited by venue with a URL that returned HTTP 200
|
||||
on the same day, or are listed under "Unverified items".
|
||||
- **Read depth** (stated per entry as *Read:*). *full* = I read the paper (PDF). *abstract* = abstract and
|
||||
metadata only. *metadata* = title/venue only; the method line is then the paper's well-established
|
||||
content as cited by later papers, and I give no numbers or section numbers for it. Numbers quoted are from
|
||||
papers marked *full*.
|
||||
- **Licences** come from GitHub licence metadata and LICENSE/README files only. No source code was opened.
|
||||
Legend as in `literature.md`: **READ OK** (MIT, BSD, Apache-2.0, MPL-2.0), **FORBIDDEN** (GPL, LGPL,
|
||||
AGPL), **NO LICENCE** (all rights reserved; treat as forbidden). "BSD-3+" means BSD-3-Clause plus the
|
||||
"enhancements" paragraph (still permissive).
|
||||
- **Commercial-product rule.** Several reference papers validate on ABC (Onshape) or MAMBO (STEP files whose
|
||||
headers name commercial tools); see `literature.md` Part C. We cite their published numbers as evidence of
|
||||
the method's state, never use their data.
|
||||
|
||||
### Corrections found in passing
|
||||
1. `docs/meshing/literature.md` B7.2 cites *A new scheme for the generation of a graded quadrilateral mesh*
|
||||
(C&S 52(5), 1994) as "D. T. Lee, S. H. Lo". Crossref gives **C. K. Lee** and S. H. Lo (C. K. Lee is the
|
||||
same author as S2.4 below). Fix the citation there.
|
||||
2. The task brief names "Lyon et al. QEx 2016". QEx is **Ebke, Bommes, Campen, Kobbelt 2013** (S7.6);
|
||||
Lyon, Bommes, Kobbelt 2016 is HexEx (volumetric, `literature.md` B3.9).
|
||||
|
||||
---
|
||||
|
||||
## S0. Surveys and books (read first)
|
||||
|
||||
**S0.1 Bommes, Lévy, Pietroni, Puppo, Silva, Tarini, Zorin 2013, Quad-mesh generation and processing: a survey.** **Verdict: reference (read first for the graphics side).**
|
||||
- **Citation.** CGF 32(6):51–76, 2013. DOI [10.1111/cgf.12014](https://doi.org/10.1111/cgf.12014). *Read:* metadata.
|
||||
- **Use.** Taxonomy of field-guided, parametrization-based, Voronoi/patch and remeshing methods; the
|
||||
vocabulary (cross field, singularity, integer-grid map, base complex) used in S4–S7.
|
||||
|
||||
**S0.2 Campen 2017, Partitioning surfaces into quadrilateral patches: a survey.** **Verdict: reference.**
|
||||
- **Citation.** CGF 36(8):567–588, 2017. DOI [10.1111/cgf.13153](https://doi.org/10.1111/cgf.13153). *Read:* metadata.
|
||||
- **Use.** Layouts and block decompositions (S8), motorcycle graphs (S7.5).
|
||||
|
||||
**S0.3 Frey and George 2008, *Mesh Generation* (2nd ed.); Lo 2014, *Finite Element Mesh Generation*.** **Verdict: reference (engineering side).**
|
||||
- **Citations.** P. J. Frey, P.-L. George, ISTE/Wiley 2008, DOI [10.1002/9780470611166](https://doi.org/10.1002/9780470611166).
|
||||
S. H. Lo, CRC Press 2014, DOI [10.1201/b17713](https://doi.org/10.1201/b17713). *Read:* metadata.
|
||||
- **Use.** Parametric-surface meshing with the first fundamental form, metric Delaunay kernels, advancing
|
||||
front on surfaces, quad conversion. Lo is the author of S2.3–S2.4.
|
||||
|
||||
**S0.4 Vaxman, Campen, Diamanti, Panozzo, Bommes, Hildebrandt, Ben-Chen 2016, Directional field synthesis, design, and processing.** **Verdict: reference (cross fields, S4).**
|
||||
- **Citation.** CGF 35(2):545–572, 2016. DOI [10.1111/cgf.12864](https://doi.org/10.1111/cgf.12864). *Read:* metadata.
|
||||
|
||||
---
|
||||
|
||||
## S1. Direct advancing front of quadrilaterals (paving family)
|
||||
|
||||
**S1.1 Blacker and Stephenson 1991, Paving.** **Verdict: reference (do not build).**
|
||||
- **Citation.** T. D. Blacker, M. B. Stephenson. *Paving: a new approach to automated quadrilateral mesh
|
||||
generation.* IJNME 32(4):811–847, 1991. DOI [10.1002/nme.1620320410](https://doi.org/10.1002/nme.1620320410). *Read:* metadata (well known).
|
||||
- **Method.** Rows of quads are laid from the boundary inward. Front nodes are classified by their interior
|
||||
angle (row end, side, corner, reversal); rows are adjusted (wedges, tucks) for size changes; small angles
|
||||
are seamed; colliding fronts are detected by intersection tests and connected; the last void (six nodes or
|
||||
fewer) is closed by templates; then cleanup and smoothing.
|
||||
- **Solves.** Excellent boundary-parallel rows, few irregular nodes near the boundary: what analysts want
|
||||
around holes and edges.
|
||||
- **Limits.** Front collision and intersection handling is the failure mode, and each case is a special
|
||||
case. Every operation decides on floating-point geometry with no background structure to fall back on.
|
||||
- **Complexity.** High implementation complexity; intersection tests dominate run time.
|
||||
- **Code.** Implemented in Sandia CUBIT (not open source). None readable.
|
||||
|
||||
**S1.2 Cass, Benzley, Meyers, Blacker 1996, Generalized 3-D paving.** **Verdict: reference.**
|
||||
- **Citation.** *Generalized 3-D paving: an automated quadrilateral surface mesh generation algorithm.*
|
||||
IJNME 39(9):1475–1489, 1996. DOI [10.1002/(SICI)1097-0207(19960515)39:9<1475::AID-NME913>3.0.CO;2-W](https://doi.org/10.1002/(SICI)1097-0207(19960515)39:9%3C1475::AID-NME913%3E3.0.CO;2-W). *Read:* metadata.
|
||||
- **Method.** Paving directly on 3D surfaces: front directions from surface normals and tangents, every new
|
||||
node projected onto the surface, collision tests in 3D.
|
||||
- **Relevance.** The 3D alternative to meshing in (u,v). It avoids parametrization distortion but pays with
|
||||
projections and 3D intersection tests; in (u,v) the same tests become exact 2D predicates.
|
||||
|
||||
**S1.3 White and Kinney 1997, Redesign of the paving algorithm.** **Verdict: reference.**
|
||||
- **Citation.** D. R. White, P. Kinney. *Redesign of the paving algorithm: robustness enhancements through
|
||||
element by element meshing.* Proc. 6th International Meshing Roundtable, pp. 323–335, 1997. No DOI; the
|
||||
citation and page range are as listed in Sandia's CUBIT reference list (not fetched as PDF). *Read:* metadata.
|
||||
- **Method.** Elements added one at a time instead of whole rows, which simplifies the bookkeeping and the
|
||||
collision cases.
|
||||
- **Relevance.** Even the paving authors' group moved away from row-at-a-time logic for robustness.
|
||||
|
||||
**S1.4 Staten, Owen, Blacker 2005, Unconstrained paving and plastering.** **Verdict: reference.**
|
||||
- **Citations.** IMR 14 (2005) pp. 399–416, DOI [10.1007/3-540-29090-7_24](https://doi.org/10.1007/3-540-29090-7_24);
|
||||
journal version (plastering) IJNME 81(2):135–171, 2010, DOI [10.1002/nme.2679](https://doi.org/10.1002/nme.2679). *Read:* metadata.
|
||||
- **Method.** The front bounds an unmeshed *geometric* void first; elements are formed later. It addresses
|
||||
collision by deferring connectivity.
|
||||
- **Relevance.** Historical: it shows the collision problem was still open for the direct family in 2005–2010.
|
||||
|
||||
**S1.5 Ollivier-Gooch et al. 2025, Entire domain advancing-layer meshing. Part 1: two-dimensional and surface meshing.** **Verdict: watch.**
|
||||
- **Citation.** SSRN preprint, 2025. DOI [10.2139/ssrn.5802502](https://doi.org/10.2139/ssrn.5802502) (Crossref lists
|
||||
first author Ollivier-Gooch). *Read:* metadata only; not peer reviewed.
|
||||
- **Relevance.** A current advancing-layer approach covering whole surfaces, related to boundary-layer quads
|
||||
(a UBC thesis, "EDAMSurf", is in the same line). Re-check when published.
|
||||
|
||||
---
|
||||
|
||||
## S2. Indirect advancing front (Q-Morph and the Lo / Lee school)
|
||||
|
||||
**S2.1 Owen, Staten, Canann, Saigal 1999, Q-Morph.** **Verdict: reference (the ideas we keep: front states, layer order, side-edge choice; the implementation we don't build first).**
|
||||
- **Citation.** *Q-Morph: an indirect approach to advancing front quad meshing.* IJNME 44(9):1317–1340, 1999.
|
||||
DOI [10.1002/(SICI)1097-0207(19990330)44:9<1317::AID-NME532>3.0.CO;2-N](https://doi.org/10.1002/(SICI)1097-0207(19990330)44:9%3C1317::AID-NME532%3E3.0.CO;2-N). *Read:* metadata (well known; IMR 1998 version: *Advancing front quadrilateral meshing using triangle transformations*).
|
||||
- **Method.** Start from a triangulation. Front edges carry a state (how many of the two side edges exist).
|
||||
For each front edge, choose side edges (an existing front edge when the angle allows, otherwise the
|
||||
triangle edge closest to the bisector, made by swaps or splits), recover the top edge by edge swaps,
|
||||
delete the enclosed triangles to form a quad, smooth locally, update the front. Fronts are processed layer
|
||||
by layer; seams close small angles; transition splits handle size changes.
|
||||
- **Solves.** Paving-quality boundary rows with collision handled by the background triangulation: opposing
|
||||
fronts meet in triangles that are always there.
|
||||
- **Limits.** Many cases (state transitions, edge recovery failing, odd closure leaving a triangle). On
|
||||
surfaces it inherits the triangulation's quality and needs the recovery swaps to be valid on the surface.
|
||||
- **Complexity.** O(n) local operations after the triangulation; high implementation complexity.
|
||||
- **Code.** CUBIT (closed). Gmsh is not involved. None readable.
|
||||
|
||||
**S2.2 Owen and Saigal 2000, Surface mesh sizing control.** **Verdict: build on (size field on faces).**
|
||||
- **Citation.** IJNME 47(1–3):497–511, 2000. DOI [10.1002/(SICI)1097-0207(20000110/30)47:1/3<497::AID-NME781>3.0.CO;2-H](https://doi.org/10.1002/(SICI)1097-0207(20000110/30)47:1/3%3C497::AID-NME781%3E3.0.CO;2-H). *Read:* metadata.
|
||||
- **Method.** Automatic sizing on CAD surfaces from curvature and proximity, stored on a background mesh.
|
||||
- **Use.** The curvature and proximity terms of ModelCraft's surface size field (P3.3).
|
||||
|
||||
**S2.3 Lo 1989; Lau, Lo, Lee 1997; Lo and Lau 1998: quadrilaterals over curved surfaces.** **Verdict: reference.**
|
||||
- **Citations.**
|
||||
- S. H. Lo. *Generating quadrilateral elements on plane and over curved surfaces.* C&S 31(3):421–426, 1989.
|
||||
DOI [10.1016/0045-7949(89)90389-1](https://doi.org/10.1016/0045-7949(89)90389-1).
|
||||
- T. S. Lau, S. H. Lo, C. K. Lee. *Generation of quadrilateral mesh over analytical curved surfaces.* FEAD
|
||||
27(3):251–272, 1997. DOI [10.1016/S0168-874X(97)00015-2](https://doi.org/10.1016/S0168-874X(97)00015-2).
|
||||
- S. H. Lo, T. S. Lau. *Mesh generation over curved surfaces with explicit control on discretization error.*
|
||||
Eng. Comput. 15(3):357–373, 1998. DOI [10.1108/02644409810208516](https://doi.org/10.1108/02644409810208516).
|
||||
- *Read:* metadata for all three.
|
||||
- **Method.** Lo's line: advancing-front triangulation then merging into quads, carried onto curved surfaces
|
||||
through their parametrization; the 1998 paper sizes elements by chordal (discretization) error.
|
||||
- **Use.** Engineering precedent for exactly our problem (quads on analytic and parametric surfaces). The
|
||||
chordal-error sizing is P3.3's curvature term.
|
||||
|
||||
**S2.4 C. K. Lee: metric advancing front on surfaces; indirect anisotropic quads.** **Verdict: build on (metric formulation); reference (algorithms).**
|
||||
- **Citations.**
|
||||
- C. K. Lee, S. H. Lo. *A new scheme for the generation of a graded quadrilateral mesh.* C&S 52(5):847–857,
|
||||
1994. DOI [10.1016/0045-7949(94)90070-1](https://doi.org/10.1016/0045-7949(94)90070-1) (already the basis of `quad::free`).
|
||||
- C. K. Lee, R. E. Hobbs. *Automatic adaptive finite element mesh generation over rational B-spline
|
||||
surfaces.* C&S 69(5):577–608, 1998. DOI [10.1016/S0045-7949(98)80096-5](https://doi.org/10.1016/S0045-7949(98)80096-5).
|
||||
- C. K. Lee. *Automatic adaptive mesh generation using metric advancing front approach.* Eng. Comput.
|
||||
16(2):230–263, 1999. DOI [10.1108/02644409910257494](https://doi.org/10.1108/02644409910257494).
|
||||
- C. K. Lee. *Automatic metric 3D surface mesh generation using subdivision surface geometrical model*,
|
||||
Parts 1–2. IJNME 56(11):1593–1614 and 1615–1646, 2003. DOIs [10.1002/nme.630](https://doi.org/10.1002/nme.630),
|
||||
[10.1002/nme.631](https://doi.org/10.1002/nme.631).
|
||||
- Y. K. Lee, C. K. Lee. *A new indirect anisotropic quadrilateral mesh generation scheme with enhanced local
|
||||
mesh smoothing procedures.* IJNME 58(2):277–300, 2003. DOI [10.1002/nme.771](https://doi.org/10.1002/nme.771).
|
||||
- *Read:* metadata for all.
|
||||
- **Method.** Advancing front in the (u,v) domain where every length is measured in a Riemannian metric built
|
||||
from the surface's first fundamental form and the target size; then triangle merging into quads, with
|
||||
anisotropic (stretched) quads from an anisotropic metric.
|
||||
- **Use.** The metric-in-(u,v) formulation of P3.2 is this one (and Tristano 1998, S3.1).
|
||||
|
||||
**S2.5 Zhu, Zienkiewicz, Hinton, Wu 1991; Johnston, Sullivan, Kwasnik 1991: early indirect methods.** **Verdict: reference.**
|
||||
- **Citations.** Zhu et al., *A new approach to the development of automatic quadrilateral mesh generation*,
|
||||
IJNME 32(4):849–866, 1991, DOI [10.1002/nme.1620320411](https://doi.org/10.1002/nme.1620320411). Johnston et al.,
|
||||
*Automatic conversion of triangular finite element meshes to quadrilateral elements*, IJNME 31(1):67–84,
|
||||
1991, DOI [10.1002/nme.1620310105](https://doi.org/10.1002/nme.1620310105). *Read:* metadata.
|
||||
- **Method.** Zhu: advancing-front triangles generated in pairs and merged as the front advances (a precursor
|
||||
of Q-Morph's "front of quads over triangles"). Johnston: post-hoc conversion of a triangulation by merging
|
||||
and splitting.
|
||||
|
||||
**S2.6 Pellenard, Orbay, Chen, Sohan, Kwok, Tristano 2014, QMCF: Q-Morph cross field-driven quad-dominant meshing.** **Verdict: reference (closest published match to "Q-Morph + cross field").**
|
||||
- **Citation.** Procedia Engineering 82:338–350, 2014 (IMR 23). DOI [10.1016/j.proeng.2014.10.395](https://doi.org/10.1016/j.proeng.2014.10.395). Open access (CC BY-NC-ND). *Read:* abstract (via search snippets; the publisher page refused a scripted client).
|
||||
- **Method.** Input: a triangulation of CAD surfaces and a size field. A cross field from principal curvature
|
||||
directions and boundary constraints steers Q-Morph: new front edges follow the cross field instead of
|
||||
growing orthogonally from the previous front, and fronts may start at interior points. Output is
|
||||
quad-dominant.
|
||||
- **Relevance.** Industrial authors (one of them co-wrote the 1998 parametric-space paper S3.1). Evidence
|
||||
that the 2010s path for Q-Morph was "add a cross field", and that the result was quad-dominant, not
|
||||
all-quad, without a further step. No quantitative robustness data seen.
|
||||
|
||||
---
|
||||
|
||||
## S3. Meshing in parameter space with a metric (the surface substrate)
|
||||
|
||||
**S3.1 Tristano, Owen, Canann 1998, Advancing front surface mesh generation in parametric space using a Riemannian surface definition.** **Verdict: build on.**
|
||||
- **Citation.** Proc. 7th International Meshing Roundtable, 1998. PDF (HTTP 200): <https://www.ljll.fr/~frey/papers/meshing/Tristano%20J.R.,%20Advancing%20front%20surface%20mesh%20generation%20in%20parametric%20space%20using%20a%20Riemannian%20surface%20definition.pdf>. *Read:* abstract.
|
||||
- **Method.** Meshing happens in (u,v); lengths and angles are measured with the metric of the first
|
||||
fundamental form so elements that are distorted in (u,v) are well shaped on the surface.
|
||||
- **Use.** P3.2: our metric is `M(u,v) = JᵀJ / h(S(u,v))²`, J = [S_u S_v].
|
||||
|
||||
**S3.2 Borouchaki, George, Hecht, Laug, Saltel 1997, Delaunay mesh generation governed by metric specifications.** **Verdict: build on (only if non-conformal parametrizations need an anisotropic Delaunay kernel).**
|
||||
- **Citation.** Part I: FEAD 25(1–2):61–83, 1997, DOI [10.1016/S0168-874X(96)00057-1](https://doi.org/10.1016/S0168-874X(96)00057-1); Part II: FEAD 25:85–109, DOI [10.1016/S0168-874X(96)00065-0](https://doi.org/10.1016/S0168-874X(96)00065-0). *Read:* metadata.
|
||||
- **Method.** The Delaunay criterion evaluated in a local metric (anisotropic Bowyer–Watson cavity).
|
||||
- **Caveat for ModelCraft.** A metric in-circle test is not an exact predicate of the input coordinates; it
|
||||
may only decide *point placement* and *which flip to try*, never validity. Validity stays an exact `orient2d`
|
||||
sign in (u,v) (see P3.5).
|
||||
|
||||
**S3.3 Borouchaki, Laug, George 2000, Parametric surface meshing using a combined advancing-front generalized-Delaunay approach.** **Verdict: reference.**
|
||||
- **Citation.** IJNME 49(1–2):233–259, 2000. DOI [10.1002/1097-0207(20000910/20)49:1/2<233::AID-NME931>3.0.CO;2-G](https://doi.org/10.1002/1097-0207(20000910/20)49:1/2%3C233::AID-NME931%3E3.0.CO;2-G). *Read:* metadata.
|
||||
- **Method.** Frontal point placement with a generalized (metric) Delaunay kernel in (u,v): the "frontal-Delaunay"
|
||||
hybrid that S5 builds on. Companion: Borouchaki and Frey, *Adaptive triangular–quadrilateral mesh
|
||||
generation*, IJNME 41(5):915–934, 1998, DOI [10.1002/(SICI)1097-0207(19980315)41:5<915::AID-NME318>3.0.CO;2-Y](https://doi.org/10.1002/(SICI)1097-0207(19980315)41:5%3C915::AID-NME318%3E3.0.CO;2-Y)
|
||||
(metric triangulation then merging; 97% quads, min quality 0.23 on the test reported in S5.1).
|
||||
|
||||
**S3.4 Rebay 1993, Efficient unstructured mesh generation by means of Delaunay triangulation and Bowyer–Watson algorithm.** **Verdict: build on (the frontal-Delaunay loop).**
|
||||
- **Citation.** JCP 106(1):125–138, 1993. DOI [10.1006/jcph.1993.1097](https://doi.org/10.1006/jcph.1993.1097). *Read:* metadata.
|
||||
- **Method.** Triangles classified as resolved / active (front) / waiting; a new point is placed to make an
|
||||
ideal triangle on the front edge of the worst active triangle, inserted with Bowyer–Watson. A valid
|
||||
triangulation exists at every step, so fronts never "collide": they meet inside a triangulation.
|
||||
- **Use.** The loop of S5.1 and of our P3.4. The existing `quad::cdt` already has Bowyer–Watson.
|
||||
|
||||
**S3.5 Cuillière 1998, An adaptive method for the automatic triangulation of 3D parametric surfaces.** **Verdict: reference.**
|
||||
- **Citation.** CAD 30(2):139–149, 1998. DOI [10.1016/S0010-4485(97)00085-7](https://doi.org/10.1016/S0010-4485(97)00085-7). *Read:* metadata.
|
||||
|
||||
**S3.6 Remacle and Geuzaine 2022, Gmsh's approach to robust mesh generation of surfaces with irregular parametrizations.** **Verdict: build on (pole handling). Paper only (Gmsh is GPL).**
|
||||
- **Citation.** In *Mesh Generation and Adaptation*, SEMA SIMAI Springer Series 30, pp. 95–112, 2022.
|
||||
DOI [10.1007/978-3-030-92540-6_5](https://doi.org/10.1007/978-3-030-92540-6_5). IMR 2019 version (HTTP 200):
|
||||
<https://www.internationalmeshingroundtable.com/assets/papers/2019/23-Remacle.pdf>. *Read:* abstract.
|
||||
- **Problem.** Singular parametrizations from CAD (sphere poles, cone apexes, surfaces of revolution touching
|
||||
their axis): one boundary edge of the (u,v) domain maps to one 3D point.
|
||||
- **Method.** Triangles at the singular point are treated as trapezoids with one collapsed edge.
|
||||
- **Use.** Directly relevant: SolidCraft spheres and revolved faces have poles. For an all-quad mesh, the
|
||||
elements at a pole become degenerate quads; P3.1 gives our handling (chart switch) and this is the
|
||||
reference for the alternative.
|
||||
|
||||
**S3.7 Remacle et al. 2010; Marchandise et al. 2011, 2012; Beaufort, Geuzaine, Remacle 2020: reparametrization.** **Verdict: reference (fallback chart for faces whose native parametrization is unusable). Papers only.**
|
||||
- **Citations.** Remacle, Geuzaine, Compère, Marchandise, *High-quality surface remeshing using harmonic
|
||||
maps*, IJNME 83(4):403–425, 2010, DOI [10.1002/nme.2824](https://doi.org/10.1002/nme.2824). Marchandise, Remacle, Geuzaine,
|
||||
*Optimal parametrizations for surface remeshing*, Eng. Comput. 30(3):383–402, 2014 (online 2012),
|
||||
DOI [10.1007/s00366-012-0309-3](https://doi.org/10.1007/s00366-012-0309-3). Beaufort, Geuzaine, Remacle, *Automatic surface
|
||||
mesh generation for discrete models – a complete and automatic pipeline based on reparameterization*, JCP
|
||||
417:109575, 2020, DOI [10.1016/j.jcp.2020.109575](https://doi.org/10.1016/j.jcp.2020.109575), arXiv <https://arxiv.org/abs/2001.02542>. *Read:* abstract (2020).
|
||||
- **Method (2020).** Split a triangulation into patches, give each a one-to-one discrete parametrization
|
||||
(mean-value coordinates; proved one-to-one iff every parametric triangle has positive area), then mesh in
|
||||
that chart.
|
||||
- **Use.** The fallback chart (P3.1) when a face has no usable native (u,v): the face's tessellation from
|
||||
`BoundarySurface` gets a discrete chart. The one-to-one check is an exact `orient2d` per triangle.
|
||||
Floater, *Mean value coordinates*, CAGD 20(1):19–27, 2003, DOI [10.1016/S0167-8396(03)00002-5](https://doi.org/10.1016/S0167-8396(03)00002-5).
|
||||
|
||||
**S3.8 Chae, Park, Choi 2006, Mesh generation on poorly parameterized free-form surfaces.** **Verdict: reference (risk evidence).**
|
||||
- **Citation.** Proc. IMechE B 220(2):295–306, 2006. DOI [10.1243/095440506X77634](https://doi.org/10.1243/095440506X77634).
|
||||
Also Chae and Kwon, *Quadrilateral mesh generation on trimmed NURBS surfaces*, KSME Int. J. 15(5):592–601,
|
||||
2001 (KoreaScience page HTTP 200: <https://koreascience.or.kr/article/JAKO200111920737275.page>). *Read:* abstract.
|
||||
- **Problem.** NURBS with bad parametrization (uneven knots, near-degenerate derivatives) make (u,v) meshers
|
||||
fail or produce ill-conditioned meshes; their fix is to regenerate the surface.
|
||||
|
||||
---
|
||||
|
||||
## S4. Cross fields (orientation for alignment)
|
||||
|
||||
**S4.1 Knöppel, Crane, Pinkall, Schröder 2013, Globally optimal direction fields.** **Verdict: build on (field computation on curved faces).**
|
||||
- **Citation.** ACM TOG 32(4), 2013. DOI [10.1145/2461912.2462005](https://doi.org/10.1145/2461912.2462005). *Read:* metadata.
|
||||
- **Method.** The smoothest n-direction field (n = 4 for crosses) on a triangulated surface from one sparse
|
||||
linear solve (or a small eigenproblem) of a connection Laplacian; boundary alignment as a constraint.
|
||||
Handles curvature correctly through the discrete connection.
|
||||
- **Code.** geometry-central (`nmwsharp/geometry-central`) is **MIT: READ OK** (it implements this paper).
|
||||
- **Why this one.** One linear solve, no mixed-integer step; the connection makes it correct on curved faces
|
||||
where a plain (u,v) angle field is not.
|
||||
|
||||
**S4.2 Remacle et al. 2013 (cross field part), Beaufort et al. 2017, Viertel and Osting 2019: Ginzburg–Landau / harmonic cross fields.** **Verdict: reference (the CAD-meshing variant of S4.1).**
|
||||
- **Citations.** Beaufort, Lambrechts, Henrotte, Geuzaine, Remacle, *Computing cross fields: a PDE approach
|
||||
based on the Ginzburg–Landau theory*, Procedia Eng. 203:219–231, 2017, DOI [10.1016/j.proeng.2017.09.799](https://doi.org/10.1016/j.proeng.2017.09.799).
|
||||
Viertel, Osting, *An approach to quad meshing based on harmonic cross-valued maps and the Ginzburg–Landau
|
||||
theory*, SISC 41(1):A452–A479, 2019, DOI [10.1137/17M1142703](https://doi.org/10.1137/17M1142703). *Read:* metadata.
|
||||
- **Method.** Represent the cross by (cos 4θ, sin 4θ); solve Laplace with boundary-aligned Dirichlet data
|
||||
(Remacle 2013, S5.1: two Laplace solves, valid as-is only for conformal charts), or relax the unit-norm
|
||||
constraint with a Ginzburg–Landau penalty and alternate diffusion and normalization (the MBO-style scheme
|
||||
that Reberol 2021, S5.4, uses per CAD face on edges with Crouzeix–Raviart interpolation).
|
||||
|
||||
**S4.3 Ray, Vallet, Li, Lévy 2008; Palacios and Zhang 2007: N-symmetry field design.** **Verdict: reference.**
|
||||
- **Citations.** Ray et al., ACM TOG 27(2), 2008, DOI [10.1145/1356682.1356683](https://doi.org/10.1145/1356682.1356683). Palacios, Zhang,
|
||||
*Rotational symmetry field design on surfaces*, ACM TOG 26(3), 2007 (DOI not re-checked; see Unverified).
|
||||
|
||||
**S4.4 Panozzo, Puppo, Tarini, Sorkine-Hornung 2014, Frame fields; Jiang et al. 2015, metric customization; Desobry et al. 2021, non-orthogonal frame fields.** **Verdict: reference (anisotropic shells later).**
|
||||
- **Citations.** ACM TOG 33(4), 2014, DOI [10.1145/2601097.2601179](https://doi.org/10.1145/2601097.2601179). Jiang, Fang, Huang, Bao, Tong,
|
||||
Desbrun, ACM TOG 34(4), 2015, DOI [10.1145/2766927](https://doi.org/10.1145/2766927). Desobry, Coudert-Osmont, Corman, Ray, Sokolov,
|
||||
CAD 139:103081, 2021, DOI [10.1016/j.cad.2021.103081](https://doi.org/10.1016/j.cad.2021.103081). *Read:* metadata.
|
||||
- **Use.** Anisotropic and non-orthogonal frames (stretched quads along fillets and stiffener runs). Not needed
|
||||
for isotropic shells v1.
|
||||
|
||||
**S4.5 Dielen et al. 2021; Dong et al. 2025 (NeurCross): learned cross fields.** **Verdict: ignore for now.**
|
||||
- **Citations.** CGF 40(5):181–191, 2021, DOI [10.1111/cgf.14366](https://doi.org/10.1111/cgf.14366); ACM TOG 44(4), 2025,
|
||||
DOI [10.1145/3731159](https://doi.org/10.1145/3731159). No determinism or robustness guarantee; trained on third-party data.
|
||||
|
||||
---
|
||||
|
||||
## S5. Cross-field-guided frontal point insertion (the modern "marching front")
|
||||
|
||||
**S5.1 Remacle, Henrotte, Carrier-Baudouin, Béchet, Marchandise, Geuzaine, Mouton 2013, A frontal Delaunay quad mesh generator using the L∞ norm ("Delquad").** **Verdict: BUILD ON (core of the point placement). Paper only: implementation is in Gmsh (GPL).**
|
||||
- **Citation.** IJNME 94(5):494–512, 2013. DOI [10.1002/nme.4458](https://doi.org/10.1002/nme.4458). Preprint (HTTP 200):
|
||||
<http://gmsh.info/doc/preprints/gmsh_quad2_preprint.pdf>. *Read:* full (preprint; numbers below are the
|
||||
preprint's and may differ slightly in the journal version).
|
||||
- **Method.**
|
||||
- §2: meshing in (u,v) with the metric tensor M = [S_u·S_u, S_u·S_v; S_v·S_u, S_v·S_v]; for a **conformal**
|
||||
parametrization the (u,v) size is δ'(u) = δ(x(u)) |det M|^(−1/4). Non-conformal faces are reparametrized
|
||||
(§2 says so explicitly).
|
||||
- §3: cross field by two Laplace solves for cos 4θ, sin 4θ with boundary-aligned Dirichlet data.
|
||||
- §4–§5: frontal-Delaunay (Rebay, S3.4) in which sizes and the "ideal" new point are measured in the
|
||||
**L∞ norm in the local cross-field frame**. A right isosceles triangle is equilateral in L∞, so the
|
||||
triangulation is made of nearly right triangles aligned with the field, with √3/2 ≈ 0.866 times the
|
||||
vertices of an equilateral one (the measured ratio was 0.87). Fronts are processed layer by layer.
|
||||
Connection uses the ordinary L2 Delaunay kernel (§5: the L∞ and L2 Delaunay triangulations differed by
|
||||
5 flips on their example).
|
||||
- §7: recombination with Blossom-Quad (S6.2).
|
||||
- **Results (preprint).** Car hood (18 Bézier faces): Delquad + Blossom gives mean quad quality 0.90, worst
|
||||
0.37, 81% of vertices of valence 4, versus 0.77 / 0.37 / 71% for an ordinary frontal triangulation
|
||||
recombined the same way (Fig. 17). Mechanical part, 114 faces, 66,998 quads in 40 s including cross fields
|
||||
and reparametrization: mean 0.95, worst 0.1, 91% valence-4 (§8.1). Quality measure (§6.1):
|
||||
η = max(1 − (2/π)·max_k |π/2 − α_k|, 0).
|
||||
- **Robustness.** Inherits Delaunay's "a valid mesh exists at every step": no front collision cases.
|
||||
- **Limits.** Conformal-parametrization assumption; recombination may leave triangles unless a perfect
|
||||
matching exists; irregular vertices where fronts meet (§7).
|
||||
- **Complexity.** Same as frontal-Delaunay triangulation, O(n log n); "tens of thousands of elements a minute"
|
||||
(§1) in 2010-era hardware.
|
||||
- **Why it matters here.** It is a marching front, but one whose collisions cannot fail, and it is a small
|
||||
change to machinery ModelCraft already has (Bowyer–Watson, constrained recovery, recombination).
|
||||
|
||||
**S5.2 Georgiadis, Beaufort, Lambrechts, Remacle 2017, High quality mesh generation using cross and asterisk fields.** **Verdict: reference.**
|
||||
- **Citation.** arXiv <https://arxiv.org/abs/1706.02236>, 2017. *Read:* abstract.
|
||||
- **Method.** Points generated by an advancing front *along the cross field* using only the background mesh,
|
||||
multi-threaded; right-angled triangulations recombined with Blossom-Quad, with a right-triangle quality
|
||||
criterion relative to the local cross.
|
||||
|
||||
**S5.3 Pellenard et al. 2014, QMCF.** See S2.6 (the Q-Morph route to the same goal).
|
||||
|
||||
**S5.4 Reberol, Georgiadis, Remacle 2021, Quasi-structured quadrilateral meshing in Gmsh: a robust pipeline for complex CAD models.** **Verdict: BUILD ON (the pipeline shape and the cleanup). Paper only (Gmsh is GPL).**
|
||||
- **Citation.** arXiv <https://arxiv.org/abs/2103.04652>, 2021 (no journal version found in Crossref/DBLP). *Read:* full (HTML version).
|
||||
- **Pipeline (§1.1).** (1) scaled cross field per CAD face on an initial triangulation (§3: MBO-style heat
|
||||
diffusion + normalization, multi-level, boundary-aligned Dirichlet; conformal scaling H from
|
||||
min ∫|∇H − ∇⊥θ|², size h = e^H); (2) global size map from prescribed sizes, small CAD features and the
|
||||
cross-field scaling (§4); (3) mesh CAD curves under topological constraints (§4.3); (4) mesh simple faces
|
||||
matching predefined patterns (§6.1.2); (5) remaining faces: frontal point insertion along the scaled cross
|
||||
field with a Delaunay kernel, greedy recombination (not Blossom) by quad quality weighted by alignment,
|
||||
merges accepted while SICN > 0.1, then midpoint subdivision (quad → 4, triangle → 3) with snapping to the
|
||||
CAD surface and revert on negative quality (§5); smoothing in (u,v) (§5.3); (6) topology changes to remove
|
||||
irregular vertices that do not match cross-field singularities: local *disk quadrangulations* (§6.3,
|
||||
valence-driven, interior valence 3–5) and cavity remeshing with predefined patterns (§6.2). Every operation
|
||||
is reverted when it invalidates or degrades elements.
|
||||
- **Results (§7, Table 1).** MAMBO 114 models: min SICN 0.53, mean 0.98, irregular vertices 1.24% → 0.27%,
|
||||
9.6 s + 4.6 s; all 114 valid. ABC 1000 random "not too simple" models: min SICN 0.44, mean 0.96, irregular
|
||||
2.2% → 0.74%; 988/1000 valid (2 tangled, 10 Delaunay-insertion or resource failures); median whole pipeline
|
||||
18 s single-threaded.
|
||||
- **Limits (§8, and in text).** Irregular vertices left by curve quantization cannot be removed within one face;
|
||||
slow on faces over 100k vertices; acute corners (< 45°) need artificial singularities; size-map vs
|
||||
cross-field compatibility "still open".
|
||||
- **Why it matters here.** Strongest published evidence on CAD B-reps for any automatic all-quad method, and
|
||||
it uses **the same tri → recombine → split guarantee ModelCraft already ships**, with better point placement
|
||||
in front of it and cleanup behind it. It is the template for P.
|
||||
- **Data caveat.** Both datasets are excluded for our own tests (see `literature.md` Part C); we cite the numbers only.
|
||||
|
||||
**S5.5 Tchon and Camarero 2006; Lévy and Liu 2010; Ekelschot et al. 2018: L∞/Lp point optimization for quad-dominant meshes.** **Verdict: reference.**
|
||||
- **Citations.** Tchon, Camarero, *Quad-dominant mesh adaptation using specialized simplicial optimization*,
|
||||
IMR 15, pp. 21–38, DOI [10.1007/978-3-540-34958-7_2](https://doi.org/10.1007/978-3-540-34958-7_2). Lévy, Liu, *Lp centroidal Voronoi tessellation and
|
||||
its applications*, ACM TOG 29(4), 2010, DOI [10.1145/1778765.1778856](https://doi.org/10.1145/1778765.1778856) (geogram, BSD-3 core:
|
||||
READ OK). Ekelschot, Ceze, Garai, Murman, *Robust metric aligned quad-dominant meshing using Lp centroidal
|
||||
Voronoi tessellation*, AIAA SciTech 2018, DOI [10.2514/6.2018-1501](https://doi.org/10.2514/6.2018-1501). *Read:* metadata.
|
||||
- **Relevance.** Global smoothing alternatives to frontal placement. S5.1 reports Tchon 84% quads and 101 s for
|
||||
972 quads, Lévy 322 s for ~1000 elements (preprint §1): far slower than frontal insertion.
|
||||
|
||||
---
|
||||
|
||||
## S6. Triangle-to-quad conversion
|
||||
|
||||
**S6.1 Lee and Lo 1994 + Catmull–Clark split (shipped in `quad::free`).** See `literature.md` B7.2. **Verdict: BUILD ON (keep as the all-quad guarantee).**
|
||||
- The split halves the size: points are placed at 2h and the final mesh is at h. Reberol 2021 (S5.4) uses the
|
||||
same split ("midpoint subdivision") after a frontal, aligned point placement and reports the cleanup removes
|
||||
most of the irregular vertices it introduces.
|
||||
|
||||
**S6.2 Remacle et al. 2012, Blossom-Quad.** **Verdict: reference (optional upgrade of the matching). Paper only.**
|
||||
- **Citation.** IJNME 89(9):1102–1119, 2012. DOI [10.1002/nme.3279](https://doi.org/10.1002/nme.3279). *Read:* metadata.
|
||||
- **Note.** Reberol 2021 replaced Blossom with a greedy, alignment-weighted matching followed by the split, which
|
||||
removes the "perfect matching may not exist" failure and the cubic-time matching. That supports keeping
|
||||
ModelCraft's greedy matching.
|
||||
|
||||
**S6.3 Ramaswami, Ramos, Toussaint 1998, Converting triangulations to quadrangulations.** **Verdict: reference (theory).**
|
||||
- **Citation.** CGTA 9(4):257–276, 1998. DOI [10.1016/S0925-7721(97)00019-9](https://doi.org/10.1016/S0925-7721(97)00019-9).
|
||||
|
||||
---
|
||||
|
||||
## S7. Global parametrization and field-aligned remeshing (graphics family)
|
||||
|
||||
Common property: they remesh a *triangle mesh* into quads aligned with a field. None natively takes prescribed
|
||||
boundary nodes shared with neighbouring faces or parts, which is what conformity across B-rep edges needs.
|
||||
|
||||
**S7.1 Kälberer, Nieser, Polthier 2007, QuadCover.** **Verdict: reference.**
|
||||
- **Citation.** CGF 26(3):375–384, 2007. DOI [10.1111/j.1467-8659.2007.01060.x](https://doi.org/10.1111/j.1467-8659.2007.01060.x).
|
||||
- **Method.** Branched-covering parametrization from a cross field (curvature-aligned); integer grid lines give quads.
|
||||
- **Code.** No official open-source implementation found; Polthier group's JavaView is not open source.
|
||||
|
||||
**S7.2 Ray, Li, Lévy, Sheffer, Alliez 2006, Periodic global parameterization.** **Verdict: reference.**
|
||||
- **Citation.** ACM TOG 25(4):1460–1485, 2006. DOI [10.1145/1183287.1183297](https://doi.org/10.1145/1183287.1183297).
|
||||
|
||||
**S7.3 Bommes, Zimmer, Kobbelt 2009, Mixed-integer quadrangulation (MIQ).** **Verdict: reference.**
|
||||
- **Citation.** ACM TOG 28(3), 2009. DOI [10.1145/1531326.1531383](https://doi.org/10.1145/1531326.1531383).
|
||||
- **Method.** Cross field with integer period jumps, then a seamless parametrization by greedy mixed-integer
|
||||
rounding; feature curves become integer iso-lines.
|
||||
- **Limits.** Greedy rounding can produce degenerate or folded charts; needs QEx (S7.6) to extract.
|
||||
- **Code.** libigl `copyleft/comiso` (CoMISo, **GPL**: FORBIDDEN). libigl core is MPL-2.0 (READ OK) but GitHub
|
||||
reports GPL-3.0 for the repo because both licence files exist.
|
||||
|
||||
**S7.4 Bommes, Campen, Ebke, Alliez, Kobbelt 2013, Integer-grid maps for reliable quad meshing; Myles, Pietroni, Zorin 2014, Robust field-aligned global parametrization.** **Verdict: reference.**
|
||||
- **Citations.** ACM TOG 32(4), 2013, DOI [10.1145/2461912.2462014](https://doi.org/10.1145/2461912.2462014). ACM TOG 33(4), 2014,
|
||||
DOI [10.1145/2601097.2601154](https://doi.org/10.1145/2601097.2601154).
|
||||
|
||||
**S7.5 Campen, Bommes, Kobbelt 2015, Quantized global parametrization; Campen and Zorin 2017; Lyon, Campen, Kobbelt 2021; Heistermann, Warnett, Bommes 2023; Coudert-Osmont et al. 2023.** **Verdict: reference (quantization is the robust part of this family now).**
|
||||
- **Citations.**
|
||||
- Campen, Bommes, Kobbelt, ACM TOG 34(6), 2015, DOI [10.1145/2816795.2818140](https://doi.org/10.1145/2816795.2818140) (motorcycle-graph T-mesh, valid IGM by construction).
|
||||
- Campen, Zorin, *Similarity maps and field-guided T-splines: a perfect couple*, ACM TOG 36(4), 2017, DOI [10.1145/3072959.3073647](https://doi.org/10.1145/3072959.3073647).
|
||||
- Campen, Shen, Zhou, Zorin, *Seamless parametrization with arbitrary cones for arbitrary genus*, ACM TOG 39(1), 2019, DOI [10.1145/3360511](https://doi.org/10.1145/3360511).
|
||||
- Lyon, Campen, Kobbelt, *Quad layouts via constrained T-mesh quantization*, CGF 40(2):305–314, 2021, DOI [10.1111/cgf.142634](https://doi.org/10.1111/cgf.142634); *Simpler quad layouts using relaxed singularities*, CGF 40(5):169–180, 2021, DOI [10.1111/cgf.14365](https://doi.org/10.1111/cgf.14365).
|
||||
- Heistermann, Warnett, Bommes, *Min-deviation-flow in bi-directed graphs for T-mesh quantization*, ACM TOG 42(4), 2023, DOI [10.1145/3592437](https://doi.org/10.1145/3592437).
|
||||
- Coudert-Osmont, Desobry, Heistermann, Bommes, Ray, Sokolov, *Quad mesh quantization without a T-mesh*, CGF 43(1), 2024 (issue dated 2023 online), DOI [10.1111/cgf.14928](https://doi.org/10.1111/cgf.14928). *Read:* abstract (operates on a decimated surface instead of a T-mesh; "easier to implement and to adapt to constraints such as free boundaries, complex feature curves").
|
||||
- **Code.** `cgg-bern/libsatsuma` (BiMDF solvers) **MIT: READ OK**; `cgg-bern/quadwild-bimdf` **GPL-3.0: FORBIDDEN**.
|
||||
|
||||
**S7.6 Ebke, Bommes, Campen, Kobbelt 2013, QEx: robust quad mesh extraction.** **Verdict: reference.**
|
||||
- **Citation.** ACM TOG 32(6), 2013. DOI [10.1145/2508363.2508372](https://doi.org/10.1145/2508363.2508372).
|
||||
- **Code.** `hcebke/libQEx` **GPL-3.0: FORBIDDEN**.
|
||||
|
||||
**S7.7 Lyon, Campen, Bommes, Kobbelt 2019, Parametrization quantization with free boundaries for trimmed quad meshing.** **Verdict: reference (relevant to trimmed faces, wrong output type).**
|
||||
- **Citation.** ACM TOG 38(4), 2019. DOI [10.1145/3306346.3323019](https://doi.org/10.1145/3306346.3323019).
|
||||
- **Relevance.** Quad meshes *trimmed* by the boundary (quads cut by trimming curves, not aligned to it). For
|
||||
FE we need boundary-conforming elements with shared boundary nodes, so this is not a direct fit.
|
||||
|
||||
**S7.8 Jakob, Tarini, Panozzo, Sorkine-Hornung 2015, Instant field-aligned meshes.** **Verdict: reference.**
|
||||
- **Citation.** ACM TOG 34(6), 2015. DOI [10.1145/2816795.2818078](https://doi.org/10.1145/2816795.2818078).
|
||||
- **Method.** Local smoothing of an orientation field and a position field (both with 4-RoSy / lattice
|
||||
symmetry), then extraction. Very fast, quad-dominant, may leave non-quad faces and defects.
|
||||
- **Code.** `wjakob/instant-meshes` **BSD-3+: READ OK**.
|
||||
|
||||
**S7.9 Huang, Zhou, Nießner, Shewchuk, Guibas 2018, QuadriFlow.** **Verdict: reference.**
|
||||
- **Citation.** CGF 37(5):147–160, 2018. DOI [10.1111/cgf.13498](https://doi.org/10.1111/cgf.13498).
|
||||
- **Method.** Instant-Meshes-style fields with singularity reduction by min-cost flow plus a SAT step for
|
||||
orientation/position consistency.
|
||||
- **Code.** `hjwdzh/QuadriFlow` **BSD-3+: READ OK**; bundled `3rd/MapleCOMSPS_LRB` (SAT solver) and `lemon`
|
||||
have their own licences, not checked: do not open those directories.
|
||||
|
||||
**S7.10 Pietroni, Nuvoli, Alderighi, Cignoni, Tarini 2021, Reliable feature-line driven quad-remeshing (QuadWild).** **Verdict: reference.**
|
||||
- **Citation.** ACM TOG 40(4), 2021. DOI [10.1145/3450626.3459941](https://doi.org/10.1145/3450626.3459941). PDF (author copy):
|
||||
<https://vcg-legacy.isti.cnr.it/Publications/2021/PNACT21/ReliableQuad.pdf>. *Read:* abstract.
|
||||
- **Method.** Field-traced patch layout respecting feature lines, patches quantized by an ILP, each patch
|
||||
quadrangulated. Reported failure rate < 0.5% over Thingi10K.
|
||||
- **Code.** `nicopietroni/quadwild` **GPL-3.0: FORBIDDEN** (depends on vcglib, also GPL-3.0).
|
||||
- **Relevance.** The most robust remesher in this family, but a remesher of triangle meshes; boundary nodes
|
||||
are not prescribed.
|
||||
|
||||
**S7.11 Alliez et al. 2003; Marinov and Kobbelt 2006; Zhang et al. 2010: curvature-line and wave-based quad-dominant remeshing.** **Verdict: reference.**
|
||||
- **Citations.** *Anisotropic polygonal remeshing*, ACM TOG 22(3):485–493, 2003, DOI [10.1145/882262.882296](https://doi.org/10.1145/882262.882296).
|
||||
*A robust two-step procedure for quad-dominant remeshing*, CGF 25(3):537–546, 2006, DOI [10.1111/j.1467-8659.2006.00973.x](https://doi.org/10.1111/j.1467-8659.2006.00973.x).
|
||||
*A wave-based anisotropic quadrangulation method*, ACM TOG 29(4), 2010, DOI [10.1145/1778765.1778855](https://doi.org/10.1145/1778765.1778855).
|
||||
|
||||
---
|
||||
|
||||
## S8. Layouts, block decomposition and mapped/submapped faces
|
||||
|
||||
**S8.1 Tam and Armstrong 1991, medial axis subdivision; Fogg, Armstrong, Robinson 2015, multiblock decompositions of surfaces.** **Verdict: reference (structured shells later).**
|
||||
- **Citations.** Adv. Eng. Softw. 13(5–6):313–324, 1991, DOI [10.1016/0961-3552(91)90035-3](https://doi.org/10.1016/0961-3552(91)90035-3). IJNME 101(13):965–991, 2015,
|
||||
DOI [10.1002/nme.4825](https://doi.org/10.1002/nme.4825).
|
||||
- **Relevance.** The Belfast group's route for shell structures: decompose into four-sided blocks, map each.
|
||||
|
||||
**S8.2 Whiteley, White, Benzley, Blacker 1996, submapping; Ruiz-Gironés and Sarrate 2010.** **Verdict: BUILD ON (mapped faces first).**
|
||||
- **Citations.** *Two and three-quarter dimensional meshing facilitators*, Eng. Comput. 12:144–154, 1996,
|
||||
DOI [10.1007/BF01198730](https://doi.org/10.1007/BF01198730). *Generation of structured meshes in multiply connected surfaces using submapping*, Adv. Eng. Softw.
|
||||
41(2):379–387, 2010, DOI [10.1016/j.advengsoft.2009.06.009](https://doi.org/10.1016/j.advengsoft.2009.06.009). *Read:* metadata.
|
||||
- **Use.** Many SolidCraft faces are four-sided in (u,v) (cylinder walls, fillets, extrusion sides). TFI
|
||||
(`quad::tfi`) in (u,v) with metric-aware boundary spacing gives perfect quads there; Reberol 2021 step 4 does
|
||||
the same with "patterns". Submapping extends this to faces with corners at multiples of 90°.
|
||||
|
||||
**S8.3 Kowalski, Ledoux, Frey 2013; Jezdimirović et al. 2021: PDE- and singularity-driven partitions.** **Verdict: reference.**
|
||||
- **Citations.** IMR 21, pp. 137–154, DOI [10.1007/978-3-642-33573-0_9](https://doi.org/10.1007/978-3-642-33573-0_9). *Quad layouts with high valence
|
||||
singularities for flexible quad meshing*, arXiv <https://arxiv.org/abs/2103.02939>, 2021. *Read:* abstract (2021).
|
||||
|
||||
**S8.4 Bunin 2008, A continuum theory for unstructured mesh generation in two dimensions.** **Verdict: reference (theory of where singularities must go).**
|
||||
- **Citation.** CAGD 25(1):14–40, 2008. DOI [10.1016/j.cagd.2007.05.002](https://doi.org/10.1016/j.cagd.2007.05.002).
|
||||
|
||||
---
|
||||
|
||||
## S9. Quality improvement: topological cleanup, smoothing, untangling
|
||||
|
||||
**S9.1 Kinney 1997, CleanUp: improving quadrilateral finite element meshes.** **Verdict: BUILD ON (operation catalogue).**
|
||||
- **Citation.** P. Kinney, Proc. 6th International Meshing Roundtable, pp. 437–447, 1997. PDF (HTTP 200):
|
||||
<https://people.eecs.berkeley.edu/~jrs/meshpapers/Kinney.pdf>. *Read:* abstract.
|
||||
- **Method.** Heuristic connectivity cleanup (node valence), boundary and flange patterns, shape and size
|
||||
cleanup; used behind paving in CUBIT.
|
||||
|
||||
**S9.2 Canann, Muthukrishnan, Phillips 1998, Topological improvement procedures for quadrilateral finite element meshes.** **Verdict: BUILD ON.**
|
||||
- **Citation.** Eng. Comput. 14(2):168–177, 1998. DOI [10.1007/BF01213591](https://doi.org/10.1007/BF01213591). *Read:* metadata.
|
||||
- **Method.** Local operations (doublet removal, diagonal collapse/flip, edge swap, boundary-specific
|
||||
operations) to drive valences toward 4 (interior) and to the ideal boundary valence.
|
||||
|
||||
**S9.3 Reberol 2021 disk quadrangulations (S5.4 §6.3); Bommes, Lempfer, Kobbelt 2011, global structure optimization; Verma and Suresh 2015/2017.** **Verdict: BUILD ON (Reberol's local operator); reference (others).**
|
||||
- **Citations.** Bommes et al., CGF 30(2):375–384, 2011, DOI [10.1111/j.1467-8659.2011.01868.x](https://doi.org/10.1111/j.1467-8659.2011.01868.x). Verma,
|
||||
Suresh, *A robust combinatorial approach to reduce singularities in quadrilateral meshes*, Procedia Eng.
|
||||
124:252–264, 2015, DOI [10.1016/j.proeng.2015.10.137](https://doi.org/10.1016/j.proeng.2015.10.137); CAD 85:99–110, 2017,
|
||||
DOI [10.1016/j.cad.2016.07.008](https://doi.org/10.1016/j.cad.2016.07.008). *Read:* metadata (Bommes, Verma).
|
||||
- **Why Reberol's operator.** It is a single generic operation (replace a cavity by the best enumerated disk
|
||||
quadrangulation by an irregularity score, revert if quality drops), not a catalogue of special cases, and
|
||||
it has the published CAD-scale evidence (S5.4).
|
||||
|
||||
**S9.4 Daniels, Silva, Shepherd, Cohen 2008; Tarini et al. 2010: quad mesh simplification; Shepherd et al. 2010: adaptive coarsening.** **Verdict: reference.**
|
||||
- **Citations.** ACM TOG 27(5), 2008, DOI [10.1145/1409060.1409101](https://doi.org/10.1145/1409060.1409101). CGF 29(2):407–418, 2010,
|
||||
DOI [10.1111/j.1467-8659.2009.01610.x](https://doi.org/10.1111/j.1467-8659.2009.01610.x). FEAD 46:17–32, 2010, DOI [10.1016/j.finel.2009.06.024](https://doi.org/10.1016/j.finel.2009.06.024).
|
||||
|
||||
**S9.5 Zhou and Shimada 2000, An angle-based approach to two-dimensional mesh smoothing.** **Verdict: BUILD ON (cheap smoother for quads).**
|
||||
- **Citation.** Proc. 9th International Meshing Roundtable, pp. 373–384, 2000. PDF (HTTP 200):
|
||||
<https://www.andrew.cmu.edu/user/shimada/papers/00-imr-zhou.pdf>. *Read:* abstract.
|
||||
- **Method.** Move each node to equalize adjacent angles; fewer inversions than Laplacian, much cheaper than
|
||||
optimization. On a surface: run in the tangent plane, map back through (u,v).
|
||||
- Related: Xu, Newman, *An angle-based optimization approach for 2D finite element mesh smoothing*, FEAD
|
||||
42(13):1150–1164, 2006, DOI [10.1016/j.finel.2006.01.016](https://doi.org/10.1016/j.finel.2006.01.016).
|
||||
|
||||
**S9.6 Escobar, Montero, Montenegro, Rodríguez 2005/2006, smoothing surface triangulations on a local parametric space; Ruiz-Gironés et al. 2015, simultaneous untangling and smoothing of quads and hexes.** **Verdict: BUILD ON (worst-element optimization and untangling on surfaces).**
|
||||
- **Citations.** IJNME 66:740–760, 2006 (online 2005), DOI [10.1002/nme.1584](https://doi.org/10.1002/nme.1584). Adv. Eng. Softw. 80:12–24, 2015,
|
||||
DOI [10.1016/j.advengsoft.2014.09.021](https://doi.org/10.1016/j.advengsoft.2014.09.021). *Read:* metadata.
|
||||
- **Use.** Extends the planar Freitag–Plassmann untangling already in `quad::smooth` to nodes that move in
|
||||
(u,v) while quality is measured on the surface. Garanzha et al. 2021 (`literature.md` B6.4,
|
||||
DOI [10.1145/3450626.3459847](https://doi.org/10.1145/3450626.3459847)) is the global alternative.
|
||||
|
||||
---
|
||||
|
||||
## S10. Element quality for shells
|
||||
|
||||
**S10.1 Knupp 2001, Algebraic mesh quality metrics.** **Verdict: BUILD ON** (scaled Jacobian, shape; already used).
|
||||
- SISC 23(1):193–218, 2001. DOI [10.1137/S1064827500371499](https://doi.org/10.1137/S1064827500371499).
|
||||
|
||||
**S10.2 Robinson 1987, Some new distortion measures for quadrilaterals; Yuan, Huang, Pian 1994.** **Verdict: BUILD ON (warp and taper for non-planar quads).**
|
||||
- **Citations.** FEAD 3(3):183–197, 1987, DOI [10.1016/0168-874X(87)90023-0](https://doi.org/10.1016/0168-874X(87)90023-0). Yuan et al., *Inverse
|
||||
mapping and distortion measures for quadrilaterals with curved boundaries*, IJNME 37(5):861–875, 1994,
|
||||
DOI [10.1002/nme.1620370510](https://doi.org/10.1002/nme.1620370510).
|
||||
- **Use.** A quad on a curved face is not planar. MITC4 accepts warped quads but the error grows with warp, so
|
||||
warp angle joins the report.
|
||||
|
||||
**S10.3 Dvorkin and Bathe 1984 (MITC4); Bathe, Iosilevich, Chapelle 2000, An evaluation of the MITC shell elements; Chapelle and Bathe 2011.** **Verdict: reference (what the mesh must serve).**
|
||||
- **Citations.** Eng. Comput. 1(1):77–88, 1984, DOI [10.1108/eb023562](https://doi.org/10.1108/eb023562). C&S 75(1):1–30, 2000,
|
||||
DOI [10.1016/S0045-7949(99)00214-X](https://doi.org/10.1016/S0045-7949(99)00214-X). *The Finite Element Analysis of Shells – Fundamentals*, 2nd ed.,
|
||||
Springer 2011, DOI [10.1007/978-3-642-16408-8](https://doi.org/10.1007/978-3-642-16408-8).
|
||||
- **Use.** Bathe et al. 2000 evaluate MITC elements on distorted meshes; that is the model for our "free mesh vs
|
||||
structured mesh" convergence comparison in P5.
|
||||
|
||||
---
|
||||
|
||||
## S11. Through-thickness: swept quads for continuum shells
|
||||
|
||||
**S11.1 Staten, Canann, Owen 1999, BMSweep; Roca and Sarrate 2010, least-squares projection for sweeping.** **Verdict: BUILD ON (M5/M8 sweep).**
|
||||
- **Citations.** Eng. Comput. 15(3):212–218, 1999, DOI [10.1007/s003660050016](https://doi.org/10.1007/s003660050016). Eng. Comput. 26(4):391–406, 2010,
|
||||
DOI [10.1007/s00366-009-0172-z](https://doi.org/10.1007/s00366-009-0172-z). *Read:* metadata.
|
||||
- **Use.** A thin-walled solid: mesh the source skin with the shell quad mesher, sweep to the target skin
|
||||
(one-to-one sweep), side faces mapped by TFI with n layers. The source and target must share the source's
|
||||
topology, so the target is *not* meshed independently.
|
||||
|
||||
**S11.2 Hauptmann and Schweizerhof 1998; Vu-Quoc and Tan 2003: solid-shell elements.** **Verdict: reference (the element on top, M8).**
|
||||
- **Citations.** IJNME 42(1):49–69, 1998, DOI [10.1002/(SICI)1097-0207(19980515)42:1<49::AID-NME349>3.0.CO;2-2](https://doi.org/10.1002/(SICI)1097-0207(19980515)42:1%3C49::AID-NME349%3E3.0.CO;2-2).
|
||||
CMAME 192(9–10):975–1016, 2003, DOI [10.1016/S0045-7825(02)00435-8](https://doi.org/10.1016/S0045-7825(02)00435-8).
|
||||
- **Mesh requirements they imply.** One or more hex8 layers through the thickness; a consistent stacking
|
||||
direction (bottom face nodes 1–4, top 5–8, normal pointing the same way across the part); the in-plane
|
||||
quad quality of the swept mesh is the shell mesher's.
|
||||
|
||||
**S11.3 Robinson, Armstrong, Fairey 2011, Automated mixed dimensional modelling from 2D and 3D CAD models.** **Verdict: reference (midsurface, M8).**
|
||||
- **Citation.** FEAD 47(2):151–165, 2011. DOI [10.1016/j.finel.2010.08.010](https://doi.org/10.1016/j.finel.2010.08.010).
|
||||
|
||||
---
|
||||
|
||||
## S12. Shell benchmarks (verification of mesh + element)
|
||||
|
||||
| Benchmark | Source | Use |
|
||||
|---|---|---|
|
||||
| Scordelis–Lo roof, pinched cylinder with rigid diaphragms, pinched hemisphere with 18° hole, twisted beam, patch tests on distorted elements | MacNeal, Harder, *A proposed standard set of problems to test finite element accuracy*, FEAD 1(1):3–20, 1985, DOI [10.1016/0168-874X(85)90003-4](https://doi.org/10.1016/0168-874X(85)90003-4); Belytschko, Stolarski, Liu, Carpenter, Ong, *Stress projection for membrane and shear locking in shell finite elements*, CMAME 51(1–3):221–258, 1985, DOI [10.1016/0045-7825(85)90035-0](https://doi.org/10.1016/0045-7825(85)90035-0) (the "shell obstacle course") | Linear statics; mesh convergence on our free meshes vs the published reference values |
|
||||
| Geometrically nonlinear shell set | Sze, Liu, Lo, FEAD 40(11):1551–1569, 2004, DOI [10.1016/j.finel.2003.11.001](https://doi.org/10.1016/j.finel.2003.11.001) (Crossref also holds a duplicate DOI `10.1016/S0168-874X(03)00218-X` for the same paper) | Later (nonlinear steps) |
|
||||
|
||||
Reference values as commonly quoted (confirm from the source PDFs before freezing a fixture): Scordelis–Lo
|
||||
midside free-edge vertical displacement 0.3024 (obstacle course; MacNeal–Harder quote 0.3086); pinched
|
||||
cylinder displacement under the load 1.8248×10⁻⁵ (E = 3×10⁶, P = 1); pinched hemisphere 0.094.
|
||||
|
||||
---
|
||||
|
||||
## S13. Guaranteed-quality theory and other all-quad methods
|
||||
|
||||
**S13.1 Liang, Ebeida, Zhang 2010; Bishop 2016; Rushdi et al. 2017.** **Verdict: reference.**
|
||||
- **Citations.** Liang et al., *Guaranteed-quality all-quadrilateral mesh generation with feature
|
||||
preservation*, CMAME 199(29–32):2072–2083, 2010, DOI [10.1016/j.cma.2010.03.007](https://doi.org/10.1016/j.cma.2010.03.007) (quadtree, angle bounds;
|
||||
IMR 18 version DOI [10.1007/978-3-642-04319-2_4](https://doi.org/10.1007/978-3-642-04319-2_4)). Bishop, *Quadrilateral meshes for PSLGs*, DCG 56(1):1–42,
|
||||
2016, DOI [10.1007/s00454-016-9771-9](https://doi.org/10.1007/s00454-016-9771-9). Rushdi, Mitchell, Mahmoud, Bajaj, Ebeida, *All-quad meshing without
|
||||
cleanup*, CAD 85:83–98, 2017, DOI [10.1016/j.cad.2016.07.009](https://doi.org/10.1016/j.cad.2016.07.009). *Read:* metadata.
|
||||
- **Relevance.** Provable angle bounds, but quadtree orientation artefacts at the boundary (S5.1 Fig. 2 shows
|
||||
the 45°-rotated boundary quads) and no boundary rows: wrong trade for shells.
|
||||
|
||||
**S13.2 Sarrate and Huerta 2000, Efficient unstructured quadrilateral mesh generation.** **Verdict: reference.**
|
||||
- IJNME 49(10):1327–1350, 2000. DOI [10.1002/1097-0207(20001210)49:10<1327::AID-NME996>3.0.CO;2-L](https://doi.org/10.1002/1097-0207(20001210)49:10%3C1327::AID-NME996%3E3.0.CO;2-L). Recursive domain splitting.
|
||||
|
||||
**S13.3 Learning-based quad meshing (Pan et al. 2023; Tong et al. 2023).** **Verdict: ignore.**
|
||||
- Pan, Huang, Cheng, Zeng, Neural Networks 157:288–304, 2023, DOI [10.1016/j.neunet.2022.10.022](https://doi.org/10.1016/j.neunet.2022.10.022). Tong, Qian,
|
||||
Halilaj, Zhang, arXiv <https://arxiv.org/abs/2305.00540> (planar only; trained to predict a commercial
|
||||
mesher's output, which also rules it out under our rules).
|
||||
|
||||
**S13.4 Owen and Saigal 2000, H-Morph.** **Verdict: reference** (the hex analogue of Q-Morph). IJNME 49(1–2):289–312,
|
||||
2000, DOI [10.1002/1097-0207(20000910/20)49:1/2<289::AID-NME934>3.0.CO;2-L](https://doi.org/10.1002/1097-0207(20000910/20)49:1/2%3C289::AID-NME934%3E3.0.CO;2-L).
|
||||
|
||||
---
|
||||
|
||||
## Where the field is today versus 2000s paving/Q-Morph
|
||||
|
||||
- **2000s:** direct paving and Q-Morph gave the best boundary rows; robustness came from heuristics plus
|
||||
CleanUp (Kinney) and topological operations (Canann), and fronts colliding in odd configurations was the
|
||||
standing failure mode. Surface meshing was done in (u,v) with a first-fundamental-form metric (Tristano;
|
||||
Lee; Borouchaki–Laug–George).
|
||||
- **2010s:** orientation moved from "whatever the front does" to an explicit **cross field** computed first
|
||||
(Remacle 2013 Laplace; Knöppel 2013; Ginzburg–Landau 2017–2019). Fronts became **frontal point insertion
|
||||
over a Delaunay kernel** (Delquad), so collisions cannot fail, and recombination became the all-quad step
|
||||
(Blossom-Quad; or greedy matching + split). In graphics, global parametrization (MIQ → IGM → QGP) matured,
|
||||
but with mixed-integer solves and GPL code, and as remeshers of triangle meshes.
|
||||
- **2020s:** the robust CAD pipeline is Reberol 2021: aligned frontal points → recombination → midpoint split
|
||||
(all-quad guarantee) → singularity-aware topological cleanup with quality-monotone reverts. Published: 100%
|
||||
valid on 114 MAMBO models, 98.8% on 1000 ABC models, 0.27–0.74% irregular vertices, min SICN 0.44–0.53.
|
||||
Quantization research (Lyon 2021, Heistermann 2023, Coudert-Osmont 2023) targets *block-structured* layouts;
|
||||
QuadWild (< 0.5% failures on Thingi10K) is the most robust triangle-mesh remesher. Q-Morph-with-a-cross-field
|
||||
exists (QMCF 2014) but I found no evidence it outperforms the frontal-Delaunay route, and nothing new on
|
||||
direct paving beyond preprints.
|
||||
|
||||
---
|
||||
|
||||
## Part P: Recommended plan for ModelCraft shell meshing (opinionated)
|
||||
|
||||
### P1. Position
|
||||
|
||||
**I agree with a cross-field-guided advancing front in (u,v) with a metric and topological cleanup, with one
|
||||
change: the front advances *points over a Delaunay triangulation* (frontal-Delaunay in the cross-field L∞
|
||||
norm, Remacle 2013), not quads (paving) and not triangle-to-quad transformations (Q-Morph).** All-quad comes
|
||||
from the recombination + split ModelCraft already ships, and cleanup follows Reberol 2021.
|
||||
|
||||
Reasons:
|
||||
1. **Closure cannot fail.** A frontal-Delaunay front always sits inside a valid constrained triangulation, so
|
||||
colliding fronts meet in triangles. Paving's collision cases and Q-Morph's edge-recovery and odd-closure
|
||||
cases do not exist. On the `docs`' own terms (robustness outranks features), this decides it.
|
||||
2. **Alignment comes from the field, not the front.** Boundary-aligned Dirichlet data on the cross field gives
|
||||
the boundary-parallel rows analysts want from paving, and the field keeps them coherent where fronts meet.
|
||||
3. **It reuses what exists.** `quad::cdt` (Bowyer–Watson, Sloan recovery, exact predicates), greedy
|
||||
recombination, the Catmull–Clark split, smoothing and the exact validity gate all stay. The new parts are
|
||||
the chart/metric layer, the cross field, the point placement rule, and cleanup.
|
||||
4. **It has the best published CAD evidence** (S5.4).
|
||||
|
||||
What I would not build: direct paving (S1); Q-Morph as the first implementation (S2.1; keep as a possible
|
||||
later point-placement alternative on the same triangulation, see P7); global-parametrization remeshers as the
|
||||
primary shell mesher (S7: no prescribed boundary nodes, mixed-integer solves, mostly GPL code).
|
||||
|
||||
### P2. Pipeline
|
||||
|
||||
For each B-rep face set to be shell-meshed (a sheet body, or chosen faces of a solid):
|
||||
|
||||
1. **Edges first, once, in 3D** (exists): divide each B-rep edge with the shared `SizeField`
|
||||
(`size::divide_polyline`); both faces get the same nodes, so conformity across shared edges holds by
|
||||
construction.
|
||||
2. **Global loop parity** (new): every face loop needs an even node count for the split. Each edge lies on
|
||||
two loops (closed shell) or one (free edge). Choosing which edges get ±1 division so that all loops are even
|
||||
at least cost is a minimum T-join on the face-adjacency graph (Edmonds and Johnson, *Matching, Euler tours
|
||||
and the Chinese postman*, Math. Prog. 5:88–124, 1973, DOI [10.1007/BF01580113](https://doi.org/10.1007/BF01580113)). It is always feasible on a
|
||||
closed shell (the sum of all loop counts is twice the edge total). A greedy shortest-path pairing of odd
|
||||
loops is enough to start; `size::loop_divisions` stays the single-loop case.
|
||||
3. **Chart per face** (new, P3.1): native (u,v) when regular; otherwise a chart switch.
|
||||
4. **Mapped faces first** (exists, extend): faces with four corners in (u,v) and compatible opposite counts get
|
||||
TFI in (u,v) with metric-aware spacing (S8.2). Cylinder walls, extrusion sides and fillets are mostly this
|
||||
case and come out perfect.
|
||||
5. **Free faces** (new, P3.4): boundary-aligned cross field → frontal-Delaunay L∞ point placement at 2h → CDT →
|
||||
greedy recombination weighted by alignment → split → on-surface smoothing.
|
||||
6. **Cleanup** (new, P3.6): disk-quadrangulation cavities and Canann/Kinney local operations, quality-monotone,
|
||||
bounded.
|
||||
7. **Gate** (exists, extend): exact validity in (u,v); 3D quality report; error, never a tangled mesh.
|
||||
|
||||
### P3. Components
|
||||
|
||||
**P3.1 Chart abstraction** (`modelcraft-mesh::surface_mesh::chart` or a new `shell` module; trait in `mesh`,
|
||||
implementation in `geometry`, wired in `engine`, so `mesh` does not depend on `geometry`):
|
||||
`eval(u,v) → [f64;3]`, `derivs(u,v) → (S_u, S_v)` (second derivatives for curvature sizing), `project(p,
|
||||
hint) → (u,v)`, the face's loops as 3D node chains with their (u,v), periodicity and singular points. Native
|
||||
charts come from SolidCraft's kernel surfaces (truck's parametric surfaces already have parameter search, used
|
||||
in 5 SolidCraft kernel files); this needs a new **public** face-surface API in `solidcraft-kernel`, exposed
|
||||
through `modelcraft-geometry` without leaking SolidCraft types. Handling:
|
||||
- **Periodic faces** (cylinder, torus, revolved): the seam edge appears twice in the loop; give its nodes
|
||||
u = 0 on one side and u = period on the other (unwrap by continuity along the loop). The domain becomes simply
|
||||
connected; seam nodes are the same 3D nodes, so conformity across the seam holds.
|
||||
- **Poles** (sphere, cone apex, revolved curve touching the axis): switch chart. Mesh a cap around the pole in
|
||||
an orthographic tangent-plane projection (valid for a cap within a hemisphere), the rest in native (u,v);
|
||||
or, simpler and general, use a discrete chart (S3.7) for the whole face. Remacle–Geuzaine 2022 (S3.6) is the
|
||||
reference if we keep native (u,v) at poles instead.
|
||||
- **Bad parametrizations** (S3.8: near-zero |S_u × S_v| inside the face, extreme metric ratios): the same
|
||||
discrete-chart fallback on the face's tessellation, which `BoundarySurface` already provides.
|
||||
- **Faces from a tagged 3MF** (no B-rep surface): discrete chart only; new nodes projected onto the tessellation.
|
||||
|
||||
**P3.2 Metric.** `M(u,v) = JᵀJ / h(S(u,v))²` with J = [S_u S_v] (S3.1, S2.4). Edge lengths in the metric by the
|
||||
same midpoint quadrature `size.rs` uses. For planes, cylinders and cones away from the apex, JᵀJ is constant
|
||||
or nearly so after an affine rescale of (u,v); do that rescale first, which removes most anisotropy before any
|
||||
metric code runs.
|
||||
|
||||
**P3.3 Size field.** Keep `SizeField` (isotropic, 3D point in, length out). Add a curvature cap
|
||||
`h ≤ ρ_min·θ_max` (θ_max: turning angle per element, chordal-error form `h = √(8ρδ)` from Lo–Lau 1998) and
|
||||
a proximity cap (Owen–Saigal 2000), combined by `min` with the user field and graded (|∇h| ≤ β).
|
||||
Principal curvatures come from the chart's second fundamental form. The cross field's conformal scaling
|
||||
(Reberol §3–§4) is a later refinement.
|
||||
|
||||
**P3.4 Frontal point placement.** Rebay's loop (S3.4) in (u,v): initial CDT of the half-resolution boundary
|
||||
(as `quad::free` does now), triangles classified resolved/active/waiting by the L∞ circumradius *measured in
|
||||
the local cross frame and the metric* (Remacle 2013 §5, generalized from det M^(1/4) to the full metric by
|
||||
mapping the 3D tangent cross through J⁻¹), new point on the L∞ bisector of the active front edge, inserted by
|
||||
Bowyer–Watson, layer by layer. Target size 2h (the split halves it). The Delaunay kernel stays the exact
|
||||
Euclidean in-circle in the affinely rescaled (u,v) (Remacle 2013 §5 found L2 and L∞ kernels nearly identical);
|
||||
the metric only decides where points go.
|
||||
|
||||
**P3.5 Validity.** In (u,v), exact `orient2d` on every element (exists). Given a chart with det J > 0 in the
|
||||
face, a mesh valid in (u,v) maps to a non-folded surface mesh. Quality (scaled Jacobian, angles, warp, aspect)
|
||||
is measured on the 3D quad: corner Jacobians against the surface normal at the corner.
|
||||
|
||||
**P3.6 Cleanup and smoothing.** Reberol §6.3 disk quadrangulations (enumerate small disk quadrangulations of a
|
||||
cavity around an irregular vertex, pick the minimum irregularity score, accept only if the minimum quality does
|
||||
not drop) plus Canann 1998 doublet/diagonal operations for boundary cases. Then smoothing: constrained
|
||||
Laplacian (exists) → angle-based (Zhou–Shimada) → worst-element optimization with untangling (Escobar /
|
||||
Ruiz-Gironés), nodes moving in (u,v), objective in 3D. Every loop bounded, with a "stopped early" report
|
||||
(AGENTS.md).
|
||||
|
||||
**P3.7 Linear algebra placement.** The cross field needs a sparse symmetric solve per face (a few thousand to
|
||||
a few hundred thousand unknowns). `mesh` is L1 and cannot use `solver` (L2). Either a small CG with Jacobi
|
||||
preconditioning inside `mesh` (enough for a Laplace-type system, deterministic), or move a minimal sparse CG
|
||||
into `model` (L0). I recommend the first: a 200-line deterministic CG local to the cross-field module.
|
||||
|
||||
**P3.8 Output.** A quad (and, for quad-dominant mode, quad + triangle) surface mesh with the B-rep face id on
|
||||
every element, B-rep edge ids on boundary node chains, and the existing node-ordering convention, so sets and
|
||||
surfaces "bound to SolidCraft face, edge, vertex and body names" (M3) resolve the same way they do for solids.
|
||||
Quad-dominant mode is the same pipeline without the split (points at h, recombination only): useful when the
|
||||
user prefers fewer elements and accepts some triangles.
|
||||
|
||||
### P4. What "done" looks like
|
||||
|
||||
Quality targets on our own corpus, measured on the 3D elements (each reported per mesh and frozen as fixtures
|
||||
once met):
|
||||
|
||||
| Metric | Hard gate (mesh rejected or region flagged) | Target |
|
||||
|---|---|---|
|
||||
| Validity | every quad valid in (u,v) (exact) and every 3D corner Jacobian > 0 | — |
|
||||
| Conformity | every B-rep edge's node chain identical in both faces; interior edges shared by exactly 2 elements | — |
|
||||
| Min corner angle | ≥ 20° except at CAD corners whose input angle is smaller | ≥ 30° everywhere; ≥ 99% of quads with all angles in [45°, 135°] |
|
||||
| Max corner angle | ≤ 160° | ≤ 150° |
|
||||
| Scaled Jacobian (Knupp, min over corners) | > 0.1 | min ≥ 0.4, mean ≥ 0.9 (Reberol reports min SICN 0.44–0.53, mean 0.96–0.98) |
|
||||
| Warp angle (Robinson) | ≤ 30° | ≤ 10° (driven by the curvature size cap) |
|
||||
| Irregular interior vertices | — | ≤ 2% after cleanup (Reberol 0.27–0.74%; Delquad before cleanup 9–19%) |
|
||||
| Size efficiency τ (Remacle §6.2) | — | ≥ 85% |
|
||||
| Determinism | bit-identical mesh across platforms and thread counts | — |
|
||||
| Robustness | every face of the corpus meshes or returns a located error; no panic under hostile parameters | ≥ 99% of corpus faces mesh without fallback |
|
||||
|
||||
Baseline first: run the current tri → quad split, ported to (u,v) (P6 step 2), over the corpus and record the
|
||||
same table. The new placement and cleanup have to beat it on irregular vertices and min angle, or they do not
|
||||
ship.
|
||||
|
||||
### P5. Verification
|
||||
|
||||
1. **Chart tests** (theory): round-trip eval/project on plane, cylinder, cone, sphere, torus and a SolidCraft
|
||||
NURBS face; seam unwrapping; pole detection; metric equals the analytic first fundamental form.
|
||||
2. **Mesh invariants** (theory): conformity across shared edges, Euler characteristic per face and per shell,
|
||||
every node on its face (distance to S(u,v) zero by construction; to the true surface within kernel tolerance
|
||||
for discrete charts), face tags complete.
|
||||
3. **Corpus** (our own SolidCraft recipes, per AGENTS.md): plates with holes and slots, filleted brackets,
|
||||
bosses and ribs, cylinders and cones with cut-outs, spheres and domes (poles), tori, revolved pressure-vessel
|
||||
heads, lofted/freeform NURBS skins, thin-walled boxes; a hostile series (tiny edges, sliver faces, near-
|
||||
degenerate parametrizations, acute corners). Report the P4 table per part.
|
||||
4. **Shell FE convergence** (published benchmarks, S12): Scordelis–Lo roof, pinched cylinder, pinched
|
||||
hemisphere, each built in SolidCraft from the published description and meshed by *our free mesher*, not a
|
||||
structured grid, at 4–5 refinement levels. Acceptance: converges to the reference within the stated
|
||||
tolerance, and at the two finest levels the free-mesh error is at most 1.5× the error of a structured mapped
|
||||
mesh with the same node count (the structured mesh comes from our TFI). The 1.5× is a proposed threshold to
|
||||
be confirmed by the owner. Plus the MacNeal–Harder distorted-element patch tests on the element itself.
|
||||
5. **Continuum shells** (M8): swept thin-walled parts, stack-direction check, through-thickness layer count,
|
||||
same convergence protocol with the hemisphere and cylinder built as solids.
|
||||
|
||||
### P6. Order of work
|
||||
|
||||
1. **Chart API** in `solidcraft-kernel` (public face-surface evaluation and parameter search) and
|
||||
`modelcraft-geometry` (trait implementation, seams, poles). Done when the P5.1 tests pass.
|
||||
2. **Port the shipped free mesher to (u,v) + metric**: half-resolution CDT and Ruppert refinement in the
|
||||
rescaled (u,v) with metric sizing, recombination, split, smoothing with 3D objective. This gives all-quad
|
||||
conforming meshes on curved faces early, and is the baseline.
|
||||
3. **Loop parity (T-join) and curvature/proximity size field.**
|
||||
4. **Mapped faces in (u,v)** (TFI, then submapping).
|
||||
5. **Cross field** (Knöppel-style connection Laplacian with boundary alignment, local CG) and **frontal L∞
|
||||
placement** with alignment-weighted recombination.
|
||||
6. **Cleanup** (disk quadrangulations, Canann operations) and on-surface smoothing/untangling.
|
||||
7. **Verification suite** (P5.3–P5.4) and fixtures; then sweep to continuum shells (M8).
|
||||
|
||||
### P7. Risks and what happens if wrong
|
||||
|
||||
| Risk | Effect | Mitigation |
|
||||
|---|---|---|
|
||||
| Native parametrizations worse than expected (poles, seams, uneven NURBS knots) | Bad metric, folded charts, failures on real parts | Chart switch to discrete charts (S3.7) built on the existing tessellation; exact one-to-one check per chart |
|
||||
| SolidCraft kernel cannot expose surfaces cleanly (cross-repo change) | Step 1 blocks | Discrete charts on the tessellation from day one work for every face (with projection onto the tessellation); native charts improve accuracy later |
|
||||
| Split halves the resolution: features thinner than ~2h cannot be resolved | Errors on thin slots and slivers | Existing error path ("chords cross"); local refinement of the size field; quad-dominant mode without the split |
|
||||
| Cross-field singularities placed poorly on small CAD features | Extra irregular vertices | Cleanup; Reberol's small-feature size map; accept and report |
|
||||
| Boundary quantization (edge counts) fixes irregular vertices that no in-face operation can remove (Reberol §8) | Irregular count plateaus above target | Make the T-join edge-count choice alignment-aware later (count changes along cross-field-parallel edges are cheaper) |
|
||||
| Metric in-circle or L∞ computations are not exact | Non-determinism or invalid meshes if used for decisions | Only placement uses floats; every topological decision is an exact predicate; validity gate is exact |
|
||||
|
||||
**If the call is wrong**, the two ways are: (a) frontal L∞ placement does not beat the ported split baseline
|
||||
enough to justify itself on engineering parts; or (b) analysts want stricter boundary rows than a cross field
|
||||
yields. Cost is bounded either way: the chart/metric layer, loop parity, size field, mapped faces, cleanup and
|
||||
verification (steps 1–4, 6–7) are needed by every candidate method; only step 5 changes. For (a), keep the
|
||||
baseline placement and invest in cleanup. For (b), implement Q-Morph's front transformation (S2.1, with QMCF's
|
||||
field steering, S2.6) as an alternative placement on the same triangulation and compare on the same corpus.
|
||||
The failure to avoid is building direct paving: its collision cases are where the 2000s methods failed, and
|
||||
nothing since has made them safe.
|
||||
|
||||
---
|
||||
|
||||
## Licence summary of associated code (metadata only; no source read)
|
||||
|
||||
| Repo / code | Licence (as reported) | Status |
|
||||
|---|---|---|
|
||||
| Gmsh (Delquad, Blossom-Quad, quasi-structured quad pipeline, reparametrization) | GPL | FORBIDDEN |
|
||||
| `nicopietroni/quadwild` | GPL-3.0 | FORBIDDEN |
|
||||
| `cgg-bern/quadwild-bimdf` | GPL-3.0 | FORBIDDEN |
|
||||
| `cgg-bern/libsatsuma` (BiMDF solvers) | MIT | READ OK |
|
||||
| `cnr-isti-vclab/vcglib`, `cnr-isti-vclab/meshlab` | GPL-3.0 | FORBIDDEN |
|
||||
| `hjwdzh/QuadriFlow` | BSD-3-Clause + enhancements paragraph (LICENSE.txt); bundled `3rd/` deps not checked | READ OK (top-level code only) |
|
||||
| `wjakob/instant-meshes` | BSD-3-Clause + enhancements paragraph (LICENSE.txt); `ext/` deps not checked | READ OK (top-level code only) |
|
||||
| `hcebke/libQEx` | GPL-3.0 | FORBIDDEN |
|
||||
| libigl | MPL-2.0 core; `include/igl/copyleft/` (CoMISo/MIQ, CGAL, TetGen wrappers) GPL; GitHub reports GPL-3.0 | Core READ OK; `copyleft/` FORBIDDEN |
|
||||
| CoMISo | GPL-3 | FORBIDDEN |
|
||||
| `avaxman/Directional` | no licence file in the repo root, no GitHub licence metadata | NO LICENCE |
|
||||
| `nmwsharp/geometry-central` (Knöppel 2013 fields) | MIT | READ OK |
|
||||
| `pmp-library/pmp-library` | MIT | READ OK |
|
||||
| `mlivesu/cinolib` | MIT | READ OK |
|
||||
| `BrunoLevy/geogram` | BSD-3 except `third_party/` (see `literature.md`) | READ OK with exclusions |
|
||||
| `GeometryCollective/boundary-first-flattening` (conformal parametrization) | MIT | READ OK |
|
||||
| `wildmeshing/TriWild` | MPL-2.0 | READ OK |
|
||||
| `alecjacobson/gptoolbox` | Apache-2.0 | READ OK |
|
||||
| `MmgTools/mmg` (surface remeshing) | LGPL (README; COPYING.LESSER) | FORBIDDEN |
|
||||
| QuadCover, MIQ (original), QGP, Lyon 2019/2021, QMCF, Q-Morph, paving | no public code found | — |
|
||||
|
||||
## Unverified items
|
||||
|
||||
- White and Kinney 1997 (S1.3): no DOI and no PDF fetched; pages 323–335 from Sandia's CUBIT reference list.
|
||||
- Staten and Canann 1997, *Post refinement element shape improvement for quadrilateral meshes*, AMD-Vol. 220:
|
||||
not cited above for that reason.
|
||||
- Palacios and Zhang 2007 (S4.3): DOI not re-checked.
|
||||
- QMCF (S2.6): read from abstract snippets only; the ScienceDirect and ResearchGate pages returned 403.
|
||||
- Ollivier-Gooch et al. 2025 (S1.5): SSRN preprint; only title and DOI verified.
|
||||
- Remacle 2013 (S5.1): numbers are from the 2010 preprint; the journal version was not read.
|
||||
- Benchmark reference values (S12): commonly quoted values; confirm from MacNeal–Harder 1985 and Belytschko et
|
||||
al. 1985 before freezing fixtures.
|
||||
- `https://pages.cs.wisc.edu/~csverma/jaal.pdf` (Verma's Jaal all-quad generator) returned 404; not used.
|
||||
- The UBC EDAMSurf thesis (advancing-layer surface meshing) was seen in search results only.
|
||||
Reference in new issue
Block a user