mirror of
https://github.com/facebookresearch/pytorch3d.git
synced 2025-08-02 11:52:50 +08:00
Summary: Although we can load per-vertex normals in `load_obj`, saving per-vertex normals is not supported in `save_obj`. This patch fixes this by allowing passing per-vertex normal data in `save_obj`: ``` python def save_obj( f: PathOrStr, verts, faces, decimal_places: Optional[int] = None, path_manager: Optional[PathManager] = None, *, verts_normals: Optional[torch.Tensor] = None, faces_normals: Optional[torch.Tensor] = None, verts_uvs: Optional[torch.Tensor] = None, faces_uvs: Optional[torch.Tensor] = None, texture_map: Optional[torch.Tensor] = None, ) -> None: """ Save a mesh to an .obj file. Args: f: File (str or path) to which the mesh should be written. verts: FloatTensor of shape (V, 3) giving vertex coordinates. faces: LongTensor of shape (F, 3) giving faces. decimal_places: Number of decimal places for saving. path_manager: Optional PathManager for interpreting f if it is a str. verts_normals: FloatTensor of shape (V, 3) giving the normal per vertex. faces_normals: LongTensor of shape (F, 3) giving the index into verts_normals for each vertex in the face. verts_uvs: FloatTensor of shape (V, 2) giving the uv coordinate per vertex. faces_uvs: LongTensor of shape (F, 3) giving the index into verts_uvs for each vertex in the face. texture_map: FloatTensor of shape (H, W, 3) representing the texture map for the mesh which will be saved as an image. The values are expected to be in the range [0, 1], """ ``` Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/1511 Reviewed By: shapovalov Differential Revision: D45086045 Pulled By: bottler fbshipit-source-id: 666efb0d2c302df6cf9f2f6601d83a07856bf32f