From cda7029c1480b7a406b4993c53f4b41465c873c0 Mon Sep 17 00:00:00 2001 From: Paul McCarthy <pauldmccarthy@gmail.com> Date: Tue, 12 Nov 2019 16:35:20 +0000 Subject: [PATCH] TEST: needsFixing regression test --- tests/test_mesh.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tests/test_mesh.py b/tests/test_mesh.py index cfd35f81c..f5ae5ead3 100644 --- a/tests/test_mesh.py +++ b/tests/test_mesh.py @@ -254,6 +254,28 @@ def test_needsFixing(): assert fslmesh.needsFixing(verts, tris_cw, -fnormals, blo, bhi) assert np.all(np.isclose(mesh.indices, tris_ccw)) + # regression: needsFixing used to use the first triangle + # of the nearest vertex to the camera. But this will fail + # if that triangle is facing away from the camera. + verts = np.array([ + [ -1, -1, -1], # vertex 0 will be nearest the camera + [ 0.5, -0.5, 0], + [ 1, -1, 0], + [ 1, 1, 1], + [ 0, -1, 1]]) + tris = np.array([ + [0, 4, 1], # first triangle will be facing away from the camera + [0, 1, 2], + [1, 3, 2], + [0, 2, 4], + [2, 3, 4], + [1, 4, 3]]) + mesh = fslmesh.Mesh(tris, vertices=verts, fixWinding=True) + fnormals = fslmesh.calcFaceNormals(verts, tris) + blo = verts.min(axis=0) + bhi = verts.max(axis=0) + assert not fslmesh.needsFixing(verts, tris, fnormals, blo, bhi) + def test_trimesh_no_trimesh(): -- GitLab