Readonlydegenerate"" when isSolid, otherwise one of:
"malformed-operand" — any of FOUR malformations, all rejected
before the boolean runs, because computing on them would silently
drop the offending triangle (or worse) rather than report the true
operand:
positionsA/positionsB is not a flat [x, y, z, …] triple
(length not a multiple of 3);indicesA/indicesB has a length that is not a multiple of 3,
so it does not describe whole triangles;indicesA/indicesB references a vertex past the end of its own
operand's positions;"no-overlap". So if you are
debugging an unexpected "no-overlap", check your inputs for
NaN — it surfaces here, not there."empty-operand" — an operand had no triangles."no-overlap" — the exact intersection is empty. Covers a disjoint
pair AND a touching pair, including any graze below the kernel's
2^-16 m ≈ 15.26 µm snap grid (both faces snap flush)."below-kernel-resolution" — the pair overlaps, but too shallowly for
the kernel to resolve as a solid rather than a coplanar contact. See
thicknessM / requiredM."budget-exhausted" — the escalation budget tripped; the arrangement
is partial and nothing about it is trustworthy.ReadonlyindicesTriangle indices into positions / 3.
ReadonlyisTrue when a trustworthy overlap solid was produced. When false, every
geometry getter is empty and degenerateReason says why.
ReadonlypositionsWorld-space vertex positions, flat [x, y, z, …], f64.
f64 rather than the f32 the rest of the mesh pipeline uses because the caller reports this solid's volume: the f32 round-trip costs ~1e-7 relative, a thousand times the exactness the kernel actually delivers. Downcast to f32 at the GPU upload if the renderer wants it.
ReadonlyrequiredFor "below-kernel-resolution": the depth this pair would have needed
for the kernel to resolve a solid, in metres. 0 otherwise. Grows with
distance from the world origin, as the kernel's own tolerance does.
ReadonlythicknessFor "below-kernel-resolution": the overlap's measured thinnest extent,
in metres. 0 otherwise. Useful to tell the user how shallow the clash
is even though no solid can be drawn.
ReadonlytriangleTriangle count of the solid; 0 when degenerate.
ReadonlyvolumeEnclosed volume in m³. 0 when not a solid — check isSolid first;
"no measurable overlap" and "an overlap of zero" are different claims.
The overlap solid of one clashing pair, or the reason there is none.