Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics

PixelCNC: CAM For Artists

CAM software developed by artists for artists to create unique and original works on a 3-axis CNC router or mill. · By Deftware

Relief Carving

A topic by valhallaCNC created Jan 07, 2022 Views: 151 Replies: 9
Viewing posts 1 to 2

Just me again Charlie:

Was watching your video Tutorial #01 Basic relief carving. At the 2:17 min mark , you show treeoflife.jpg next to it treeoflife3d.jpg.  How do you convert that to a 3d ?  

Thanks joe


Hi Joe,

Good question! I actually did that by hand in GIMP, using the 2D as a base, maybe 4-5 years ago. When I say "by hand" I mean that I used filters and blending with some careful tweaking. It took a bit of finessing and I'm not sure I remember exactly how but I did more recently re-create it from scratch using just the functions built into PixelCNC as a sort of test. After loading treeoflife.jpg as a raster-layer I traced it into a paths-layer, and from there used Shapes From Paths to create a few rounded shape raster-layers and carefully blended them together by adjusting the vertical position and size of each and experimenting with the layer blend modes. The radius of the rounded shapes that Shapes From Paths generates is controlled by the Z size of the paths-layer the shapes are being generated from.

In the original treeoflife3d.jpg that I made I had also included a bit of a round bulge behind the tree to make it less flat and more interesting. To re-create that I just drew a little circle on a paths-layer in PixelCNC and generated a rounded shape from that that I then stretched out over the tree. The PixelCNC recreation I think is better because it's not as smoothed over as the one I crafted in GIMP - which I employed a lot of blurs that were blended together, so edges all have that sort of Gaussian or cubic spline S curve profile to them, which is what I was trying to limit or prevent when making it.

The only thing that I left out on the PixelCNC version is the roughness that I applied to the background bulge which I thought made it more interesting. It was a sort of Perlin noise, like Photoshop's cloud rendering function, and I just blended it in there very subtly. I already have plans to add some more raster-editing functions for generating textures and patterns onto a raster-layer for achieving those kinds of things. That will be really nice to have in there.

Before PixelCNC I did all kinds of stuff like this in GIMP - turning a 2D image into a 3D one, manually. The goal with PixelCNC has always been to alleviate the need for GIMP, or any other software for that matter, by offering ways and means to achieve the same kinds of results more directly. If I had PixelCNC's functionality back when I made the treeoflife3d.jpg I would've used it instead because it more accurately does what I was aiming to achieve with an image editor like GIMP but that's just me ;)

 - Charlie

Thanks Charlie :

I was going in the right direction using Pixelcnc. I chose a hard image to start with and  kept trying to work with it. I see my mistake now that you pointed me in the right direction. Once the image is manipulated the way you like there is no way to export that layer to reuse ? Is there future plans for export , import layers ? I used GIMP in the past and have been using Inkscape as my vector and image editor to create SVG's.   I used Carbide3d , Estlcam and other software to get the results I wanted.  It will be nice just to use Pixelcnc to do it all. While still a new user of Pixelcnc I can do more now, and easier then with the others. I like the Pixelcnc vs GIMP image better also.


Developer (1 edit)

Hi Joe,

Yes, exporting layers is planned. Also, a public online library where users can share their raster and paths layers for others to use in their projects. As far as exporting though raster-layers will be able to export to common image formats and I haven't fully settled on what the situation will be for paths-layers yet. PixelCNC will definitely allow exporting a paths-layer as an SVG but I'm not completely committed to adding DXF only because it's a bit more complicated of a file format. If someone ends up needing it I'll probably put the time aside to tackle it though but hopefully everyone will be able to manage with being able to export paths as SVG files.

In the meantime a small workaround that might be useful is to just hide all of your other layers and then export your canvas as a heightmap image, which is almost the same thing as exporting an individual layer, except that it will be the dimensions of your canvas rather than the layer by itself.

 - Charlie

EDIT: I forgot to mention that the online asset library will be built into PixelCNC itself, as opposed to something that's used within a web browser.

Needs some tweaking but it works fine.

Hi Charlie,

I have been working with multiple layered carvings. I have been using a picture as a background using relief carve with parallel carving operation.  I know I can set the Z height of the layer, but that is not the true carved height. The only way I see to get the finished carved height of the picture is by watching the simulation of the Z axis data. I'm taking my work piece raster layer height( .75) ,  subtracting picture layer Z origin ( .6) that gives potential maximum height (.15).  I then take .15 and subtract Z height in the simulation for a given point , This gives me my carved height. Is this correct or am I missing a shortcut ?

Thanks Joe


Hi Joe,

PixelCNC automatically stretches the contrast of an image to range from absolute black to full white to ensure that the raster-layer's contents actually occupy the Z area from the bottom of the layer to the top of the layer, rather than just a section of that range.

After that the only things left to determine how deep cuts will go is the canvas Z size and the layer's Z origin and Z size too. There's also the issue of a cutter not being small enough to fit into narrow areas. So for instance if I load this image into PixelCNC:

Canvas is one inch thick and my layer is set to an origin of 0.25" and a thickness of 0.5" this is the result:

For just the area of the raster-layer itself (ignoring the outer blank canvas margin that I could've used a Z-fill on but wanted to make the image clearer) the shallowest cuts will be 0.25" below the top of the canvas and the deepest cuts will be 0.75" below the top of the canvas, particularly the area around the skull where the cutter will be at max depth.

The only thing that would otherwise prevent cuts from actually reaching down to the bottom of the raster-layer is if your deepest parts are narrower than the cutter can actually reach, something like this:

In this image most of the shape is too narrow to accommodate the 1/4" cutter, except for a few spots on the left, preventing it from actually cutting down to the bottom of the raster-layer, which in this example is the same thickness as the canvas (0.25") and has a layer Z origin of zero so that it's resting on the bottom of the canvas.

Also, if you're using a Leave Stock amount that's going to offset the carve in 3D, not just horizontally, so if you have a 0.05" leave stock on a 0.25" canvas the deepest that cuts will be able to go is 0.2" below the top of the canvas surface.

Hope this helps. Let me know if I'm missing something - and maybe share a screenshot too if this doesn't help you figure it out.

 - Charlie


Oh, and the raster-layer height, or Z size, is just the distance between the bottom and top planes of the raster-layer. It does not include the Z origin of the layer. To calculate the height of a carve, assuming your canvas Z size is identical to your workpiece thickness, you should be able to just add the layer's Z origin to its Z size to get the Z of the top plane of the layer, which is equal to the distance from the bottom of the canvas to the top of the layer.

- Charlie


This was the final result. The horse came from a color cell phone jpg. I was surprised how well the color picture turned out, with tweaking of the levels.  The relief carving is about .075 max height .  The border is not that wide, I haven't did the cut out yet .

Thanks for the help Charlie.....


Hi Joe,

That's great stuff! Thanks for sharing. Glad to hear the Adjust Levels function was useful on the horse raster-layer. Let me know if there's anything you'd like to figure out how to do to design more stuff. I'm all ears ;)

 - Charlie