Work / Valid meshes from 3D generators

Valid meshes from 3D generators

Research software that finds where an AI mesh generator produces broken geometry, and traces each defect back to its cause.

Sheet 4 of 5
RoleResearch Assistant, University of Sydney
Timeline2026, ongoing
StatusIn progress
StackPython, PyTorch, NumPy, SciPy, trimesh
CodeUnpublished research, code private

Animation: an AI-generated mesh shows edges shared by three faces in red; a scan checks every edge and the surface becomes valid, with every edge shared by exactly two faces.

Fig. 1. Illustration: a generated mesh with edges shared by three faces (red). The checks find every such edge, and the repaired surface has exactly two faces per edge. A simplified drawing, not research output.

The problem

New AI models can generate clean-looking 3D meshes in about a second, but the raw output is often not a valid surface. Edges are shared by three or more triangles, faces point the wrong way, and duplicates and holes appear. These defects break 3D printing, physics simulation and game engines, and the usual geometric scores, such as Chamfer distance, don’t notice them: a mesh can score well and still be unusable.

A valid edge next to a broken edgeLeft: two triangles share one edge, as on a valid surface. Right: three triangles share one edge, which makes the surface invalid.ValidBrokenthe edge has exactly two facesthe edge has three faces
Fig. 2. What a valid surface needs: every interior edge is shared by exactly two faces.

The approach

My work is to make that problem measurable and then find where it comes from:

  • A test harness around a frozen generator. It builds on MeshFlow (CVPR 2026) and runs the model as published, so every experiment starts from identical model output.
  • Automated validity checks. Every generated mesh is checked for edges with the wrong number of faces, inconsistent orientation, duplicate and degenerate faces, holes and self-intersections, alongside the usual geometric scores.
  • Tracing each defect to its cause. A defect can come from the data, the algorithm or our own code. Each one is traced back before anything is changed.
  • Fixing the cause without retraining. I’m evaluating other ways to turn the model’s predictions into faces, without retraining the model or moving any generated vertex.
  1. Input shape

    • Point cloud or reference mesh
  2. Frozen generator

    • Vertices and predicted edges
    • Cached, identical across runs
  3. Face assembly

    • Pluggable variants
  4. Validity checks

    • Topology, orientation, holes
    • Geometry scores
  5. Evaluation

    • Paired comparisons
    • Held-out and blind sets

Every invalid face is traced back to the data, the algorithm or the code before anything changes.

Fig. 3. The research loop. Details of the decoding methods stay private until they are published.

Unpublished research: methods and results are described only at a high level. MeshFlow is by Li et al. (CVPR 2026).