Velocity Painting: 3D-Drucke Bemalen Mit Geschwindigkeit

Velocity Painting: 3D-Drucke bemalen mit Geschwindigkeit

Velocity Painting ist eine immer noch relativ unbekannte Methode, um 3D-Drucke mit einer (monochromen) Textur zu versehen, ohne die Geometrie des Modells zu verändern. Oder für die Nerd-Leserschaft formuliert: Velocity Painting ist wie Bumpmapping im 3D-Druck. Die Technik funktioniert, indem ein Programm einen schon geslicten GCode nimmt und darauf eine beliebige Graustufen-Textur (d.h. ein 2D-Bild) projiziert. Dann fügt es an den passenden Stellen Geschwindigkeits-Variationen in den GCode ein. Man muss sich das vorstellen wie bei einer Sprühdose: Wenn man diese während des Sprühens langsam bewegt, bekommt man einen fetten Strich. Je schneller die Bewegung, umso dünner wird der Strich. Dies ist beim 3D-Druck mit dem aus der Spitze extrudierten Plastik ganz ähnlich, und diesen Effekt kann man sich zunutze machen.

Wie man das meiste aus Velocity Painting herausholt

1. Wenn möglich keine horizontalen Linien in der Textur

Da die aufgebrachte Textur sich nur an den Stellen wirklich zeigt, wo der Kopf beschleunigt oder abbremst, sind Texturen mit horizontalen Linien sehr ungeeignet. Und je länger die Linie wird, umso schwächer wird der Velocity-Painting-Effekt. Abhilfe kann hier eine geringfügige Rotation der Textur oder des Grafik-Elements bringen (Ränder/Ecken abschneiden nicht vergessen!), welche horizontale Linien leicht schräg macht.

2. Maximaler Kontrast in der Textur

Je schwächer der Kontrast, umso weniger sichtbar der Effekt. Da wir die Stärke des Effekts ohnehin später über das Verhältnis der Druckgeschwindigkeiten zueinander regeln, sollten die Texturen selbst immer den maximalen Kontrast haben. Eine Tonwertspreizung kann – je nach Textur – zusätzlich Wunder wirken.

3. Nicht zu komplexe Texturen

Superfeine Details kann Velocity Painting nicht wiedergeben, genau wie Verläufe und unscharfe Bildteile. Halten Sie die Textur deshalb auch entsprechend grob. Dies hängt jedoch auch entscheidend von der Projektionsgröße der Textur aufs Modell später ab. Muster-Texturen eignen sich meist sehr gut. Eine Bildsuche nach Begriffen wie „floral texture tile pattern“ liefert unendlich viele gut geeignete Ergebnisse.

4. Geeignetes Mapping wählen

Je nach Modell und darauf aufzubringender Textur eignen sich unterschiedliche Mapping-Methoden. Ein im Vasenmodus gedruckter halbkugelförmiger Lampenschirm mit Mondkrater-Textur z.B. schreit quasi nach sphärischem Mapping. Für die meisten Vasen ist dagegen das zylindrische Mapping ideal. Ein eher flaches Objekt, das liegend gedruckt wird, eignet sich hingegen hervorragend für Z-Projektion.

5. Welche Modelle eignen sich?

Am besten funktioniert die Technik auf glatten Oberflächen, rund oder gerade. D.h. auf bereits hochdetaillierten Modellen wird eine Velocity Painting Textur schlussendlich nur wie unsauberer Druck aussehen. Bei Objekten im Vasenmodus hat Velocity Painting insbesondere mit (semi-)transparenten Filamenten eine ganz andere Optik als mit blickdichten Filamenten. Die unterschiedliche Lichtbrechung (Refraktion) des dünner/dicker extrudierten Filaments wird hier erst sichtbar. Da die Bemalung sich durch das ganze Objekt zieht, also auch durch innere Wandschichten und Infill, können auch solide Objekte in (semi-)transparentem Filament eine ganz eigene Optik entwickeln. Auf soliden Objekten mit blickdichtem Filament zeigt sich Velocity Painting hingegen nur als ganz leichte Relief-Struktur.

7. Welche Filamente eignen sich?

Velocity Painting ist grundsätzlich vom Material unabhängig, funktioniert also mit PLA genauso wie mit PETG, ABS oder anderen. Auf (Semi-)transparente Materialien hat Velocity Painting einen ganz anderen Effekt als auf blickdichte. Filamente mit (Glitzer)partikeln, die die „Schichten“ unsichtbar machen wie z.B. AMPERTEC Marmor oder die Fillamentum Galaxy-Serie, sind für Velocity Painting ziemlich ungeeignet. Aber bestimmte Holzfilamente lassen sich z.B. hingegen durchaus damit bemalen (siehe Bild).

6. Graustufen funktionieren nicht wirklich

Obwohl das Programm Graustufen grunsätzlich unterstützt und entsprechend in variierende Geschwindigkeit umrechnet, warnt der Autor, dass dies in der Praxis nicht auf dem Druck erkennbar ist. Unsere Tests bestätigen dies. Velocity Painting funktioniert am besten mit harten Kontrasten und Kanten, unscharfe Texturen oder Verläufe sind effektiv nicht darstellbar.

7. Linear Advance deaktivieren

Linear Advance ist ein in der 3D-Drucker Firmware Marlin implementiertes Feature, mit dem der Drucker Geschwindigkeitsänderungen antizipiert und den Filament-Druck rechtzeitig vor der Änderung verändert. Der Grund: Flüssiges Filament ist immer etwas elastisch und Extrusionen wirken sich im Gegensatz zu Kopfbewegungen somit erst mit Zeitverzögerung aus. Linear Advance sorgt dafür, dass die gewünschte Extrusionsbreite unabhängig von der Geschwindigkeit immer konstant gleich bleibt. Damit ist Linear Advance das exakte Gegenteil von Velocity Painting. Bei diesem wird die Geschwindigkeit und die daraus resultierenden optischen Unterschiede durch unterschiedliche Extrusionsbreite zum Zeichnen einer Textur verwendet.

Deshalb wird der Velocity-Painting-Effekt auf Druckern mit aktivem Linear Advance (z.B. Prusa i3 MK3) fast gar nicht bis gar nicht zu erkennen sein. Auf solchen Druckern sollten Sie dieses für Velocity Painting also deaktivieren. Je nach Drucker entweder im Slicer oder am Drucker in der Firmware – oder, falls man keine entsprechende Option findet, am Ende des Inits im GCodes (bzw. im Slicer beim Start GCode) durch den Befehl „M900 K0“.

Mit Velocity Painting bemalte Vasen in transparentem PLA (blau), PETG (lila) und Holz
Mit Velocity Painting bemalte Vasen in transparentem PLA (blau), PETG (lila) und Holz

Richtig slicen: Vorbereiten des Modells

Man sollte damit Velocity Painting optimal funktioniert mit bestimmten Einstellungen slicen. So sollte z.B. der Slicer beim Druck die Geschwindigkeit nicht variieren (das erledigt dann ja das Velocity Painting). D.h. Sie stellen eine globale Druckgeschwindigkeit ein und die Geschwindigkeit aller einzelnen Druckdisziplinen (d.h. Infill, äußere Wand, oberste Schicht etc.) sollten identisch sein, d.h. auf 100% (der globalen Druckgeschwindigkeit) stehen. Die einzige Ausnahme sind hier Stützstrukturen oder Rafts, da diese ohnehin später weggebrochen werden. Optionen wie die Druckgeschwindigkeit zu reduzieren bei sehr kleinen Schichten müssen Sie deaktivieren. Das Objekt sollte zudem im Zentrum des Druckbetts stehen, damit die Zentrierung des Texturierungs-Mittelpunkts später nicht zum Ratespiel wird.

Speed-Einstellungen für Velocity Painting in Slic3r
Speed-Einstellungen für Velocity Painting in Slic3r

Bemalen des GCodes mit Velocity Painting

Wie schon erwähnt, sollte die optimale Textur maximalen Kontrast haben und viele harte Kanten – dabei aber nicht zu detailliert sein. Schwarze Bildteile werden in der schnellen Geschwindigkeit gedruckt, weiße in der langsamen.

Mark Wheadon, der Erfinder des Velocity Painting, bietet auf seiner Homepage ein eigenes von Guillaume Vigneron entwickeltes GUI-Interface für sein Programm für Windows, Linux und MacOS an. Mit diesem können Sie beliebigen GCode nachträglich „bemalen“. Auch Repetier(-Host), eine beliebte Oberfläche zum Slicen, die mehrere Slicer und Programme (z.B. Cura, Sli3r, Slic3r Prusa Edition, Pronterface) in einem Programm vereinigt, hat ab Version 2.0.1 Velocity Painting direkt ins Programm integriert. Die Optionen sind dort fast identisch zum Standalone-Programm. Hier einige Informationen zur Verwendung:

Einstellbare Parameter

Zuerst laden Sie oben links den GCode des Modells und die Textur, die aufgebracht werden soll unter „Source file selection“ (bzw. nur die Textur in Repetier-Host, da das Objekt dort ja schon vorher geladen, positioniert und skaliert wurde). Weiter unten gibt es nun einige Einstellmöglichkeiten:

Width“ und „Height“ legen die Größe der projizierten Textur in Millimetern auf dem Objekt fest, „Z Offset“ verschiebt diese vertikal. Unter „Print speeds“ sollten Sie bei „Target“ („Trigger“ in Repetier-Host genannt) die Geschwindigkeit eintragen, in der sie den GCode gesliced haben, das ist die Geschwindigkeit, auf die Velocity Painting dann angewandt wird. „High“ ist die gewünschte schnelle Geschwindigkeit (in der Regel die des Original-GCodes), bei „Low“ sollten sie eine stark reduzierte Geschwindigkeit wählen (z.B. 1/3 oder weniger der „High“-Geschwindigkeit, maximal sollten es 1/2 sein). Vorsicht: Die meisten Slicer geben Geschwindigkeit in Millimeter pro Sekunde (mm/sec) an, also stellen Sie auch hier den Radiobutton entsprechend ein.

Texturierungsmodus und Textur-Positionierung

Bei „Paint type“ legen Sie fest, wie die 2D-Textur auf das 3D-Objekt aufgebracht wird. Mit „Projection x/y/z“ projizieren Sie die Textur von oben (Z), von vorne (X) oder von der Seite (Y) durch das Objekt. „Cylinder“, für Vasen-Objekte der bevorzugte Modus, legt die Textur wie ein Flaschen-Etikett zylindrisch ums Objekt (d.h. von oben betrachtet geht alles von einem Mittelpunkt aus), während „Spherical“ eine Kugelprojektion ist, ähnlich wie eine Weltkarte auf einen Globus aufgebracht wird.

Mit „X/Y Center“ legen Sie die Mitte des Druckers fest, was insbesondere bei spherischer und zylindrischer Projektion essentiell ist. In der Regel tragen Sie insbesondere bei kartesischen Druckern dort die Hälfte der X/Y Dimensionen ihres Druckbetts ein, nur bei 3D-Druckern, bei denen der Nullpunkt in der Mitte liegt (z.B. Deltas), tragen Sie hier 0/0 ein. Ein Unterschied zur Implementierung in Repetier-Host findet sich hier, denn „Z-Center“ ist bei Repetier-Host dasselbe, was bei der Velocity-Painting-App „Z Offset“ ist. Besonders wichtig ist dies natürlich für die sphärische Projektions-Methode, da dabei der Mittelpunkt zumeist nicht auf dem Druckbett liegen sollte.

Wenn Sie Ihre Einstellungen getroffen haben, können Sie das Profil auch in einer eigenen .cfg-Datei (oben rechts) speichern – und später wieder laden.

G-Code-Größe und Wasserdichtigkeit

Bitte beachten Sie, dass eine GCode-Datei durch Velocity Painting meist ein vielfaches so groß wird, da zig- oder hunderttausende von Geschwindigkeits-Variationen zusätzlich eingefügt werden. Ebenfalls wichtig: Vasen mit nur einer Schicht Wandstärke verlieren (auf Standard-Nozzles wie 0.4mm) durch Velocity Painting fast garantiert eine eventuell vorhandene Wasserdichtigkeit. D.h. falls diese später mit Flüssigkeit befüllt werden sollen, muss man sie zuerst mit passendem (transparenten!) Sprühlack o.ä. versiegeln.

Velocity Painting: 3D-Drucke bemalen mit Geschwindigkeit
Velocity Painting App mit Einstellungen für einen Prusa i3 MK3

Prüfen der bemalten Datei

Es gibt mehrere Möglichkeiten, von einer mit Velocity Painting „bemalten“ Datei eine Vorschau zu bekommen, ohne dass man diese drucken muss. Slicer wie Cura oder Simplify3D können GCode laden. Sie lassen sich im Preview so einstellen, dass die Geschwindigkeit (und damit die Textur) farblich dargestellt wird. Repetier-Host (ab Version 2.0.1) stellt, da es Velocity Painting direkt integriert hat, die Textur nach dem Slicen natürlich ebenfalls dar.

Auch auf der Homepage der Velocity-Painting-Erfinder gibt es einen Webservice, über den sich „bemalter“ Gcode hochladen lässt zur Visualisierung (momentan leider disfunktional, so dass kein Gcode hochgeladen werden kann). So kann man prüfen, ob die Texturierung auch die korrekte Positionierung, Projektion und Größe hat

Preview einer Velocity Painting bemalten Vase in Cura
GCode-Preview einer Velocity Painting bemalten Vase in Cura 4.0 (Colorscheme-Einstellung: Feedrate)

Weitere Einsatzmöglichkeiten von Velocity Painting

Velocity Painting eignet sich nicht nur zum Bemalen, es gibt auch weitere sinnvolle Einsatzmöglichkeiten, die gar nichts mit Texturierung zu tun haben:

Geschwindigkeits-Variation

Mehrere Objekte im selben GCode lassen sich via in Z-Richtung von oben projizierter Velocity Painting Textur in unterschiedlichen Geschwindigkeiten drucken. Auch unterschiedliche Teile eines Objekts lassen sich so schneller oder langsamer drucken. Wenn man z.B. bestimmte hochdetaillierte Segmente im Modell hat, die langsam gedruckt werden sollen, so lässt sich dies auch mit einer passenden Velocity Painting Textur bewerkstelligen.

Linear Advance K-Factor-Ermittlung

Velocity Painting ist wie schon erwähnt quasi die Antithese zu Linear Advance, dessen einzige Aufgabe es ist, die Extrusionsbreite konstant zu halten – egal wie schnell der Kopf sich bewegt. Deshalb kann man in ein paar Minuten gedruckte kleine im Vasenmodus-geslicte und mit Velocity Painting bemalte Objekte verwenden, um den für das jeweilige Filament optimalen K-Factor für Linear Advance zu ermitteln. Notwendig ist dafür natürlich ein Drucker, in dem das Feature in der Marlin-Firmwarekonfiguration aktiviert und mit in die Firmware einkompiliert wurde und bei dem es in der Firmware auch aktiviert wurde.

Man aktiviert und setzt Linear Advance dann am Anfang des GCodes und fügt dann einfach in bestimmten Abständen (ein paar Millimeter sollten es schon sein, um etwas erkennen zu können) vertikal einen variierenden K-Factor mit dem Befehl „M900 Kxx“ ein. Am sinnvollsten ist ein Interleaving a la 10/70/20/80/30/90/40/100/50/110/60/120 – bzw. 0.1 bis 2.0 für das neue Linear Advance v1.5. So kann man erkennen, welcher K-Factor in welcher Höhe ist. Bei einem linearen „Verlauf“ von 0-100 ist dies nicht erkennbar. Nach dem Druck analysiert man dann das gedruckte Objekt gegen das Licht, um den K-Factor zu ermitteln, bei dem das Velocity Painting am wenigsten sichtbar ist (mittlerer Würfel im Bild), denn das ist dann der optimale.

Den idealen K-Factor für Linear Advance ermitteln mit per Velocity Painting bemaltem Vasenobjekt
Den idealen K-Factor für Linear Advance ermitteln mit per Velocity Painting bemaltem Vasenobjekt