-
Notifications
You must be signed in to change notification settings - Fork 592
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Release: Refactor Load Types (#2241)
A very common source of annoyance and confusion is that `trimesh.load` can return lots of different types depending on what type of file was passed (i.e. #2239). This refactor changes the return types for the loading functions to: - `trimesh.load_scene -> Scene` - This loads into a `Scene`, the most general container which can hold any loadable type. Most people should probably use this to load geometry. - `trimesh.load_mesh -> Trimesh` - Forces all mesh objects in a scene into a single `Trimesh` object. This potentially has to drop information and irreversibly concatenate multiple meshes. - The implementation of the concatenation logic is now in `Scene.to_mesh` rather than load. - `trimesh.load_path -> Path` - This loads into either a `Path2D` or `Path3D` which both inherit from `Path` - `trimesh.load -> Geometry` - This was the original load entry point and is deprecated, but there are no current plans to remove it. It has been modified into a thin wrapper for `load_scene` that attempts to match the behavior of the previous loader for backwards compatibility. In my testing against the current `main` branch it was returning the same types [99.8% of the time](https://gist.github.com/mikedh/8de541e066ce842932b1f6cd97c214ca) although there may be other subtle differences. - `trimesh.load(..., force='mesh')` will emit a deprecation warning in favor of `load_mesh` - `trimesh.load(..., force='scene')` will emit a deprecation warning in favor of `load_scene` Additional changes: - Removes `Geometry.metadata['file_path']` in favor of `Geometry.source.file_path`. Everything that inherits from `Geometry` should now have a `.source` attribute which is a typed dataclass. This was something of a struggle as `file_path` was populated into metadata on load, but we also try to make sure `metadata` is preserved through round-trips if at all possible. And so the `load` inserted *different* keys into the metadata. Making it first-class information rather than a loose key seems like an improvement, but users will have to replace `mesh.metadata["file_name"]` with `mesh.source.file_name`. - Moves all network fetching into `WebResolver` so it can be more easily gated by `allow_remote`. - Removes code for the following deprecations: - January 2025 deprecation for `trimesh.resources.get` in favor of the typed alternatives (`get_json`, `get_bytes`, etc). - January 2025 deprecation for `Scene.deduplicated` in favor of a very short list comprehension on `Scene.duplicate_nodes` - March 2024 deprecation for `trimesh.graph.smoothed` in favor of `trimesh.graph.smooth_shaded`. - Adds the following new deprecations: - January 2026 `Path3D.to_planar` -> `Path3D.to_2D` to be consistent with `Path2D.to_3D`. - Fixes #2335 - Fixes #2330 - Fixes #2239 - Releases #2313 - Releases #2327 - Releases #2336 - Releases #2339
- Loading branch information
Showing
60 changed files
with
1,687 additions
and
1,254 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,13 @@ | ||
pypandoc==1.13 | ||
pypandoc==1.14 | ||
recommonmark==0.7.1 | ||
jupyter==1.0.0 | ||
jupyter==1.1.1 | ||
|
||
# get sphinx version range from furo install | ||
furo==2024.5.6 | ||
myst-parser==3.0.1 | ||
pyopenssl==24.1.0 | ||
autodocsumm==0.2.12 | ||
jinja2==3.1.4 | ||
matplotlib==3.8.4 | ||
nbconvert==7.16.4 | ||
furo==2024.8.6 | ||
myst-parser==4.0.0 | ||
pyopenssl==24.3.0 | ||
autodocsumm==0.2.14 | ||
jinja2==3.1.5 | ||
matplotlib==3.10.0 | ||
nbconvert==7.16.5 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.