3D mit Processing


Analytische Flächen drucken



Bonan-Jeener-Klein Surface

Falls Sie sich in Blender noch nicht auskennen, lesen Sie sich zunächst folgende Seiten durch:
How to Prepare a Model for 3D Printing

Parametrische Flächen drucken

Inzwischen besitzen viele Bastler einen 3D-Drucker. Was liegt näher, als die berechneten Flächen in der Form einer Datei dem Programm zu übergeben, das damit den Ausdruck vorbereitet. Ein solches Programm nennt man Slicer .
Leider ist die Sache nicht ganz so einfach, denn bisher haben wir keine derartige Datei erzeugen können. In der Regel erwartet der Slicer eine stl-Datei. Beginnen wir mit einem drucktechnisch einfachen Fall: Den Sketch dazu finden Sie im Abschnitt "Parametrische Flächen" . Wir benötigen hierfür eine Bibliothek :

import nervoussystem.obj.*; //Export als obj-Datei

Dadurch werden wir in der Lage sein, die 3D-Informationen in einer obj-Datei abzuspeichern. Manche Slicer können direkt damit umgehen. Für die anderen importieren wir die Datei in Blender und exportieren sie, nach einigen Operationen, als stl-Datei.
Wir führen eine boolean-Variable namens "aufzeichnen" ein, die man per geeignetem Tastendruck verändern kann. Dann muss im draw()-Teil folgender Code stehen:

if(aufzeichnen) {
MeshExport obJ = (MeshExport) createGraphics(400,400,"nervoussystem.obj.OBJExport","infos3D.obj");
obJ.setColor(true);
obJ.beginDraw();
gridZeichnen(obJ);
obJ.endDraw();
obJ.dispose();
aufzeichnen = false;
}


Nach entsprechendem Tastendruck findet man drei neue Dateien im Sketch-Ordner, wobei hier nur die Datei info3D.obj benötigt wird. Die Auflösung ist hier auf 400x400 eingestellt. Diese können Sie nach Ihren Bedürfnissen anpassen.

Zunächst wollen wir das Ei in eine "3D-druckbare Form" bringen. Mit anderen Worten: Wir müssen eine Mannigfaltigkeit aus den 3D-Daten erzeugen. Ob das gelungen ist, kann man in Blender testen:

Was soll bei einem solch einfachen Netz schon schief gehen? Links oben erkennt man, dass Blender keinesfalls zufrieden ist. Rechts daneben sehen wir den Grund: Es gibt ein Loch im Netz oben und unten. Das kann man Blender automatisch reparieren lassen, indem man "Make Manifold" wählt. Danach ist alles soweit in Ordnung, bis auf die überhängenden Flächen. Damit kommen aber die meisten Slicer zurecht. Notfalls werden leicht zu entfernende Stützstrukturen eingefügt.

Bei der ganz oben abgebildeten Bonan-Jeener-Klein Fläche ist die Sache nicht mehr so einfach. Schaut man sich das folgende Bild an, ist klar, woran das liegt:

Vor der Bearbeitung mit Blender bekommen wir die Nachricht, dass sich 616 Flächen (hier Vierecke) schneiden. In der Mitte ist die Bonan-Jeener-Klein Fläche in der Mitte durchgeschnitten dargestellt. (Außerdem wurde die Anzahl der Teilflächen, der besseren Übersicht wegen, stark verkleinert.) Die roten Pfeile zeigen die Stelle, an denen sich die Teilflächen durchdringen. Nach der Bearbeitung durch Blender ist die Anzahl der Schnitte zwar verringert, aber immer noch sind es 386 solche Problemstellen. Händisches Löschen derartiger Flächen ist ein Aufwand, der sich nicht lohnt. Denn es entstehen dadrurch Lücken. Die drei Fehlermeldungen am Schluss stellt für die meisten Slicer kein Problem dar. "Intersect Face" allerdings bringt viele zum straucheln. Wie Sie im Bild oben sehen, gelang der 3D-Druck dennoch. Wenn Sie Glück haben, kennt der äußerst mächtige, kostenlose Slicer UltiMaker Cura Ihren 3D-Drucker. Denn dessen automatische Korrektur löst das Problem ohne Mühe.
Implizite Flächen drucken

Links unten sehen Sie die ausgedruckte Trefoil-Fläche, rechts daneben das berechnete Bild für eine etwas schlankere Variante. Verwendet wurde der Sketch nach Idee 4 im Kapitel Impizite Flächen, in dem die Bibliothek toxiclibs verwendet wurde.


Trefoil Surface

Mit wenigen Zeilen lässt sich eine Triangulierung als stl-Datei erstellen:


beginShape(TRIANGLES);
gfx.mesh( mesh );
endShape();
mesh.saveAsSTL( sketchPath( "trefoil.stl" ));

In den Sketch wurde noch "Laplacian Smooth" eingebaut:

new LaplacianSmooth().filter(mesh, 1);

Eine Methode "voxelizeMesh" wurde ebenfalls noch untergebracht. Sie wissen ja bereits, was man unter Voxeln versteht: Hier wird unter Informationsverlust ein Gitter aus Voxeln errechnet.

Menu