From 86667e2351a47d2be5d269e8b74042984461f7aa Mon Sep 17 00:00:00 2001 From: Jeff Terrace Date: Wed, 8 Aug 2012 17:21:00 -0400 Subject: [PATCH] Made bounds info be robust to a mesh that has no points --- meshtool/filters/print_filters/print_bounds.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/meshtool/filters/print_filters/print_bounds.py b/meshtool/filters/print_filters/print_bounds.py index e69b7da..2d67c65 100644 --- a/meshtool/filters/print_filters/print_bounds.py +++ b/meshtool/filters/print_filters/print_bounds.py @@ -29,6 +29,9 @@ def centerFromBounds(bounds): return numpy.array([x,y,z], dtype=numpy.float32) def iter_prims(mesh): + if mesh.scene is None: + return + for boundobj in itertools.chain(mesh.scene.objects('geometry'), mesh.scene.objects('controller')): if isinstance(boundobj, collada.geometry.BoundGeometry): boundgeom = boundobj @@ -67,7 +70,11 @@ def getBoundsInfo(mesh): maxx = max(maxx, verts[:,:,0].max()) maxy = max(maxy, verts[:,:,1].max()) maxz = max(maxz, verts[:,:,2].max()) - + + pts = [minx, maxx, miny, maxy, minz, maxz] + if INF in pts or NEGINF in pts: + minx, maxx, miny, maxy, minz, maxz = 0, 0, 0, 0, 0, 0 + minpt = numpy.array([minx, miny, minz], dtype=numpy.float32) maxpt = numpy.array([maxx, maxy, maxz], dtype=numpy.float32) bounds = (minpt, maxpt) @@ -84,6 +91,11 @@ def getBoundsInfo(mesh): maxdist = dists[maxidx] maxpt = verts[maxidx] + pts = [maxdist, maxpt[0], maxpt[1], maxpt[2]] + if INF in pts or NEGINF in pts: + maxdist = 0 + maxpt[:] = 0 + return { 'bounds': bounds, 'center': center,