forked from 1b-agent/fieldcraft-upstream
Rename the project to FieldCraft
Crates fieldcraft-*, binaries fieldcraft and fieldcraft-cli, the .fieldcraft file (format tag fieldcraft/1, manifest fieldcraft.json), FIELDCRAFT_* environment variables, the MCP server name, egui widget ids (fc_*), the app icon document FieldCraft.icon and its generated family, docs and licences. No compatibility shim: no files of the earlier name exist. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
This commit is contained in:
1 parent
9bc4e1b182
commit
d5bd74570f
268 files changed
+1666
-1666
No files matched your search
@@ -1,4 +1,4 @@
|
||||
# Volume meshing literature survey for ModelCraft (tet → hex)
|
||||
# Volume meshing literature survey for FieldCraft (tet → hex)
|
||||
|
||||
Compiled 2026-10-13. Scope: watertight triangulated B-rep tessellation in, then (1) tetrahedral mesh by
|
||||
Delaunay methods with Voronoi/ODT improvement, then (2) all-hex and hex-dominant meshes.
|
||||
@@ -110,7 +110,7 @@ Delaunay methods with Voronoi/ODT improvement, then (2) all-hex and hex-dominant
|
||||
|
||||
---
|
||||
|
||||
**A0.5 Boundary surface preparation (implemented in `modelcraft-mesh::surface`).** **Verdict: BUILD ON.**
|
||||
**A0.5 Boundary surface preparation (implemented in `fieldcraft-mesh::surface`).** **Verdict: BUILD ON.**
|
||||
- **Guigue and Devillers 2003.** P. Guigue, O. Devillers. *Fast and Robust Triangle–Triangle Overlap Test Using
|
||||
Orientation Predicates.* Journal of Graphics Tools 8(1):25–32, 2003. Triangle overlap decided from `orient3d` /
|
||||
`orient2d` signs alone, so it is exact on the A0.1 predicates. We use the equivalent edge–triangle reduction (two
|
||||
@@ -151,7 +151,7 @@ Delaunay methods with Voronoi/ODT improvement, then (2) all-hex and hex-dominant
|
||||
- Hilbert index: J. Skilling, *Programming the Hilbert curve*, AIP Conf. Proc. 707:381–387, 2004, DOI
|
||||
[10.1063/1.1751381](https://doi.org/10.1063/1.1751381).
|
||||
- **Code.** For a permissive reference, see geogram `delaunay_3d.cpp` (BSD).
|
||||
- **Implemented** in `modelcraft-mesh::delaunay` (ghost vertex for the hull, Devillers–Teillaud perturbation for
|
||||
- **Implemented** in `fieldcraft-mesh::delaunay` (ghost vertex for the hull, Devillers–Teillaud perturbation for
|
||||
cospherical points, exact verifier).
|
||||
|
||||
**A1.2 Marot, Pellerin, Remacle 2019, "One machine, one minute, three billion tetrahedra".** **Verdict: reference (later).**
|
||||
@@ -238,7 +238,7 @@ Delaunay methods with Voronoi/ODT improvement, then (2) all-hex and hex-dominant
|
||||
- **Complexity.** High: about 8–12k lines of Rust including the predicate generator. It is the single most valuable
|
||||
investment in the tet pipeline.
|
||||
- **Code.** `MarcoAttene/CDT` is **GPL, or LGPL by build option** (README): FORBIDDEN.
|
||||
- **Implemented** in `modelcraft-mesh::cdt` from the paper only, with these choices:
|
||||
- **Implemented** in `fieldcraft-mesh::cdt` from the paper only, with these choices:
|
||||
- Steiner points are LNC points (§4.3) on the original segment, `a + t (b − a)` with `t` a double; the in-sphere test
|
||||
on them is exact (interval filter, then exact dyadic integers) and perturbed with the same lexicographic lift as
|
||||
the Delaunay step, so Bowyer–Watson insertion of Steiner points stays consistent with it.
|
||||
@@ -785,7 +785,7 @@ Delaunay methods with Voronoi/ODT improvement, then (2) all-hex and hex-dominant
|
||||
- **HexaLab** (MIT, https://github.com/mlivesu/HexaLab, https://www.hexalab.net) is READ OK. It is a hex quality
|
||||
viewer whose metrics match the literature's.
|
||||
|
||||
**B6.6 Element validity and quality metrics (implemented in `modelcraft-mesh::quality`).** **Verdict: BUILD ON.**
|
||||
**B6.6 Element validity and quality metrics (implemented in `fieldcraft-mesh::quality`).** **Verdict: BUILD ON.**
|
||||
- **Johnen, Remacle, Geuzaine 2013.** *Geometrical validity of curvilinear finite elements.* J. Comput. Phys.
|
||||
233:359–372, 2013. The Jacobian
|
||||
determinant in Bernstein form is bounded by its coefficients, equals them at the vertices and converges under
|
||||
@@ -803,7 +803,7 @@ Delaunay methods with Voronoi/ODT improvement, then (2) all-hex and hex-dominant
|
||||
|
||||
> 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`)
|
||||
(implemented in `fieldcraft-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
|
||||
@@ -878,7 +878,7 @@ input points), Steiner points kept half the local spacing from the boundary.
|
||||
|
||||
---
|
||||
|
||||
### B8. Mapped and swept hexahedral meshing (implemented in `modelcraft-mesh::hex`)
|
||||
### B8. Mapped and swept hexahedral meshing (implemented in `fieldcraft-mesh::hex`)
|
||||
|
||||
`mesh.hex.generate` (and `mesh.hex.sweep`, `mesh.hex.mapped`). Every method below is implemented from
|
||||
its paper; no code was read. DOIs marked "checked" were confirmed on 2026-10-13 through a repository
|
||||
@@ -939,14 +939,14 @@ Collision Detection*, 2005, §5.1.5).
|
||||
|
||||
## Part C: Datasets and benchmarks
|
||||
|
||||
| Dataset | Content | Licence | Usable for ModelCraft? |
|
||||
| Dataset | Content | Licence | Usable for FieldCraft? |
|
||||
|---|---|---|---|
|
||||
| **Thingi10K**: Zhou & Jacobson 2016, arXiv https://arxiv.org/abs/1605.04797; site https://ten-thousand-models.appspot.com; tooling https://github.com/Thingi10K/Thingi10K | 10,000 STL meshes. 45% self-intersecting, 50% non-solid. The 4,408 "valid" subset is the standard tet-meshing robustness benchmark (fTetWild, Diazzi 2023). | Tooling Apache-2.0. **Each model has its own licence** (10 licences, including CC-BY-NC and GPL). Filter by the `license` field. | **Conditionally.** Use CC-BY / CC0 / public-domain models for robustness testing. **Provenance risk:** Thingiverse records no authoring tool, and many uploads were modelled in commercial CAD. Under the "no test data produced with commercial CAD products" rule this is an **owner decision**. |
|
||||
| **HexMe**: DOI 10.5281/zenodo.6642020, https://hexme.algohex.eu | 189 tet meshes from 63 CAD models, with feature tags. | Dataset **CC-BY-4.0**. The source models come from the **ABC dataset (Onshape terms), GrabCAD (GrabCAD terms)**, MAMBO (Apache-2.0), and models made with **Gmsh and Siemens NX** (the paper's own statement). | **Only a filtered subset.** The ABC/Onshape, GrabCAD and Siemens NX models are produced with commercial CAD: exclude them. Gmsh-authored ones are acceptable as data. |
|
||||
| **MAMBO**: https://gitlab.com/franck.ledoux/mambo | STEP models: basic, simple, medium. Designed for hex block-meshing evaluation. | **Apache-2.0** | **Risky.** The STEP headers I sampled say `'Spatial InterOp 3D'` as originating system and authors `'Cubit 15.2'` / `'MGX'`. These are commercial or closed tools. Treat as commercial-CAD-produced unless the owner rules otherwise. |
|
||||
| **ABC**: Koch et al., CVPR 2019, DOI [10.1109/CVPR.2019.00983](https://doi.org/10.1109/CVPR.2019.00983), arXiv https://arxiv.org/abs/1812.06216, https://deep-geometry.github.io/abc-dataset/ | 1M CAD models (B-rep and meshes). | "Copyright of the CAD models is owned by their creators", under **Onshape Terms of Use**. The models come from Onshape. | **No.** Produced with a commercial CAD product, and the licence is not open. Skip. |
|
||||
|
||||
**Recommendation for test data.** Build ModelCraft's own corpus:
|
||||
**Recommendation for test data.** Build FieldCraft's own corpus:
|
||||
- **Generated cases.** Parametric primitives plus booleans from our own kernel:
|
||||
- cubes and cylinders with holes;
|
||||
- fillets;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
# Shell meshing literature survey for ModelCraft: quad and quad-dominant meshes of curved B-rep faces
|
||||
# Shell meshing literature survey for FieldCraft: 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`).
|
||||
Catmull–Clark split (`fieldcraft-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.
|
||||
@@ -126,7 +126,7 @@ robustness/limits, complexity, code + licence, verdict. Part P is the opinionate
|
||||
**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).
|
||||
- **Use.** The curvature and proximity terms of FieldCraft'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.**
|
||||
@@ -193,7 +193,7 @@ robustness/limits, complexity, code + licence, verdict. Part P is the opinionate
|
||||
**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
|
||||
- **Caveat for FieldCraft.** 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).
|
||||
|
||||
@@ -315,7 +315,7 @@ robustness/limits, complexity, code + licence, verdict. Part P is the opinionate
|
||||
- **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).
|
||||
change to machinery FieldCraft 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.
|
||||
@@ -346,7 +346,7 @@ robustness/limits, complexity, code + licence, verdict. Part P is the opinionate
|
||||
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
|
||||
it uses **the same tri → recombine → split guarantee FieldCraft 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.
|
||||
|
||||
@@ -372,7 +372,7 @@ robustness/limits, complexity, code + licence, verdict. Part P is the opinionate
|
||||
- **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.
|
||||
FieldCraft'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).
|
||||
@@ -619,14 +619,14 @@ cylinder displacement under the load 1.8248×10⁻⁵ (E = 3×10⁶, P = 1); pin
|
||||
|
||||
---
|
||||
|
||||
## Part P: Recommended plan for ModelCraft shell meshing (opinionated)
|
||||
## Part P: Recommended plan for FieldCraft 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.
|
||||
from the recombination + split FieldCraft already ships, and cleanup follows Reberol 2021.
|
||||
|
||||
Reasons:
|
||||
1. **Closure cannot fail.** A frontal-Delaunay front always sits inside a valid constrained triangulation, so
|
||||
@@ -668,13 +668,13 @@ For each B-rep face set to be shell-meshed (a sheet body, or chosen faces of a s
|
||||
|
||||
### P3. Components
|
||||
|
||||
**P3.1 Chart abstraction** (`modelcraft-mesh::surface_mesh::chart` or a new `shell` module; trait in `mesh`,
|
||||
**P3.1 Chart abstraction** (`fieldcraft-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:
|
||||
through `fieldcraft-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.
|
||||
@@ -772,7 +772,7 @@ ship.
|
||||
### 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.
|
||||
`fieldcraft-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.
|
||||
|
||||
Reference in new issue
Block a user