Пример #1
0
 def test_mesh_n_polygons02(self):
     mesh1 = Mesh(vertices=np.arange(5),
                  polygon_vertex_indices=[
                      [0, 1, 2],
                      [4, 5, 6],
                  ])
     self.assertEqual(mesh1.n_polygons(), 2)
Пример #2
0
    def test_set_vertices_and_compute_normals03(self):
        mesh = Mesh(
            vertices=np.array([
                [0, 0, 0],
                [0, 0, 0],
                [0, 0, 0],
            ]),
            polygon_vertex_indices=[[0, 1, 2]],
            triangle_vertex_indices=np.array([[0, 1, 2]]),
        )
        new_vertices = np.array([
            [0, 0, 0],
            [1, 0, 0],
            [0, 1, 0],
        ])
        ans = np.array([
            [0, 0, 1],
            [0, 0, 1],
            [0, 0, 1],
        ], dtype=np.float32)
        self.assertFalse(mesh.has_normals())
        mesh2 = mesh.set_vertices_and_compute_normals(new_vertices)

        res = mesh2.normals
        self.assertEqual(ans.shape, res.shape)
        self.assertTrue(np.allclose(ans, res))
Пример #3
0
 def test_mesh_n_triangles02(self):
     mesh1 = Mesh(vertices=np.arange(5),
                  polygon_vertex_indices=[
                      [0, 1, 2],
                      [4, 5, 6, 8],
                  ])
     self.assertIsNone(mesh1.n_triangles())
     self.assertFalse(mesh1.is_triangulated())
Пример #4
0
 def test_mesh_comparison04(self):
     mesh1 = Mesh(vertices=np.arange(3),
                  polygon_vertex_indices=[[0, 1, 2, 4]],
                  triangle_vertex_indices=np.array([[0, 1, 2], [0, 2, 4]]))
     mesh2 = Mesh(vertices=np.arange(3),
                  polygon_vertex_indices=[[0, 1, 2, 4]],
                  triangle_vertex_indices=np.array([[0, 1, 2], [0, 6, 4]]))
     self.assertTrue(mesh1 != mesh2)
Пример #5
0
 def test_mesh_bbox01(self):
     mesh1 = Mesh(vertices=np.array([[0, 1, 2], [-5, 2, 3]]),
                  polygon_vertex_indices=[
                      [0, 1, 2],
                      [4, 5, 6, 8],
                  ])
     bbox = mesh1.bbox()
     self.assertEqual(BoundingBox([-5, 1, 2], [0, 2, 3]), bbox)
Пример #6
0
 def test_mesh_comparison10(self):
     mesh1 = Mesh(vertices=np.arange(3),
                  polygon_vertex_indices=[[0, 1, 2, 4], [0, 1, 2, 4]],
                  polygon_groups=[1, 0],
                  group_names=["R", "Left"])
     mesh2 = Mesh(vertices=np.arange(3),
                  polygon_vertex_indices=[[0, 1, 2, 4], [0, 1, 2, 4]],
                  polygon_groups=[1, 0],
                  group_names=["Left"])
     self.assertTrue(mesh1 != mesh2)
     self.assertTrue(mesh2 != mesh1)
Пример #7
0
 def test_mesh_n_triangles01(self):
     mesh1 = Mesh(vertices=np.arange(5),
                  polygon_vertex_indices=[
                      [0, 1, 2],
                      [4, 5, 6, 8],
                  ],
                  triangle_vertex_indices=np.array([
                      [0, 1, 2],
                      [4, 5, 6],
                      [4, 6, 8],
                  ]))
     self.assertEqual(mesh1.n_triangles(), 3)
     self.assertTrue(mesh1.is_triangulated())
Пример #8
0
 def test_mesh_comparison08(self):
     mesh1 = Mesh(
         vertices=np.arange(3),
         polygon_vertex_indices=[[0, 1, 2, 4], [0, 1, 2, 4]],
         polygon_groups=[1, 0],
     )
     mesh2 = Mesh(
         vertices=np.arange(3),
         polygon_vertex_indices=[[0, 1, 2, 4], [0, 1, 2, 4]],
         polygon_groups=[1, 0],
     )
     self.assertTrue(mesh1 == mesh2)
     self.assertTrue(mesh2 == mesh1)
Пример #9
0
 def test_clone01(self):
     mesh_input = Mesh(vertices=np.arange(3),
                       polygon_vertex_indices=[[0, 1, 2, 4], [0, 1, 2, 4]],
                       polygon_groups=[1, 0],
                       group_names=["R", "Left"])
     mesh_ans = Mesh(vertices=np.arange(3),
                     polygon_vertex_indices=[[0, 1, 2, 4], [0, 1, 2, 4]],
                     polygon_groups=[1, 0],
                     group_names=["R", "Left"])
     mesh_res = mesh_input.clone()
     mesh_input.vertices[:] = 0
     self.assertEqual(mesh_ans, mesh_res)
     self.assertNotEqual(mesh_input, mesh_res)
Пример #10
0
 def test_clone02(self):
     mesh_input = Mesh(vertices=np.arange(3),
                       polygon_vertex_indices=[[0, 1, 2, 4]],
                       triangle_vertex_indices=np.array([[0, 1, 2],
                                                         [0, 2, 4]]))
     mesh_ans = Mesh(vertices=np.arange(3),
                     polygon_vertex_indices=[[0, 1, 2, 4]],
                     triangle_vertex_indices=np.array([[0, 1, 2], [0, 2,
                                                                   4]]))
     mesh_res = mesh_input.clone()
     mesh_input.vertices[:] = 0
     self.assertEqual(mesh_ans, mesh_res)
     self.assertNotEqual(mesh_input, mesh_res)
Пример #11
0
 def test_mesh_comparison05(self):
     mesh1 = Mesh(
         vertices=np.arange(3),
         polygon_vertex_indices=[[0, 1, 2, 4]],
         triangle_vertex_indices=np.array([[0, 1, 2], [0, 2, 4]]),
         polygon_groups=[-1],
     )
     mesh2 = Mesh(
         vertices=np.arange(3),
         polygon_vertex_indices=[[0, 1, 2, 4]],
         triangle_vertex_indices=np.array([[0, 1, 2], [0, 2, 4]]),
     )
     self.assertTrue(mesh1 == mesh2)
     self.assertTrue(mesh2 == mesh1)
Пример #12
0
    def test_set_vertices_and_compute_normals02(self):
        new_vertices = np.array([
            [0.1, 0, 0],
            [0, 50, 0],
            [1, 0, 0],
            [0, 0, 1],
            [0, 0, 0],
        ],
                                dtype=np.float32)

        mesh = Mesh(
            vertices=np.zeros_like(new_vertices),
            polygon_vertex_indices=[
                [1, 0, 4],
                [4, 2, 3],
            ],
            triangle_vertex_indices=np.array([
                [1, 0, 4],
                [4, 2, 3],
            ],
                                             dtype=np.int32),
        )
        ans = np.array([
            [0, 0, -1],
            [0, 0, -1],
            [0, -1, 0],
            [0, -1, 0],
            [0, -0.70710678, -0.70710678],
        ],
                       dtype=np.float32)
        self.assertFalse(mesh.has_normals())
        mesh.set_vertices_and_compute_normals(new_vertices)

        res = mesh.normals
        self.assertEqual(ans.shape, res.shape)
        self.assertTrue(np.allclose(ans, res))
Пример #13
0
 def test_mesh_has_uv01(self):
     mesh1 = Mesh(vertices=np.arange(3), polygon_vertex_indices=[[0, 1, 2]])
     self.assertFalse(mesh1.has_uv())
Пример #14
0
 def test_mesh_n_texture_vertices02(self):
     mesh1 = Mesh(vertices=np.arange(3),
                  polygon_vertex_indices=[[0, 1, 2]],
                  texture_vertices=np.arange(6),
                  texture_polygon_vertex_indices=[[2, 1, 0]])
     self.assertTrue(mesh1.n_texture_vertices(), 6)
Пример #15
0
 def test_mesh_comparison02(self):
     mesh1 = Mesh(vertices=np.arange(3), polygon_vertex_indices=[[0, 1, 2]])
     mesh2 = Mesh(vertices=np.arange(2), polygon_vertex_indices=[[0, 1, 2]])
     self.assertTrue(mesh1 != mesh2)
Пример #16
0
 def test_mesh_n_groups01(self):
     mesh1 = Mesh(vertices=np.arange(5), polygon_vertex_indices=[[0, 1, 2]])
     self.assertEqual(mesh1.n_groups(), 0)
Пример #17
0
 def test_mesh_has_normals02(self):
     mesh1 = Mesh(vertices=np.arange(3),
                  polygon_vertex_indices=[[0, 1, 2]],
                  normals=np.array([1, 2, 3]))
     self.assertTrue(mesh1.has_normals())
Пример #18
0
 def test_mesh_has_uv02(self):
     mesh1 = Mesh(vertices=np.arange(3),
                  polygon_vertex_indices=[[0, 1, 2]],
                  texture_vertices=np.arange(3),
                  texture_polygon_vertex_indices=[[2, 1, 0]])
     self.assertTrue(mesh1.has_uv())
Пример #19
0
 def test_mesh_n_groups03(self):
     mesh1 = Mesh(vertices=np.arange(5),
                  polygon_vertex_indices=[[0, 1, 2]],
                  group_names=["F", "U", "U"])
     self.assertEqual(mesh1.n_groups(), 3)