An Experiment in Half-tone  

Noble Member

This started as one of those weird ideas you get when you're half-asleep and the mind wanders, but with some sanity to your thoughts. I was pondering multimaterial/colour printing, mixing hot-ends and the like, and thought "Hmm... we can't really mix colours using an MMU, but what about half-toning/dithering?

Great, now I spent the next hour or so trying to fall asleep, but my brain went "NOPE, I'mma figure out how to do that".

Now, how is this done? It's currently a PITA as it requires a specially crafted model, and a way to alternate filaments on each layer. Fortunately, the latter is much easier for me to do in a post-processing script as a result of my purge-bucket work ( )... A few tweaks to my "randomizer" script's counters and I was all set - it would insert a toolchange every new layer. (It's been pointed out something more controllable would be useful, e,g, to auto-set MMU toolchanges on specified layers. I'll consider something like that when I work on integrating the bucket option into a PS fork instead of a script <glares at @gnat for adding to the to-do list>).

As for the model itself... don't expect to apply this to just any model off the bat. It will require a rather math-y post-processing script to be generally useful, so I opted to just build it into the test design. A few minutes in F360 resulted in this:

Yes, that's essentially a model where each 0.2mm height is offset by some amount. Naturally, more offset makes that filament more dominant in the shade on that side of the cube. I opted for 2 such distances: Extrusion width/4 and extrusion width/2. There are likely many more in-between values (and shades) to be had, but hey, this is a proof-of-concept, so I'm not making this my life's work. I'm working off an 0.6mm extrusion width for an 0.4 nozzle. I sliced it at the intended 0.2mm layer height and processed it with my modified script.

And so, ladies and gents, I present: Five intermediate shades of grey, using only black and white filaments, for a total of seven different options if you include full black and full white.

I flattened the square for easier viewing of all sides at once.

Left to right - the leftmost side has an added step in the middle which is 0%, e.g. no layer offset between white and black. The outer edges there are 50% in favor of black. Then 25%B, 25%W, 50%W. 

Obviously the challenge in making this useful generally is determining what is "out" and "in" on a particular region of the model. But an alternate option that occurred to me is rather than deliberately offsetting layers, it might be more practical to simply overextrude the more dominant colours' outer perimiter by some amount. No idea how well it will work in practice. 

Anyway, there's my silly "what if I...." contribution to the community; It's low on the priority list right now but I think I will see about developing this further, time permitting. May as well get every cent of value out of the time I've spent understanding the gcode and toolchange generation and take it new places that are not necessarily easy to do when you need to deal with generating a wipe tower rather than being able to just dump purge somewhere and fugheddaboudit. 🙂

This topic was modified 11 months ago by vintagepc
Posted : 07/09/2019 4:37 pm
Member Admin

Ultimaker did research on that.


I have never heard anybody using the feature, so I suppose it is not super useful.


Posted : 24/04/2020 6:54 am
Noble Member

 Probably not all that useful for practical prints if you have enough filaments for your needs, but there's definitely an artistic value to it or if you want to expand available colours when at the limits of what your current printer can handle.

Posted : 24/04/2020 12:56 pm

Please Login or Register