From 707103b6064612a68a0b9782c80413b0dee29589 Mon Sep 17 00:00:00 2001 From: Marius Kintel Date: Mon, 2 Feb 2015 18:57:21 -0500 Subject: [PATCH] #793 Tessellate PolySets before rendering to properly support concave polygons --- src/CGALRenderer.cc | 9 ++++++++- src/CSGTermEvaluator.cc | 16 +++++++++++++++- .../cgalpngtest/issue1061-expected.png | Bin 10709 -> 10301 bytes .../opencsgtest/issue1061-expected.png | Bin 11401 -> 10864 bytes .../polyhedron-concave-test-expected.png | Bin 7271 -> 7514 bytes .../throwntogethertest/issue1061-expected.png | Bin 11401 -> 10864 bytes .../polyhedron-concave-test-expected.png | Bin 7271 -> 7514 bytes 7 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/CGALRenderer.cc b/src/CGALRenderer.cc index c9b816c5..a3505856 100644 --- a/src/CGALRenderer.cc +++ b/src/CGALRenderer.cc @@ -32,6 +32,7 @@ // dxfdata.h must come first for Eigen SIMD alignment issues #include "dxfdata.h" #include "polyset.h" +#include "polyset-utils.h" #include "printutils.h" #include "CGALRenderer.h" @@ -44,7 +45,13 @@ CGALRenderer::CGALRenderer(shared_ptr geom) { if (shared_ptr ps = dynamic_pointer_cast(geom)) { - this->polyset = ps; + assert(ps->getDimension() == 3); + // We need to tessellate here, in case the generated PolySet contains concave polygons + // See testdata/scad/3D/features/polyhedron-concave-test.scad + PolySet *ps_tri = new PolySet(3, ps->convexValue()); + ps_tri->setConvexity(ps->getConvexity()); + PolysetUtils::tessellate_faces(*ps, *ps_tri); + this->polyset.reset(ps_tri); } else if (shared_ptr poly = dynamic_pointer_cast(geom)) { this->polyset.reset(poly->tessellate()); diff --git a/src/CSGTermEvaluator.cc b/src/CSGTermEvaluator.cc index 4adfa62d..bae72d4a 100644 --- a/src/CSGTermEvaluator.cc +++ b/src/CSGTermEvaluator.cc @@ -11,6 +11,7 @@ #include "printutils.h" #include "GeometryEvaluator.h" #include "polyset.h" +#include "polyset-utils.h" #include #include @@ -99,7 +100,20 @@ static shared_ptr evaluate_csg_term_from_geometry(const State &state, // We cannot render Polygon2d directly, so we preprocess (tessellate) it here shared_ptr g = geom; shared_ptr p2d = dynamic_pointer_cast(geom); - if (p2d) g.reset(p2d->tessellate()); + if (p2d) { + g.reset(p2d->tessellate()); + } + else { + // We cannot render concave polygons, so tessellate any 3D PolySets + shared_ptr ps = dynamic_pointer_cast(geom); + if (ps) { + assert(ps->getDimension() == 3); + PolySet *ps_tri = new PolySet(3, ps->convexValue()); + ps_tri->setConvexity(ps->getConvexity()); + PolysetUtils::tessellate_faces(*ps, *ps_tri); + g.reset(ps_tri); + } + } shared_ptr t(new CSGTerm(g, state.matrix(), state.color(), stream.str())); if (modinst->isHighlight()) { diff --git a/tests/regression/cgalpngtest/issue1061-expected.png b/tests/regression/cgalpngtest/issue1061-expected.png index 78bd8525d0e2ef89c7874f2d97f9afbf5f0c0804..ef40d78385aa08fd75f2cff6f3f060de2db8418f 100644 GIT binary patch literal 10301 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 J_jk~v{tqGIDNO(X diff --git a/tests/regression/opencsgtest/polyhedron-concave-test-expected.png b/tests/regression/opencsgtest/polyhedron-concave-test-expected.png index c45cc11cb7c72da78addcc2558521b66cb42f99a..8e3dd762bb895573ac69dca2e661540997cf514d 100644 GIT binary patch literal 7514 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 J_jk~v{tqGIDNO(X diff --git a/tests/regression/throwntogethertest/polyhedron-concave-test-expected.png b/tests/regression/throwntogethertest/polyhedron-concave-test-expected.png index c45cc11cb7c72da78addcc2558521b66cb42f99a..8e3dd762bb895573ac69dca2e661540997cf514d 100644 GIT binary patch literal 7514 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