axiolid-mesh-boolean-boolmesh
boolmesh-backed MeshBoolean provider.
| Latest release | 0.3.2 (2026-09-28) |
| crates.io | axiolid-mesh-boolean-boolmesh |
| Facade | axiolid feature portable-provider |
| Layer | providers (provider.mesh) |
| API documentation | rustdoc · docs.rs |
| Source | crates/providers/mesh/boolmesh/ |
Overview
A MeshBoolean provider for closed, outward-oriented triangle meshes: union, intersection, difference, and symmetric difference composed from those. The algorithm is absorbed from the boolmesh crate into a private module (ADR 0014, ADR 0047); this crate adds the conversion, an orientation gate on every input, result checks, and batch overrides (subtract_many fuses disjoint cutters, union_many reduces as a balanced tree). It also offers subtract_boxes_analytic, an opt-in closed-form path for axis-aligned box cutters in an axis-aligned box. Register it with axiolid-dispatch or call it directly.
Design notes
- Results carry attribute channels but no normals; derive normals from the topology you want.
- The general path is
Determinism::Topological. Use the analytic box path when you need byte-identical output across processes. - The
parallelfeature threads inside one solve and is off by default;parallel-batchruns independentunion_manypairs concurrently with output identical to the sequential path.
Features
Default: none.
| Feature | Enables |
|---|---|
parallel | rayon |
parallel-batch | rayon |
Depends on
Changes
Latest release, 0.3.2 (2026-09-28):
Changed
- Behaviour change: a refusal inside the solve (an odd edge-point count in
pair_up, #101) is reported asGeomError::BackendContractViolationnamingboolmesh, notDegenerate. The operands passed every input gate, so the failure is this provider's defect and no longer reads as the caller's.tests/solve_failure.rspins it on a grid union that still reaches the refusal (#203). - The crates.io page is this crate's own
README.md, with links to its API documentation, its reference page and the source (ADR 0078).
Full history: crates/providers/mesh/boolmesh/CHANGELOG.md