CNC wood carving: a personal cookbook

Several years ago, I built an Arduino driven CNC machine out of meccano-like building blocks, and one thing led to another and now I own a "proper" hobby CNC.

All along this journey, carving 3D models as decorative objects has been an ongoing objective. I find that a sculpture made of wood looks much better than one made of plastic such as what could (more easily) be obtained with a 3D printer.

There are some hurdles to overcome to successfully carve a 3D model in wood on a hobbyist 3-axis CNC. Here is a post describing a process and tools I developed. I would love to have some feedback, some pointers towards DS tools I could test, both software and experience lab / fablab hardware.

Below: my personal cookbook to carving a 3d model in wood on your hobby CNC.

 

Step 1: pick a 3D model

A 5-axis machine will have more freedom to move a tool around a piece of material to carve.

Restricting myself to the more commonly used and widely available 3-axis machines means that some zones of the carved material will be hard to reach. Models that can easily be "unrolled" and projected on a bounding cylinder are suitable candidates.

As an example I’ll use the high resolution scan of the bust of Nefertiti, freely available here:

https://www.thingiverse.com/thing:3974391

 

Step 2: generate heightmaps

The points of the surface to carve can be suitably represented on a heightmap where the color value of each (x,y) pixel defines the z value where the carving bit will touch the surface of the surface to carve.

16-bit greyscale pngs will provide sufficient accuracy when converting from color to height.

Blender can be used to generate such heightmaps:

above: using blender to generate heightmaps

 

There are 2 possible ways to proceed: 

a/ Work in a Cartesian (x,y,z) space

+ Easier computation of intersection between tool bit and surface to carve

-  Can only carve the "top face" of the stock material => the piece will have to be repositioned in order to carve multiple faces.

above: a cartesian heightmap of the Nefertiti bust

 

b/ Replace a translation axis by a rotation and work in a cylindrical space:

- Needs some adaptation on the hardware

- More complex computation of intersection between tool bit and surface to carve

+ No need to reposition piece to carve

= Some concave areas will still be unreachable

above: a cylindrical heightmap of the Nefertiti bust

 

Both these approaches can yield good results; they each have their specific difficulties.

 

Step 3: generate tool paths

Using the heightmaps described above we can compute tool paths to gradually carve out material from the stock and reach the target surface of our 3D model.

One approach could be to have the carving tool iteratively “scan” the heightmap on a square grid-like pattern but this can produces ugly lines on the final surface. Using isolines to navigate the heightmap does not eliminate carving marks on the end surface, but the carving lines follow the natural curvatures of the surface and blend much more naturally with the carved surface:

above: Isolines on the heightmap

 

The shape of the tool bit must be taken into account to compute its intersection with the target surface.

The shape of the tool holding the bit should also be taken into account to avoid unwanted crashes of the tool into the carved surface while carving:

above: tool bit and tool intersection

I developed my own piece of software to compute these intersections and follow heightmap isolines in Cartesian or cylindrical spaces and generate tool paths in the form of GCode which can be fed to the CNC machine.

 

Step 4 : stock wood

It is not easy to find sources for nice pieces of wood to carve. Bordet.fr is a French site providing small pieces of various types of wood suited for carving.

Choosing a wood species and applying a finish on the carved wood is very subjective. Cherry (merisier) is my go-to wood as it is relatively common, not too expensive (8 euros for 50x50x300mm ready to use stock) , easy to work with and produces a smooth finish.

 

Step 5 : carve

The setup I use is a shapeoko-4 with a rotation axis which can either be independently controlled (Cartesian mode) or replace the shapeoko’s Y axis (cylindrical mode).

 

On this particular test I generated 8 heightmap views of the model, at 45° angles.

  • I performed a 1st pass with a 6mm ballnose bit which takes roughly 30 minutes on 4 faces (front, back, left, right).
  • A 2nd pass with a 3mm ballnose bit to add some details in the areas that need it most, this takes another 30 minutes per face and was made only on 2 faces (45° left profile and 45° right profile).
  • A 3rd pass with a 1.5mm ballnose bit to add more details on the same faces.
  • => A total carving time of 4 hours.
  • The repositioning of the piece when changing the face on which I am carving is simplified by the use of an independently controlled rotation axis (the component labelled “vevor” in the picture above).

Here is the result with light sanding on the wooden surface on cherry, birch and Zebrano wood, on display at our open-space in Vélizy:

Step 6 : improve

My initial attempts were very long (8h+ cutting time) and prone to failure (50% failure rate).

I am gradually improving my blender to GCode pipeline and my general use of the CNC to cut more efficiently and also to reduce failures. I am now down to 4h cutting time and rare failures.

My cutting speeds are very conservative and the cutting along multiple view angles produces a lot of redundant GCode, so it is likely that the type of pieces shown above can be produced within 1h on my hobby CNC.

My production pipeline remains very “unprofessional”.

I would love to improve it through exchange with people who have some experience with our internal Dassault-Système tools (software and hardware), so don't hesitate to comment !