File: test_merge.py

package info (click to toggle)
trimesh 4.5.1-3
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 33,416 kB
  • sloc: python: 35,596; makefile: 96; javascript: 85; sh: 38
file content (53 lines) | stat: -rw-r--r-- 1,561 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
try:
    from . import generic as g
except BaseException:
    import generic as g


class MargeTest(g.unittest.TestCase):
    def test_cube(self):
        """
        Test PointCloud object
        """

        m = g.trimesh.creation.box()

        assert m.vertices.shape == (8, 3)
        assert m.is_volume
        assert m.euler_number == 2

        # stack a bunch of unreferenced vertices
        m.vertices = g.np.vstack((m.vertices, g.random((10000, 3))))
        assert m.euler_number == 2
        assert m.vertices.shape == (10008, 3)
        assert m.referenced_vertices.sum() == 8
        copied = m.copy()

        # should remove unreferenced vertices
        m.merge_vertices()
        assert len(m.vertices) == 8
        assert m.is_volume
        assert m.euler_number == 2
        assert m.referenced_vertices.sum() == 8

        m.update_vertices(m.referenced_vertices)
        assert len(m.vertices) == 8
        assert m.is_volume
        assert m.euler_number == 2
        assert m.referenced_vertices.sum() == 8

        # check the copy with an int mask and see if inverse is created
        assert copied.referenced_vertices.sum() == 8
        assert copied.vertices.shape == (10008, 3)
        mask = g.np.nonzero(copied.referenced_vertices)[0]

        copied.update_vertices(mask)
        assert len(copied.vertices) == 8
        assert copied.is_volume
        assert copied.euler_number == 2
        assert copied.referenced_vertices.sum() == 8


if __name__ == "__main__":
    g.trimesh.util.attach_to_log()
    g.unittest.main()