On Dec 3, 2016, at 14:25, Ronaldo rcmpersiano@gmail.com wrote:
I don't believe that polyhedron repair is possible. The set of non-manifold
topologies are much broader that the manifold ones. And to find a manifold
that meet most the adjacencies of a non-manifold is an ill-defined problem.
I think we can constrain the allowed input to be locally manifold, but where multiple topologically different vertices can have the same position in space, as I suggested in my previous email in this thread.
-Marius
On Dec 3, 2016, at 15:29, Carsten Arnholm arnholm@arnholm.org wrote:
Ok, I guess my code will fail on some of them... if there is an index of those cases it could be of interest to try.
Not yet, but I’ll start categorizing more failing tests and list them under the appropriate github issue.
As a start, it would be interesting if you could handle the 8 test cases listed here:
https://github.com/openscad/openscad/issues/1580
They all cause zero area triangles on export from OpenSCAD today.
However, let me give you an idea of the algorithm.
By first glance it looks like your algorithm is equivalent to iteratively performing edge flips, except you handle all vertex-edge intersections per split operation, instead of just one.
I’ll take a closer look later.
-Marius
On 03. des. 2016 20:25, Ronaldo wrote:
I don't believe that polyhedron repair is possible.
Well, it is possible under certain assumptions, most importantly when a
model can be interpreted as manifold, using coordinate matching, and a
couple of other techniques.
In 3d printing, most models are (or should be) manifolds, so it is a
reasonable assumption to work from when attempting to 'heal'
But the healing algorithms are not able to read your mind, so to turn
your example into a usable manifold (if that is your goal), you need to
edit it.
Carsten Arnholm
On 03. des. 2016 22:00, Marius Kintel wrote:
As a start, it would be interesting if you could handle the 8 test cases listed here:
https://github.com/openscad/openscad/issues/1580
They all cause zero area triangles on export from OpenSCAD today.
Not sure I understood which exact 8 cases that is, but I tried these:
issue1580-back-to-back.stl result: no warnings
issue1580-back-to-back2.stl result: no warnings
issue1580-zero-area-triangle.stl result: no warnings
issue945e.stl result: no warnings
issue945f.stl result: no warnings
issue1803.stl result: no warnings
adns2610_dev_circuit_inv_ascii.stl result: no warnings (ascii)
issue1876.stl result: no warnings
See attached file with more info.
In short, all appears to end with no warning, and using simple
visualisation of the resulting AMF file seems to confirm they are all ok.
issue1876.stl was an interesting case of having also a duplicated face,
it was handled ok.
By first glance it looks like your algorithm is equivalent to
iteratively performing edge flips, except you handle all vertex-edge
intersections per split operation, instead of just one.
I’ll take a closer look later.
Yes it is true all edge splits are done done at once for any given edge.
From the above tests, my scheme seems to work, but I guess there are
more complex problems
Carsten Arnholm
On Dec 3, 2016, at 17:51, Carsten Arnholm arnholm@arnholm.org wrote:
Not sure I understood which exact 8 cases that is, but I tried these:
Cool, looks like you’re a good step ahead of me in terms of success rate.
From the above tests, my scheme seems to work, but I guess there are more complex problems
There are more complex ones, but they’re all based on original bug reports which I haven’t properly organized yet.
-Marius