
Nonplanar Printing - mlyle
https://tams.informatik.uni-hamburg.de/research/3d-printing/nonplanar_printing/index.php
======
phkahler
This is how I'd like to see academic work done. Using FLOSS as an existing
framework for new ideas, with source code under the same or compatible
license. It may or may not get incorporated, or someone may expand on it. The
work may live beyond the paper.

Oh, and if it does get taken upstream, consider publishing the paper along
with the code for documentation.

------
gregschlom
Very cool. Simple idea, well-executed, with great results. It was a little
"wtf how come nobody has thought of this before?" moment for me.

Also very cool that they are releasing their full Slic3r implementation for
anyone to use, rather than just publishing a paper.

~~~
ent
It's not an entirely new thing, there was this article[1] with accompanying
code[2] from 2016. It just used to be quite unwieldy to use (a separate script
to deform the gcode).

[1] [https://hackaday.com/2016/07/27/3d-printering-non-planar-
lay...](https://hackaday.com/2016/07/27/3d-printering-non-planar-layer-fdm/)
[2] [https://github.com/makertum/non-planar-layer-
fdm](https://github.com/makertum/non-planar-layer-fdm)

~~~
mlyle
This is better because it has uniform extrudate geometry. That is, portions of
past planar layers are omitted and then the nonplanar layer is of uniform
thickness.

~~~
darkmighty
Intuition tells me variable extrusion generally should yield stronger parts.
Adhesion between stair-stepped and non-planar layers in this method is
probably subpar (with the emergence of new gaps). With variable extrusion, as
long as the variability isn't too large layer adhesion should be kept fairly
unchanged, maybe even stronger if there's a certain waviness (the waves
increasing surface area).

Actually I wonder if internal waviness could be a useful method to add
strength in general (area should be increased as ~1/cos(angle), or
~(1+angle/29) for very small angles, i.e. about 3% per degree).

~~~
mlyle
What I'm saying is that the first variable layer is of relatively constant
thickness, compared to previous approaches which attempt to taper layer
thickness to slowly introduce curvature.

The problem that results is the actual dynamics of the extrudate varies a lot,
going through a fixed size nozzle: there's a relatively limited range of
shapes that do not excessively impede flow (and risk jamming/clinging to
nozzle/dragging) and are sufficiently smashed into the previous layer. So if
you have layer thickness varying a bunch over an otherwise continuous layer,
pretty easy to have poor adhesion in many places or pressure building and
later overextrusion.

Also there's a fair bit of lag-- often hundreds of milliseconds- between
extruder movement, pressure change, and extrudate geometry changes. When
you're moving the nozzle at, say, 100mm/s over the surface, the uncertainty of
this lag translates to a big uncertainty of where on the part extrusion
thickness changes.

------
Ccecil
I printed using "Bread" way back when they were developing it originally. The
dev (nickparker)used to frequent #reprap@freenode. It was an interesting
concept but yes the nozzle collision is an issue.

Here is a video of an early print when I was helping him test. He generated
the gcode for me based on his machine settings so it wasn't perfect and very
rudimentary. [https://youtu.be/M3Bwo0AVML0](https://youtu.be/M3Bwo0AVML0)

------
mlyle
This is something I've wanted to do for a long time-- and they've taken a
particularly simple approach where the extrudate volume doesn't vary wildly
over the nonplanar layers.

One potential shortcoming is it looks like their model of nozzle geometry
(they need to be able to detect interference) assumes it can be modeled with
an angle plus a distance where there's bigger things. But real nozzles are
more complicated than that.

The worst thing is that the bottom of the nozzle is flat, and any Z movement
downwards is going to smush the just extruded trace.

~~~
ricardobeat
The video and pictures show real prints from an Ultimaker.

~~~
mlyle
Yes. I'm saying they treat the nozzle like it is a cone to determine whether
it'll interfere with the previous layer's top surface. But this is a little
optimistic because the bottom of the nozzle is flat, so you get variable
"smush" based on convexity. You can see this a bit in their pictures of prints
where the surface is steep along the print line.

~~~
nickparker
Yup, I did research on this with my own little slicer [0] back in 2014. With
conventional nozzles your surface finish goes to crap past about 20 degrees.

If you really want conformal layers you need a five axis platform. The flat
tip of FDM nozzles is an important part of layer adhesion. I've seen a little
bit of experimentation with pointier nozzles and it went very poorly.

Nowadays I'm building the five axis version and packaging it up in a service
[1], along with a bunch of other improvements that are only feasible when you
stop trying to build a machine lay-people can operate.

[0]: [https://github.com/nick-parker/bread](https://github.com/nick-
parker/bread) [1]: [https://www.praxismfg.com/](https://www.praxismfg.com/)

~~~
Ccecil
Nice to see you are still at it. I just posted a video above from 4 years ago
when I was testing bread in #reprap.

Can't wait to see more of what you are doing soon.

~~~
nickparker
Hey ccecil, long time no see! I was just checking on Continuous Composites'
website the other day and thought of you.

I should have some fancy demo prints online in a few weeks here, keep an eye
on the website!

------
jiveturkey
I don't quite follow.

Is the idea to print planar (xy) support layers, that does have stair
stepping, and then to print the final layer by either tilting the bed or by
simul-stepping in {x,y} and z?

If so, it seems you'd still have quite a lot of variability in the surface
because the underlying support layer is stair-stepped. But that variability
would be smoothed due to it being printed continuously at the angular offset
from horizontal.

~~~
mdorazio
That's exactly what it's doing. If you watch the video at the bottom you can
see a comparison of the "smooth" print vs the normal fixed layer approach.
Three things on this:

1) In general, you set the number of layers above and below the supports that
you want when printing so that the variability of the support layer gets
smoothed out. It seems like this should be possible here as well.

2) End products of 3D printing, especially for things like props/costumes,
almost always have to be post-processed via sanding, filler epoxy, and/or
primer filler paints before they're considered good enough for actual use.
This process could make that post-processing step a lot faster.

3) This process is specifically for FDM printers. On an SLA/DLP printer, you
would mitigate the stepping issue by lowering your layer height (layers in the
example here look quite high - SLA/DLP would probably be 1/10 the height)

~~~
jiveturkey
If you are crossing the stair steps orthogonally, or at an offset, I suppose
it would be possible to dwell longer when you're over the low point of the
stair step? so your motion across the offset plane would be jerky instead of
smooth? thus putting more material in the low part of the stair stepped
support layer, and less material on the high parts.

or if you moved the head "with the grain" you can move faster when you're on
the peak of a step and slower in the valleys.

or maybe if you can place the planar ridges closely enough, you can always go
"with the grain" when you are off-plane, always in the valley, and thus
improve flatness. of course this requires an axis of rotation or stepping in
{x,y} simultaneously.

~~~
mdorazio
It shouldn't really be necessary to do this. In normal printing, infill can
have gaps of several millimeters and the final surface will still look smooth
if it's flat. The plastic essentially bridges the gap before hardening, and
over successive layers the imperfections are averaged out. The same thing
should happen when moving in both X/Y and Z like this - the first layer will
be non-perfect, but if you do 3-4 layers it should end up fairly smooth.

~~~
jiveturkey
several _millimeters_??? wow.

------
cgrand-net
Similar work: “CurviSlicer: Slightly curved slicing for 3-axis printers”
presented at this year’s SIGGRAPH [https://hal.archives-
ouvertes.fr/hal-02120033/document](https://hal.archives-
ouvertes.fr/hal-02120033/document)

------
cr0sh
This is pretty cool - and some of the comments here have mentioned things I
didn't know about either (ie "ironing") - so thank you to those people, too.

I'm glad they released the work OSS so it can be incorporated into other
slicers and such; I don't have a 3D printer yet, but it's on the drawing board
for the future.

Hopefully, though, this will be an option that can be turned off, because
sometimes you might want that "stairstep" effect...

------
woofie11
Brilliant!

The algorithm looks pretty lousy. Even so, it's a big improvement.

With a really good algorithm, I bet you could get much better results (source:
I do similar stuff with a 3d pen). I hope this triggers a rush of researchers
seeking to one-up each other. This could get super-impressive if it copied
what human artists do, or surpass it.

This is one of those things I (and probably a million other people) feel dumb
for not having thought of before. It's so obvious in hindsight.

------
vokep
And now I have a bit more motivation to buy a 3D printer. Cool stuff!

------
hinkley
So they make the cake the planar way, then they smooth it out a bit with the
'icing'. Not a bad trick.

Would this be smoother still if they made 2 passes with the non-planar layer?

~~~
J5892
From the video, it looks like they do.

------
etaioinshrdlu
Wow, I think this is a fantastic idea and obvious in hindsight!

------
algaeontoast
Curious what kind of math is used to generate g-code for the "icing" step?

~~~
LegitShady
[https://github.com/Zip-o-
mat/Slic3r/tree/nonplanar/lib/Slic3...](https://github.com/Zip-o-
mat/Slic3r/tree/nonplanar/lib/Slic3r/GCode)

arcfitting, motion planning, pressure regulation

[https://github.com/Zip-o-
mat/Slic3r/commit/9fcd7f38de44ecaa0...](https://github.com/Zip-o-
mat/Slic3r/commit/9fcd7f38de44ecaa09c40db0b3846e7adaf6e0ef)

edge detection

then some random other random geometric stuff.

I'm sure its way more complicated than that. Not something you pick up in 10
minutes.

~~~
algaeontoast
Thanks for this, time to feel mathematically overwhelmed for a few weekends
lmao.

------
nraynaud
now that E3D has seeded the idea of tool changer, I would probably just iron
the part with a hot ball?

~~~
Zagitta
The Cura slicer from Ultimaker has a setting to enable that kind ironing on
top surfaces although just with the regular nozzle but it works surprisingly
well!

~~~
nraynaud
Oh yes, that’s where I got the idea, I don’t do smart. Tool changer from e3d,
ironing from cura, lollipop tools from the cnc industry.

