From 0b4964f6296a278719a47d668a5da666c3a8424e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Sun, 26 Nov 2017 02:48:09 +0100 Subject: [PATCH] deal with zero-length normals --- src/c3nav/mapdata/render/engines/wavefront.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/c3nav/mapdata/render/engines/wavefront.py b/src/c3nav/mapdata/render/engines/wavefront.py index 2b6dd9c2..33b8ba98 100644 --- a/src/c3nav/mapdata/render/engines/wavefront.py +++ b/src/c3nav/mapdata/render/engines/wavefront.py @@ -20,7 +20,7 @@ class WavefrontEngine(Base3DEngine): vertices_lookup = {vertex: i for i, vertex in enumerate(vertices, start=1)} normals = np.cross(facets[:, 1] - facets[:, 0], facets[:, 2] - facets[:, 1]).reshape((-1, 3)) - normals = normals / np.amax(np.absolute(normals), axis=1).reshape((-1, 1)) + normals = normals / np.maximum(1, np.amax(np.absolute(normals), axis=1)).reshape((-1, 1)) normals = tuple(set(tuple(normal) for normal in normals)) normals_lookup = {normal: i for i, normal in enumerate(normals, start=1)} @@ -50,7 +50,7 @@ class WavefrontEngine(Base3DEngine): if not facets.size: continue normals = np.cross(facets[:, 1] - facets[:, 0], facets[:, 2] - facets[:, 1]).reshape((-1, 3)) - normals = normals / np.amax(np.absolute(normals), axis=1).reshape((-1, 1)) + normals = normals / np.maximum(1, np.amax(np.absolute(normals), axis=1)).reshape((-1, 1)) normals = tuple(normals_lookup[tuple(normal)] for normal in normals) result += ((b'g %s_%d_%d\n' % (subgroup.encode(), i, j)) + (b'usemtl %s\n' % subgroup.encode()) +