Privacy Policy
cnc machine carving halftone pattern

The CNC machine has been dormant for awhile now so I thought I would fire it back up with some new techniques. This time I tried out some stippling and my new V-bit.

Stipple What?

Stippling is a drawing technique that uses only dots to create or shade an image. The proximity and/or size of the dots create the weight or shading of the object. There are some pretty impressive examples of stippling as it is widely used.

Another name or variation, if you will, of stippling is called halftone. It's basically the same thing except it is done in a more of grid-like gradient style. You may have heard of or seen it in printing, i.e. newspapers.

Without getting into a long explanation or semantics debate, both use dots to draw pictures. Awesome. Moving along...

You can create either effect on a piece of solid material using a CNC machine and a V-shaped engraving bit. The depth that the engraving bit pushes into the material determines the size of the dot. As would be assumed by the technical nature of CNC, there is software that helps you do this.


I was able to find two programs that would import an image, process it into a stippled version, and export something usable making G-code. Each was built using Processing and each had its own idiosyncrasies.

StippleGen seemed to be the more robust of the two, but with that came slower process times and a steeper learning curve. It does some really cool stuff like generate Voronoi patterns to place dots and optimization of the toolpaths to speed production. It also exports to SVG, which works nicely in my setup.

Halftoner is less refined in my opinion, but it makes up for that in speed and ease of use. Drag and drop a picture in, set a few parameters, watch live the image is generated, set some more parameters, and export some G-code. One. Stop. Shop.

Ease of use aside, the main difference I noted was that the Voronoi method in StippleGen generally produced a clearer looking image than the halftone method in Halftoner. The easiest explanation I can come up with is that the grid used in halftone can be limiting.

Initial Trials

I chose the path of least resistance and did my first tests using Halftoner. I did one test using dots and the second using lines.

raw image profile view of white dog

For a test subject I used some glamour photos of a friend's dog. He was chosen because his white fur gave him some good contrast that helped him stand out in the stippled photos. He (the dog) is also a cool dude and I thought he deserved some CNC love. 

raw image in halftoner software

processed image in halftoner software

For material I used some recycled architectural samples of MDF with veneer. My idea was that once I drilled through the dark veneer that the lighter MDF would help the dots show up better.


You can definitely see the photos in the CNC carvings! Obviously this was a huge win, but I wish I had been more ambitious with my max hole sizes on the dot version. Had the dots been a bit closer I think the image might be a little easier to see.

profile of white dog cut with CNC halftone pattern

raw image of white dog face

white dog face cut with lines by CNC machine
The line version was much clearer in displaying the picture, but the finish was not great and I think the line spacing looked off. What seemed to happen was that it grouped two lines closer together instead of spacing them all evenly. 

The dot version took FOREVER (at least 2 hours). There were something like 10,000 dots so I guess that's somewhat of an excuse, but next time I'm definitely going to crank up the feed rate and lower the safety height. I suppose that is also what I get for attempting a test cut that huge. Lesson learned.

Overall, I'd say I'm pretty happy. Can't wait to try some more!

Photo Credits

Puppy photos are courtesy of my homie, ataribeats