trimesh.repair

repair.py

Fill holes and fix winding and normals of meshes.

trimesh.repair.broken_faces(mesh, color=None)

Return the index of faces in the mesh which break the watertight status of the mesh.

Parameters:
  • mesh (trimesh.Trimesh) – Mesh to check broken faces on

  • color ((4,) uint8 or None) – Will set broken faces to this color if not None

Returns:

broken – Indexes of mesh.faces

Return type:

(n, ) int

trimesh.repair.fill_holes(mesh)

Fill single- triangle holes on triangular meshes by adding new triangles to fill the holes. New triangles will have proper winding and normals, and if face colors exist the color of the last face will be assigned to the new triangles.

Parameters:

mesh (trimesh.Trimesh) – Mesh will be repaired in- place

trimesh.repair.fix_inversion(mesh, multibody=False)

Check to see if a mesh has normals pointing “out.”

Parameters:
  • mesh (trimesh.Trimesh) – Mesh to fix in-place.

  • multibody (bool) – If True will try to fix normals on every body

trimesh.repair.fix_normals(mesh, multibody=False)

Fix the winding and direction of a mesh face and face normals in-place.

Really only meaningful on watertight meshes but will orient all faces and winding in a uniform way for non-watertight face patches as well.

Parameters:
  • mesh (trimesh.Trimesh) – Mesh to fix normals on

  • multibody (bool) – if True try to correct normals direction on every body rather than just one

Notes

mesh.faces : will flip columns on inverted faces

trimesh.repair.fix_winding(mesh)

Traverse and change mesh faces in-place to make sure winding is correct with edges on adjacent faces in opposite directions.

Parameters:

mesh (Trimesh) – Source geometry to alter in-place.

trimesh.repair.stitch(mesh, faces=None, insert_vertices=False)

Create a fan stitch over the boundary of the specified faces. If the boundary is non-convex a triangle fan is going to be extremely wonky.

Parameters:
  • vertices ((n, 3) float) – Vertices in space.

  • faces ((n,) int) – Face indexes to stitch with triangle fans.

  • insert_vertices (bool) – Allow stitching to insert new vertices?

Returns:

  • fan ((m, 3) int) – New triangles referencing mesh.vertices.

  • vertices ((p, 3) float) – Inserted vertices (only returned if insert_vertices)