1

Windows 10 ships with "3D Builder", a Universal App that contains utility functions to prepare STL, OBJ, 3DS, and other files that represent geometries for 3D printing.

The utility looks like this: 3D Builder

In particular, they have triangle mesh functions there that:

  • "Detect" when a mesh is not suitable for 3D printing;
  • "Repair" so that the mesh isn't right it prepares it, by removing internal faces, closing "holes" in the outer surface, etc.;
  • "Simplify" by removing redundant triangles, such as those found to be adjacent and co-planar; and
  • "Plane Cut", slicing a mesh through an arbitrarily positioned plane and filling in a surface on that plane to re-enclose the geometry, sometimes followed by a "Detect" and "Repair".

Every copy of Windows 8.1 and 10 has this utility at no additional cost. That says to me that the functions are well-known and as far as I've been able to test, reliable for virtually all inputs to the 3D printing use case. I used some of the messiest STL files I could find to prove this thing.

The question is: Which algorithms can be used for those functions?

(Secondarily: Where are they found for a .NET/WPF/UWP environment? Did they expose the functions in an API I can use for a slightly dissimilar use case?)

In the builder the functions look like this:

Simplify (the tractor top and sides have fewer facets):

Simplify Output

Slice, UI before processing:

Slice, UI before processing

Slice, after processing and then one "Simplify" pass:

Slice, after processing

Rob Perkins
  • 521
  • 4
  • 17
  • 8
    It's obvious you put a lot of work into composing this question. Unfortunately, there's no way for us to answer it here. We're not Microsoft. – MetaFight Mar 23 '16 at 14:55
  • Microsoft people don't look here? I thought we were crowdsourced. – Rob Perkins Mar 23 '16 at 23:38
  • If you want an answer from a Microsoft employee asking SE is not likely to give you that. It is *possible* that somebody from Microsoft with that knowledge is part of this community, but definitely not guaranteed. So, why not ask Microsoft directly instead? – MetaFight Mar 24 '16 at 00:18
  • Because 20 years of programming on the Microsoft stack has taught me little is more futile than asking Microsoft, even through MSDN, about the implementations of their own programs; they're simply not structured so that their code becomes documented. I thought a graphics programmer looking here would see the wireframes change and be able to suggest something robust. Instead I see that an hour can't go by without someone starting a closure wave. This is a narrow question with two followups: Which algorithms do these things to triangle meshes? – Rob Perkins Mar 24 '16 at 01:16
  • Rob, if you're not looking for the specific implementation Microsoft used then your question might still be viable. It's the Microsoft-specific side of things that is problematic. I'd recommend you remove the MS emphasis in your question and rephrase exactly how you just have: "Which algorithms do these things to triangle meshes?" <-- That more general question is *far* more answerable. – MetaFight Mar 24 '16 at 02:06
  • That's fair to say. Thank you for the advice, I've restructured the question as you recommended. I'm leaving the MS-specific followups in place, but I agree that the question is answerable without considering the implementation detail. – Rob Perkins Mar 25 '16 at 01:23
  • 4
    Since answering is blocked, I'll glaze over my answer: The slice operation is implemented using [Constructive Solid Geometry](https://en.wikipedia.org/wiki/Constructive_solid_geometry) algorithms. The simplify operation is an implementation of mesh optimization. The "detect" operation most likely is a convexity test. The CSG algorithm makes it possible to detect holes so that covers that. Hope this helps. – doug65536 Mar 25 '16 at 08:51
  • @doug65536, it looks like the question was reopened, if you want to post an answer. – Rob Perkins Apr 02 '16 at 03:20

0 Answers0