diff --git a/docs/requirements.txt b/docs/requirements.txt index 8362dfcaa..934ecbe7f 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -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 diff --git a/trimesh/exchange/load.py b/trimesh/exchange/load.py index 6a7782d80..6786565e6 100644 --- a/trimesh/exchange/load.py +++ b/trimesh/exchange/load.py @@ -132,6 +132,7 @@ def load( if len(loaded.geometry) == 1: kind = loaded._source.file_type geom = next(iter(loaded.geometry.values())) + geom.metadata.update(loaded.metadata) if (kind not in {"glb", "gltf"} and isinstance(geom, PointCloud)) or kind in { "obj", "stl", @@ -242,10 +243,8 @@ def load_scene( loaded._source = arg ## add the "file_path" information to the overall scene metadata - # if "metadata" not in kwargs: - # loaded.metadata.update(arg.metadata) - # add the load path metadata to every geometry - # [g.metadata.update(arg.metadata) for g in loaded.geometry.values()] + if "metadata" not in kwargs: + loaded.metadata.update(arg.metadata) return loaded diff --git a/trimesh/path/path.py b/trimesh/path/path.py index b3e9d4429..0df36378e 100644 --- a/trimesh/path/path.py +++ b/trimesh/path/path.py @@ -8,6 +8,7 @@ import collections import copy +import warnings from hashlib import sha256 import numpy as np @@ -18,7 +19,7 @@ from ..constants import tol_path as tol from ..geometry import plane_transform from ..points import plane_fit -from ..typed import ArrayLike, Dict, Iterable, List, NDArray, Optional, float64 +from ..typed import ArrayLike, Dict, Iterable, List, NDArray, Optional, Tuple, float64 from ..visual import to_rgba from . import ( creation, # NOQA @@ -773,12 +774,23 @@ class Path3D(Path): Hold multiple vector curves (lines, arcs, splines, etc) in 3D. """ - def to_planar( + def to_planar(self, *args, **kwargs): + """ + DEPRECATED: replace `path.to_planar`->`path.to_2D), removal 1/1/2026 + """ + warnings.warn( + "DEPRECATED: replace `path.to_planar`->`path.to_2D), removal 1/1/2026", + category=DeprecationWarning, + stacklevel=2, + ) + return self.to_3D(*args, **kwargs) + + def to_2D( self, to_2D: Optional[ArrayLike] = None, normal: Optional[ArrayLike] = None, check: bool = True, - ): + ) -> Tuple["Path2D", NDArray[float64]]: """ Check to see if current vectors are all coplanar. @@ -791,17 +803,17 @@ def to_planar( Homogeneous transformation matrix to apply, if not passed a plane will be fitted to vertices. normal : (3,) float or None - Normal of direction of plane to use. + Normal of direction of plane to use. check - Raise a ValueError if points aren't coplanar + Raise a ValueError if points aren't coplanar. Returns ----------- - planar : trimesh.path.Path2D - Current path transformed onto plane - to_3D : (4,4) float - Homeogenous transformations to move planar - back into 3D space + planar + Current path transformed onto plane + to_3D : (4, 4) float + Homeogenous transformations to move planar + back into the original 3D frame. """ # which vertices are actually referenced referenced = self.referenced_vertices