# What changed in trimesh

> 26 changes in trimesh 5 from its official release notes, upgrade guides and advisories: 3 breaking, 1 new APIs and options. Each one cited. Sources checked 2026-10-27. HTML: https://unstale.sh/pypi/trimesh/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## trimesh 5

### Breaking changes

- Out-of-range face indices in OFF files now raise a clear error. (5.2.0) — [release notes](https://github.com/mikedh/trimesh/releases/tag/5.2.0)
- Raises ValueError when an OFF file is missing its count line. (5.1.0) — [release notes](https://github.com/mikedh/trimesh/releases/tag/5.1.0)
- Raises ValueError when a PLY property line appears before any element. (5.1.0) — [release notes](https://github.com/mikedh/trimesh/releases/tag/5.1.0)

### New APIs and options

- Adds estimate_normals to PointCloud. (5.1.1) — [release notes](https://github.com/mikedh/trimesh/releases/tag/5.1.1)

### Performance

- Batches the R-tree query in discrete_mean_curvature_measure, improving performance. (5.1.0) — [release notes](https://github.com/mikedh/trimesh/releases/tag/5.1.0)

### Behavior and default changes

- ASCII PLY files now export face colors. (5.2.0) — [release notes](https://github.com/mikedh/trimesh/releases/tag/5.2.0)
- Concatenation now merges metadata from every mesh. (5.2.0) — [release notes](https://github.com/mikedh/trimesh/releases/tag/5.2.0)
- Uncolored point clouds can now be exported to XYZ. (5.2.0) — [release notes](https://github.com/mikedh/trimesh/releases/tag/5.2.0)

### Fixes and other changes

- Cached normals are handled correctly under nonuniform affine transforms. (5.2.0) — [release notes](https://github.com/mikedh/trimesh/releases/tag/5.2.0)
- GLB loading ignores chunks with unknown types. (5.2.0) — [release notes](https://github.com/mikedh/trimesh/releases/tag/5.2.0)
- Prevents a crash when mixed-format OBJ files contain None vertices. (5.2.0) — [release notes](https://github.com/mikedh/trimesh/releases/tag/5.2.0)
- Points are sorted correctly for axis-aligned normals. (5.2.0) — [release notes](https://github.com/mikedh/trimesh/releases/tag/5.2.0)
- Results no longer depend on ring winding. (5.2.0) — [release notes](https://github.com/mikedh/trimesh/releases/tag/5.2.0)
- Fixes the angle returned by align_vectors. (5.1.1) — [release notes](https://github.com/mikedh/trimesh/releases/tag/5.1.1)
- Fixes Arc.length returning twice the arc length. (5.1.1) — [release notes](https://github.com/mikedh/trimesh/releases/tag/5.1.1)
- Handles coincident triangle vertices in closest-point queries. (5.1.1) — [release notes](https://github.com/mikedh/trimesh/releases/tag/5.1.1)
- Closes discretized circles exactly. (5.1.1) — [release notes](https://github.com/mikedh/trimesh/releases/tag/5.1.1)
- Handles rows with zero columns. (5.1.1) — [release notes](https://github.com/mikedh/trimesh/releases/tag/5.1.1)
- Fixes mean curvature repeat counts on 32-bit platforms. (5.1.1) — [release notes](https://github.com/mikedh/trimesh/releases/tag/5.1.1)
- Corrects the microinch conversion factor, which was 1000 times too large. (5.1.1) — [release notes](https://github.com/mikedh/trimesh/releases/tag/5.1.1)
- Fixes the z reset so it moves the camera. (5.1.1) — [release notes](https://github.com/mikedh/trimesh/releases/tag/5.1.1)
- Fixes SVG rotation angle units and direction. (5.1.1) — [release notes](https://github.com/mikedh/trimesh/releases/tag/5.1.1)
- Adds vertex list cleanup to avoid a GPU memory leak. (5.1.1) — [release notes](https://github.com/mikedh/trimesh/releases/tag/5.1.1)
- Keeps XYZ colors to four channels. (5.1.1) — [release notes](https://github.com/mikedh/trimesh/releases/tag/5.1.1)
- Passes sections through to the capsule mesh. (5.1.0) — [release notes](https://github.com/mikedh/trimesh/releases/tag/5.1.0)
- Fixes smoothing shifting mesh coordinates because volume_constraint was scaled about the world origin. (5.1.0) — [release notes](https://github.com/mikedh/trimesh/releases/tag/5.1.0)
