Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cura/ConvexHullJob.py8
1 files changed, 8 insertions, 0 deletions
diff --git a/cura/ConvexHullJob.py b/cura/ConvexHullJob.py
index 98f2deee30..2a943253fb 100644
--- a/cura/ConvexHullJob.py
+++ b/cura/ConvexHullJob.py
@@ -40,6 +40,14 @@ class ConvexHullJob(Job):
vertex_data = mesh.getTransformed(self._node.getWorldTransformation()).getVertices()
# Don't use data below 0. TODO; We need a better check for this as this gives poor results for meshes with long edges.
vertex_data = vertex_data[vertex_data[:,1] >= 0]
+
+ # Round the vertex data to 1/10th of a mm, then remove all duplicate vertices
+ # This is done to greatly speed up further convex hull calculations as the convex hull
+ # becomes much less complex when dealing with highly detailed models.
+ vertex_data = numpy.round(vertex_data, 1)
+ duplicates = (vertex_data[:,0] == vertex_data[:,1]) | (vertex_data[:,1] == vertex_data[:,2]) | (vertex_data[:,0] == vertex_data[:,2])
+ vertex_data = numpy.delete(vertex_data, numpy.where(duplicates), axis = 0)
+
hull = Polygon(vertex_data[:, [0, 2]])
# First, calculate the normal convex hull around the points