From 31c448a95d4eea8d2f1e38d2e3684ee94cb6d50b Mon Sep 17 00:00:00 2001 From: Jeremy Reizenstein Date: Mon, 21 Jun 2021 08:10:44 -0700 Subject: [PATCH] Test gltf texture without renderer. Summary: Change the cow gltf loading test to validate the texture values and not to validate the renderer output because it has an unstable pixel. Also a couple of lints. Reviewed By: patricklabatut Differential Revision: D29131260 fbshipit-source-id: 5e11f066a2a638588aacb09776cc842173ef669f --- pytorch3d/renderer/blending.py | 1 + pytorch3d/renderer/mesh/rasterize_meshes.py | 2 +- tests/test_io_gltf.py | 20 ++++++++++++++++---- tests/test_render_meshes_clipped.py | 3 ++- tests/test_shader.py | 5 +---- 5 files changed, 21 insertions(+), 10 deletions(-) diff --git a/pytorch3d/renderer/blending.py b/pytorch3d/renderer/blending.py index 8c9205ec..7912ed61 100644 --- a/pytorch3d/renderer/blending.py +++ b/pytorch3d/renderer/blending.py @@ -6,6 +6,7 @@ from typing import NamedTuple, Sequence, Union import torch from pytorch3d import _C # pyre-fixme[21]: Could not find name `_C` in `pytorch3d`. + # Example functions for blending the top K colors per pixel using the outputs # from rasterization. # NOTE: All blending function should return an RGBA image per batch element diff --git a/pytorch3d/renderer/mesh/rasterize_meshes.py b/pytorch3d/renderer/mesh/rasterize_meshes.py index a056a022..b75d11ac 100644 --- a/pytorch3d/renderer/mesh/rasterize_meshes.py +++ b/pytorch3d/renderer/mesh/rasterize_meshes.py @@ -401,7 +401,7 @@ def pix_to_non_square_ndc(i, S1, S2): return -offset + (ndc_range * i + offset) / S1 -def rasterize_meshes_python( +def rasterize_meshes_python( # noqa: C901 meshes, image_size: Union[int, Tuple[int, int]] = 256, blur_radius: float = 0.0, diff --git a/tests/test_io_gltf.py b/tests/test_io_gltf.py index afb8e849..4042e9c3 100644 --- a/tests/test_io_gltf.py +++ b/tests/test_io_gltf.py @@ -143,14 +143,26 @@ class TestMeshGltfIO(TestCaseMixin, unittest.TestCase): mesh_obj.get_bounding_boxes().cpu(), mesh_obj.get_bounding_boxes() ) + self.assertClose( + mesh.textures.verts_uvs_padded().cpu(), mesh_obj.textures.verts_uvs_padded() + ) + + self.assertClose( + mesh.textures.faces_uvs_padded().cpu(), mesh_obj.textures.faces_uvs_padded() + ) + + self.assertClose( + mesh.textures.maps_padded().cpu(), mesh_obj.textures.maps_padded() + ) + if DEBUG: texturesuv_image_PIL(mesh.textures).save(DATA_DIR / "out_cow.png") - image = _render(mesh, "cow", azim=4) - with Image.open(DATA_DIR / "glb_cow.png") as f: - expected = np.array(f) + image = _render(mesh, "cow", azim=4) + with Image.open(DATA_DIR / "glb_cow.png") as f: + expected = np.array(f) - self.assertClose(image, expected) + self.assertClose(image, expected) def test_load_cow_no_texture(self): """ diff --git a/tests/test_render_meshes_clipped.py b/tests/test_render_meshes_clipped.py index 2c9f4636..d302b8ce 100644 --- a/tests/test_render_meshes_clipped.py +++ b/tests/test_render_meshes_clipped.py @@ -17,8 +17,8 @@ from common_testing import TestCaseMixin, get_tests_dir, load_rgb_image from pytorch3d.io import save_obj from pytorch3d.renderer.cameras import ( FoVPerspectiveCameras, - look_at_view_transform, PerspectiveCameras, + look_at_view_transform, ) from pytorch3d.renderer.lighting import PointLights from pytorch3d.renderer.mesh import ( @@ -35,6 +35,7 @@ from pytorch3d.renderer.mesh.textures import TexturesVertex from pytorch3d.structures.meshes import Meshes from pytorch3d.utils import torus + # If DEBUG=True, save out images generated in the tests for debugging. # All saved images have prefix DEBUG_ DEBUG = False diff --git a/tests/test_shader.py b/tests/test_shader.py index 74284c5d..d6c3f5ec 100644 --- a/tests/test_shader.py +++ b/tests/test_shader.py @@ -4,10 +4,7 @@ import unittest import torch from common_testing import TestCaseMixin -from pytorch3d.renderer.cameras import ( - look_at_view_transform, - PerspectiveCameras, -) +from pytorch3d.renderer.cameras import PerspectiveCameras, look_at_view_transform from pytorch3d.renderer.mesh.rasterizer import Fragments from pytorch3d.renderer.mesh.shader import ( HardFlatShader,