Spaces:
Paused
Paused
| """pytorch3d.structures stub with catch-all.""" | |
| import torch | |
| import warnings | |
| def __getattr__(name): | |
| if name.startswith("__") and name.endswith("__"): | |
| raise AttributeError(name) | |
| warnings.warn(f"pytorch3d.structures stub: {name} not implemented", stacklevel=2) | |
| class _Dummy: | |
| def __init__(self, *a, **kw): pass | |
| def to(self, *a, **kw): return self | |
| _Dummy.__name__ = _Dummy.__qualname__ = name | |
| return _Dummy | |
| class Meshes: | |
| def __init__(self, verts=None, faces=None, textures=None): | |
| if isinstance(verts, list): | |
| self._verts_list = [v if isinstance(v, torch.Tensor) else torch.tensor(v, dtype=torch.float32) for v in verts] | |
| elif isinstance(verts, torch.Tensor): | |
| self._verts_list = [verts] | |
| else: | |
| self._verts_list = [] | |
| if isinstance(faces, list): | |
| self._faces_list = [f if isinstance(f, torch.Tensor) else torch.tensor(f, dtype=torch.long) for f in faces] | |
| elif isinstance(faces, torch.Tensor): | |
| self._faces_list = [faces] | |
| else: | |
| self._faces_list = [] | |
| self.textures = textures | |
| def verts_list(self): return self._verts_list | |
| def faces_list(self): return self._faces_list | |
| def verts_packed(self): | |
| return torch.cat(self._verts_list, dim=0) if self._verts_list else torch.zeros(0, 3) | |
| def faces_packed(self): | |
| return torch.cat(self._faces_list, dim=0) if self._faces_list else torch.zeros(0, 3, dtype=torch.long) | |
| def num_verts_per_mesh(self): | |
| return torch.tensor([v.shape[0] for v in self._verts_list]) | |
| def __len__(self): return len(self._verts_list) | |
| class Pointclouds: | |
| def __init__(self, points=None, features=None, normals=None): | |
| self.points_list = points if isinstance(points, list) else ([points] if points is not None else []) | |
| self.features_list = features if isinstance(features, list) else ([features] if features is not None else []) | |
| self.normals_list = normals if isinstance(normals, list) else ([normals] if normals is not None else []) | |
| def to(self, device): return self | |