Um einen Scan zu drucken oder sein Volumen zu berechnen, muss das Mesh ein Volumen umschließen. Es darf keine offenen Randkanten, keine nicht-manifold Kanten oder Vertices und keine Selbstüberschneidungen aufweisen. Das Open3D 0.19.0 Mesh-Tutorial definiert ein wasserdichtes Mesh als eines, das kanten-manifold, vertex-manifold und nicht selbstüberschneidend ist. Im Beispiel eines offenen Kastens ist das Mesh kanten-manifold, wenn Randkanten erlaubt sind, besteht die Prüfung jedoch nicht, wenn Randkanten nicht erlaubt sind, und ist nicht wasserdicht. Das Bestehen dieser Prüfungen zeigt, dass das Mesh topologisch geschlossen ist. Es zeigt nicht, dass das Mesh den Abmessungen des physischen Objekts entspricht.
Die Orientierung ist ein separater Schritt. is_orientable von Open3D meldet, ob die Dreiecke so orientiert werden können, dass alle Normalen nach außen zeigen. Der offene Kasten im Tutorial ist orientierbar, aber nicht wasserdicht, und die Prüfung ändert die aktuellen Normalen nicht (Open3D). Prüfen oder setzen Sie vor der Volumenberechnung die Orientierung des geschlossenen Meshs. CGAL dokumentiert beispielsweise orient_to_bound_a_volume, das die verbundenen Komponenten eines geschlossenen Polygon-Meshs so orientiert, dass sie ein Volumen begrenzen (CGAL Polygon Mesh Repair-Handbuch).
Wasserdicht, manifold und selbstüberschneidend: die Softwaredefinitionen
Jedes Werkzeug definiert diese Begriffe selbst, daher verwenden andere Programme möglicherweise keine identischen Definitionen. Die Tabelle fasst die Formulierungen im Open3D 0.19.0 Mesh-Tutorial zusammen.
| Prüfung | Open3D-Beschreibung | Was sie aussagt |
|---|---|---|
| Kanten-manifold | Jede Kante begrenzt ein oder zwei Dreiecke; der Parameter allow_boundary_edges legt fest, ob Randkanten akzeptiert werden | Ob Kanten von zu vielen Flächen geteilt werden; bei nicht erlaubten Rändern auch, ob offene Kanten verbleiben |
| Vertex-manifold | Der Stern des Vertex ist kanten-manifold und kantenverbunden | Ob Flächen nur an einem einzelnen Vertex statt entlang einer Kante verbunden sind (ein Fehler bei der Vertex-Manifold-Eigenschaft) |
| Selbstüberschneidung | is_self_intersecting gibt True zurück, „wenn es ein Dreieck im Mesh gibt, das ein anderes Mesh schneidet“ (Formulierung von Open3D) | Ob Flächen einander durchdringen |
| Wasserdicht | Kanten-manifold, vertex-manifold und nicht selbstüberschneidend; geprüft durch is_watertight | Nur topologische Geschlossenheit, keine Maßgenauigkeit |
| Orientierbar | Dreiecke können so orientiert werden, dass alle Normalen nach außen zeigen; geprüft durch is_orientable | Ob eine konsistente Orientierung möglich ist; dies setzt weder die Normalen noch beweist es die Geschlossenheit |
Warum Scan-Meshes diese Prüfungen nicht bestehen
Aus Scans abgeleitete Meshes liegen selten perfekt vor. Das CGAL 6.2.1 Polygon Mesh Repair-Handbuch weist darauf hin, dass geometrische Modelle, die mit unpräzisen Werkzeugen oder durch unvollkommene Prozesse erfasst wurden, häufig Defekte wie inkonsistente Orientierungen, Degenerierungen, Lücken, fehlende Daten, nicht-manifold Merkmale oder Selbstüberschneidungen aufweisen. Dies ist eine allgemeine Aussage und keine Diagnose eines bestimmten Scanners oder Workflows.
Grenzen prüfen, bevor etwas geändert wird
In der Mesh-Terminologie ist ein Loch eine Schleife aus Randkanten. CGAL beschreibt Randkanten als Kanten mit nur einer inzidenten Nicht-Null-Fläche (CGAL). is_edge_manifold von Open3D besitzt einen Parameter allow_boundary_edges. Wenn die Prüfung einmal mit erlaubten und einmal mit nicht erlaubten Randkanten ausgeführt wird, lassen sich nicht-manifold Kanten von offenen Grenzen unterscheiden (Open3D).
Der Text im Open3D-Tutorial besagt, dass nicht-manifold Kanten rot, Randkanten grün und nicht-manifold Vertices als grüne Punkte angezeigt werden (Open3D). Dieses Farbschema gehört zum Tutorialbeispiel und ist kein allgemeiner Standard. Die damit vermittelte Vorgehensweise gilt dennoch: Sehen Sie sich an, wo sich jede Grenze befindet, bevor Sie etwas ändern.
Redaktionelle Erläuterung: Klassifizieren Sie jede Grenze. Eine beabsichtigte Durchgangsbohrung, etwa eine Bohrung durch eine Halterung, kann eine geschlossene umgebende Oberfläche haben; ihre Wände sind Teil dieser Oberfläche. Eine nicht geschlossene Grenze ist etwas anderes. Eine offene Grenze als beabsichtigt zu bezeichnen, macht das Mesh nicht für eine Berechnung eines geschlossenen Volumens geeignet. Das Mesh bleibt offen, bis die Oberfläche geschlossen ist.
Reparaturoptionen und was jede davon ändern kann
| Reparatur | Worauf sie abzielt | Was sie ändern kann oder nicht leisten kann |
|---|---|---|
| Randkanten verbinden (CGAL) | Doppelte Randkanten und Vertices | Die Eingabe sollte eine Manifold-Oberfläche darstellen; andernfalls kann das Verbinden fehlschlagen |
| Nicht-manifold Vertices duplizieren (CGAL) | Nicht-manifold Vertices | Das Mesh wird kombinatorisch manifold, ist aber aus geometrischer Sicht weiterhin nicht manifold |
| Löcher füllen (CGAL) | Schleifen aus Randkanten | Patches für komplexe Grenzen können sich selbst überschneiden; das Füllen kann auf Löcher begrenzt werden, die einen gewählten Durchmesser oder eine gewählte Anzahl von Kanten nicht überschreiten |
| Automatische Reparatur in PrusaSlicer | Beschädigte Druckmodelle | Repariert nur bis zu einem gewissen Grad; nicht alle beschädigten Modelle können automatisch repariert werden |
| Meshmixer „Make solid“ | Von Prusa als externe Reparaturoption aufgeführt | Als fast immer funktionierend beschrieben, jedoch mit Auflösungsverlust |
Die CGAL-Zeilen basieren auf dem CGAL 6.2.1 Polygon Mesh Repair-Handbuch. Die Zeilen zu PrusaSlicer und Meshmixer geben die Charakterisierungen aus der Wissensdatenbank von Prusa Research wieder. Die Seite von Prusa ist für ältere Produktfamilien gekennzeichnet. Dieser Artikel bestätigt weder die aktuelle Verfügbarkeit eines Reparaturdienstes noch von Meshmixer.
Das CGAL-Beispiel legt seine Grenze für die Lochgröße als Durchmesser fest, ohne eine Einheit zu nennen (CGAL). Die Grenze folgt den eigenen Koordinateneinheiten des Meshs. Prüfen Sie, ob Ihr Export Millimeter, Meter oder eine andere Einheit verwendet, bevor Sie sie festlegen.
Jede Reparatur verändert die Daten, die Sie drucken oder messen werden. Dokumentieren Sie, welcher Vorgang ausgeführt wurde, welche Parameter Sie verwendet haben und welche Bereiche er verändert hat, und legen Sie die Reparatur in Ihrer Lieferung offen.
Beabsichtigte Löcher und dünne Wände erhalten
Automatische Werkzeuge können die Konstruktionsabsicht nicht ableiten. Die Beschränkung des Lochfüllens auf kleine Löcher (CGAL) schützt große vorgesehene Öffnungen besser als das Füllen jedes Lochs, kann aber weiterhin ein kleines beabsichtigtes Loch schließen. Prusa führt Auflösungsverlust als Nachteil von Meshmixers „Make solid“ auf (Prusa Research). Behandeln Sie beabsichtigte Löcher und dünne Wände als Abnahmekriterien. Vergleichen Sie das Ergebnis nach jeder Reparatur mit dem unveränderten Scan und bestätigen Sie, dass diese Merkmale erhalten bleiben. Die hier verwendeten Quellen nennen keine Schwellenwerte für Wandstärken oder druckerspezifische Mindestgrößen von Merkmalen; entnehmen Sie diese daher der Dokumentation Ihres Druckers und Materials.
Vorgeschlagener Validierungsworkflow vor dem Drucken oder der Volumenberechnung
Die folgenden Schritte sind redaktionelle Empfehlungen. 3D Mag hat sie nicht als Test durchgeführt oder berichtet.
- Bewahren Sie den unveränderten Scan-Export als Referenzkopie auf.
- Prüfen Sie in Ihrem Werkzeug den Kanten-Manifold-Status mit erlaubten und nicht erlaubten Randkanten, dann den Vertex-Manifold-Status, Selbstüberschneidungen, Wasserdichtheit und Orientierbarkeit. Dokumentieren Sie Werkzeugname und Version.
- Visualisieren Sie Randkanten und nicht-manifold Elemente. Unterscheiden Sie vorgesehene Durchgangsbohrungen mit geschlossener umgebender Oberfläche von nicht geschlossenen Grenzen, Erfassungslücken und Artefakten.
- Wählen Sie für jedes Problem die engste Reparatur: Verbinden Sie doppelte Ränder, teilen Sie nicht-manifold Vertices auf oder füllen Sie nur Löcher, die eine dokumentierte Größengrenze in den Einheiten des Meshs nicht überschreiten.
- Führen Sie nach jeder Reparatur jede Prüfung erneut aus. CGAL weist darauf hin, dass ein gefüllter Patch für eine komplexe Lochgrenze Selbstüberschneidungen haben kann (CGAL).
- Vergleichen Sie das reparierte Mesh mit der Referenzkopie und bestätigen Sie, dass beabsichtigte Löcher und dünne Wände erhalten bleiben.
- Prüfen oder setzen Sie die Orientierung der geschlossenen Komponenten so, dass sie das beabsichtigte Volumen begrenzen, und prüfen Sie dann erneut, bevor Sie das Volumen berechnen. Falls das Volumen aus einem reparierten Mesh stammt, geben Sie dies an.
- Dokumentieren Sie jede Reparatur, ihre Parameter und die betroffenen Bereiche in den Lieferhinweisen.
Fragen von Leserinnen und Lesern
Ist ein manifold Mesh automatisch wasserdicht? Nein. In Open3D ist der offene Kasten des Tutorials kanten-manifold, wenn Randkanten erlaubt sind, besteht die Kanten-Manifold-Prüfung jedoch nicht, wenn Randkanten nicht erlaubt sind. Er ist orientierbar, aber nicht wasserdicht (Open3D).
Sollte ich jedes Loch automatisch füllen? Nein. Erhalten Sie vorgesehene Durchgangsbohrungen, deren umgebende Oberfläche geschlossen ist, füllen Sie nicht geschlossene Grenzen gezielt, prüfen Sie das Mesh erneut und legen Sie jede Reparatur offen.
Bedeutet eine bestandene Wasserdichtheitsprüfung, dass das Mesh maßgenau ist? Nein. Topologieprüfungen testen Konnektivität und Überschneidungen. Sie messen keine Toleranz gegenüber dem physischen Objekt.
Kann ein Slicer meinen Scan reparieren? Manchmal, aber nicht immer. Prusa sagt, dass PrusaSlicer Modelle nur bis zu einem gewissen Grad repariert und nicht alle beschädigten Modelle automatisch repariert werden können (Prusa Research).
Weiterführender Hintergrund: So scannen Sie ein Objekt für den 3D-Druck und Die STL-Datei verstehen.
Quellen
Dieser Erklärartikel basiert auf zitierten veröffentlichten Quellen; 3D Mag hat keine praktischen Tests durchgeführt. Sponsoring des Herausgebers.