I've noticed a lot of talk about the new cura and it's monotonic infill feature. What I
haven't seen is a lot of detailed explanation as to how it manages, or supposedly manages,
to get a better surface texture on top of prints. Let's investigate in this episode
and see if we can dig anything up. Don't worry. We do.
Before we go into how to use this monotonic whatever, perhaps it's worth going back in
time, not far though, just to 2020. Back in around autumn 2020 prusaslicer implemented
a new feature called monotonic infill, which should sound familiar to anyone watching this
video because it's strikingly similar to the new feature in cura. Don't get me wrong, I'm
not mocking, it's actually great that the feature set across these slices is equivalent,
in fact this was a much asked for feature as far as I can see
So - monotonic. infill, Order. Whatever you want to call it - what is it?
Turns out that's not as easy to answer as you might initially think.
A demo if you will. This is something we all learn as kids, when
you're colouring and the teacher sarcastically asks if you'd like to colour in strokes all
in the same direction because it will look nicer and you ignore them and carry on scribbling
horribly.
The problem is, printers already do this, and always have. Monotonic or otherwise, the
strokes on a layer, other than the walls and skins and what have you that follow the path,
will always be unidirectional, and then they switch orthogonally the next layer, which
is a posh way of saying 90 degrees to the last.
So that begs the question, why is monotonic different, and what is it supposed to solve?
As you can see, I will slow down and let you read this, the main idea seems to be to always
fill in the same major direction, that is, not the zig zag the head is doing, no, the
direction the whole printer is proceeding in, if you get the idea. As an analogy I suppose,
if you're walking down a road avoiding dog poops, you move side to side to do this, but
that's just to avoid the poops, your actual direction, which I'm going to call your major
axis, is down the road. So, it's important not to lay down filament the opposite way
on this axis. On the why, we'll find out in a moment, and curiously there's more to it
than this anyway.
Note the last sentence, surprisingly difficult to implement optimally. Really, no kidding!
On initial glance, cura's implementation looks largely along the same basic principles. I
found a substantial write up from what I believe is the developer who actually wrote the code,
and I spent a few minutes scanning down the actual code too. I must say it looks like
it was a bit of a nightmare to implement, so kudos to this guy for sticking it out.
Again if we read what's written, I'll let you read it, pause if I'm going too fast I
guess, there's a couple of things here I feel are conflated though. Firstly, this bit here,
I think he means west to east, because as I already said, rectilinear infill never did
change direction mid layer from east to west into north to south, other patterns do I guess,
but the issue he's talking about, I believe, especially when he mentiones the micro fresnel
reflection, it's kind of like a lenticular effect as you rotate the piece, it catches
the light differently.
If you think "ah, great, simple" then I'm afraid I have some bad news, because I have
a rabbit hole for you!
You see, I noticed that prusaslicer's implementation of this is different to cura's in at least
two ways, two ways that could actually impact print quality.
Firstly let's look again at this slide. Highlighting this sentence.
It's suitably vague that you could extract multiple meanings out of it, but when I first
read it, I thought: Ah so this means that when you continue from a broken line like
this, you would continue the minor axis direction as if you haven't stopped, right?
Well, let's see.
We start by doing standard back and forth, then we hit the circle and split off, and
the last stroke was this way. Then if I catch the next stroke on the return...it's actually
in the same direction as the last one.
Does that matter? I would think it ought to. But the curious thing was, when I looked at
prusaslicer's implementation.
Again, standard infill, then we split off. Again mark the last direction. When we come
back...we have actually continued the back and forth consistently with the previous infill
pattern. The more I looked into this, the more convinced
I am that prusaslicer has implemented this intentionally, and it's something cura doesn't
have in its algorithm.
And there's one more thing too. Look here at what prusaslicer does on the last line
before the split. This is actually really fascinating, mainly because I don't know why
it's doing this.
So, well, to summarise, we have one slicer, cura, that implemented monotonic infill as
a simple don't change direction along the main axis, and we have prusaslicer which has
implemented it in what seems to be a more sophisticated way to try to get as close to
joining up the forked pattern as possible including some bending of the rules and continuing
the minor axis direction.
If nothing else, this is curious, but does it make a difference to the final output?
I made a test piece and printed it out in black, because black is the colour I find
really shows up these kind of artifacts. Here's four samples, two are in prusaslicer, two
in cura, one each with monotonic on and off. I'll give you 10 seconds to work out which
is which.
Well did you get it right?
Looking at these, you can see fairly clearly that the monotonic infill on both is better
than the normal.
But you can also no doubt see the lines on the cura ones that aren't there on the prusa
ones.
Well, about that...
It looks on the face of it like cura hasn't quite nailed monotonic yet, because of these
lines. I have "avoid printed parts" turned on, but as you can see in the gcode preview
here, the blue lines are those moves, and they are not avoiding printed parts.
Compare to the same prusaslicer gcode, you can see there's only two moves, and the second
one is actually to allow the infill to continue in the same minor direction as we spoke about
earlier.
I turned off the extra skin layer that cura likes to put on models, to level it up with
the exact number of walls as prusa, but it still does what I think is an unnecessary
extra jump here.
I have some more samples from this cube section, so you can look at how they end up.
Well we now know what monotonic infill is, so there's that.
We also found out that it's implemented differently between the two main slicers.
When it comes to recommendations, it's worth going into your existing profiles and turning
on monotonic, in both slicers. It's also I think worth swapping the extra
skin in cura for an actual wall, based on what we've seen, but I think I need to look
into that more in the future. These lines on the final print are not very nice though,
it defeats the whole point of the monotonic setting.
I still use cura day to day, but if I wanted explicitly smooth large areas where I really
wanted the full power of monotonic infill, I think prusaslicer has the edge right now,
mainly because of the path routing, from what I've seen during making this video. So I would
recommend that. However no doubt this will change in future as is the case with all new
features and I'll certainly try to update you if it does.
But above all other recommendations, I recommend, as always, before diving into a print, especially
a long one, look at the gcode preview. So much time can be saved by a few seconds in
the preview tab.
Remember to subscribe if you want to be notified when I make more of this stuff. Thank you
for watching.