In computational geometry, terms like manifold or watertight are widely used but inconsistently defined.
Solidean takes a different approach: because all computations are exact, we can treat geometry itself as the ground truth and reconstruct topology on demand. This allows us to make precise distinctions between Solid, Supersolid, and NonSupersolid meshes, and to separate geometric from topological definitions.
Geometric Classes
MeshType::Solid
A mesh is geometrically solid if it unambiguously defines a volume in a simple way:
- Every face is non-degenerate (nonzero area).
- Crossing a face always transitions from outside to inside.
- The winding number field is exactly 0 (outside) or exactly 1 (inside).
This is the strictest and most efficient type.
MeshType::Supersolid
A mesh is geometrically supersolid if it is the superposition of arbitrarily many solids:
- Degenerate faces are allowed.
- Arbitrary overlaps are allowed.
- The winding number field is piecewise constant integer: 0 outside, nonzero inside.
MeshType::NonSupersolid
No restrictions at all:
- Holes, disconnected pieces, self-inconsistent surfaces.
- Usually requires
Operation::healbefore being useful in Booleans.
Topological Classes
Geometry alone is not always enough.
Sometimes you need guarantees about incidence relations in a mesh’s combinatorial structure.
That’s where Solidean’s topological definitions apply, especially for export formats.
Topologically Solid
- Every edge has exactly one positive and one negative incident face.
- This is close to the usual definition of a 2-manifold surface.
- However, the 1-ring of a vertex may still split into multiple traversals or visit vertices multiple times (non-manifold corner cases).
- When exporting,
ExportOption::Manifoldforces a purely manifold decomposition.
Topologically Supersolid
- Every edge has as many positive as negative incident faces: each edge is (k, k) for some integer k.
- Geometric supersolids correspond exactly to topological supersolids.
- If an edge has mismatch
(a, b)witha ≠ b, the mesh is no longer supersolid. - The difference
a - bis the signed defect; the sum of all|a - b|is the global defect. - The defect network is the graph of all edges where
a ≠ b. It can be exported and inspected for debugging.
Implications and Relationships
Understanding how the different notions relate helps in practice:
- Every topological solid is also a topological supersolid.
- Every geometric solid is also a geometric supersolid.
- Topological supersolid ⇒ Geometric supersolid.
- Topological solid ⇒ Geometric supersolid (not necessarily geometric solid, because arbitrary geometric self-intersections are allowed).
- Topological 2-manifold ⇒ Topological solid.
- Export with indexed triangles produces:
- A topological solid when given a geometric solid
- A topological supersolid when given a geometric supersolid
Most Important
If you take any topological solid or topological supersolid mesh, you can move the vertex positions arbitrarily.
It will stay a topological solid/supersolid.
This implies it is still a geometric supersolid, and can therefore be imported into Solidean without healing.
This property is extremely powerful in mixed pipelines:
- You can export with indexed topology, then run external processing such as smoothing, deformation, or optimization on the vertex positions.
- As long as topology is preserved (or changed in a supersolid-preserving way), the mesh remains a valid
MeshType::Supersolid. - Re-importing into Solidean is always unambiguous and mathematically well-defined.
This makes indexed export the ideal interchange format when strong guarantees are required.
Why This Matters
- Performance: solids are the fastest to process, supersolids slower but still well-defined.
- Robustness: non-supersolids must be healed to be valid inputs.
- Flexibility: by distinguishing geometry vs. topology, Solidean can import a very wide range of meshes and still guarantee exact, consistent results.