Introduction: Make Your Own 3D-jigsaw-puzzle

This guide assumes you are somewhat familiar with 3D modeling, CAD, and boolean operations. I try my best to provide a step by step guide. But I will not explain every button, click, etc..

What will we be doing?
We will first generate a 2D-puzzle-path as SVG. Afterwards we will extrude this path to get a 3D-puzzle. The last step is to cut the 3D-puzzle to a specific shape. To create your own puzzle you will either need a Heightmap of your desired shape or a 3D model (or combination of both).



  • 3D-printer


Step 1: Create a Puzzle Path

First, we need to create a puzzle-path. For this open the "jigsaw.html". You should see a screen similar to image 1.

In the generator, you should set the number of tiles you want. If you change the number of tiles be sure to adjust the size of the puzzle. For me, a value of 15 per piece worked well. Therefore I always set size=tiles×15.

But the most important setting is the Path thickness. The Path thickness sets the Gap between the individual puzzle pieces. Here you should know which clearances your printer can produce. If you are not sure print the files in "/clearance_test/clearance_xxx.stl" as a test and adjust the path thickness.

If the gap between the puzzle tiles is too small the correct tiles will not stay together. But if the gaps are too big the puzzle cannot be put together [image 2].

If you have settled down all your settings export a .svg of your puzzle with the "Download SVG" button.

Step 2: Make a 3D-object From Your Path

Open the "puzzle.scad" in OpenSCAD.
If you cloned the repository you should be greeted with a screen similar to image 1.

Now change the "puzzle_path" to the path of your .svg-file.You can set a value for the height too. However, this is not too important because you can scale the object in Blender too. Now press F6 or Design -> Render.After this save the model as .stl (press F7 or "File" -> "Export" -> "Export as STL").

Step 3: Use the 3D-puzzle to Cut the Desired Puzzle Shape

Now open Blender. First delete the default cube, camera and light. Now load your puzzle's *.stl ("File" -> "import" -> "Stl")[images 1 & 2].

Now you can choose between three different options.

Option 1: Use a Heightmap

If you want to use a Heightmap add a plane and scale it to be slightly larger than the 3D-puzzle.
You should also switch into edit-mode (tab-key) and add an "Edge Crease" (ctrl + e) to all four sides of the plane with maximum strength (indicated by lila/pink edges) [images 3 & 4].

Now add two modifiers to the plane. First a "Multiresolution"-modifier and second a "Displace"-modifier. The "Multiresolution"-modifier's subdivision should be set to a level where you are satisfied with the resolution. Add a new Texture to the "Displace"-modifier [image 5].

Now switch to the Texture-tab and load your heightmap. For this, the Type must be set to "Image or Movie" [image 6].

Optionally you can use one of the Heightmaps which blender is able to generate.I am using here a "Wood"-type one.You can play with those settings until you find something you like.

Tips if the plane does not look like desired:

  • If the generated plane does look too "low poly" you need to further subdivide your plane.
  • You can change the strength the Heightmap influences the plane in the Settings of the "Displace"-modifier.
  • If the plane is too low you can change this too in the options of the "Displace"-modifier.
  • If the Generated puzzle is not tall enough you can resize it with (s -> z -> mouse movement)

After this your plane should be completely inside the puzzle [images 7 & 8].

Now add a "Boolean"-modifier to the 3D-puzzle. Set it to "difference" and the "Object" to your plane [image 9]. Finally, apply the modifier.
Now switch to edit mode and select all vertices on the top of the Puzzle [image 10].

And delete all of them. You should be left with a 3D-printable shape like image 11 (this is basically the "small example" with more tiles).

Option 2: Use a 3D-Object

First, you need to make sure that the object is non-overlapping and in general 3D-printable. However, consider that you will cut the object and this could make it 3D-printable. Now import the model as you did with the 3D-puzzle [image 12.
Next scale, rotate and place it in the scene the way you want it to be. The shape which should be the final puzzle needs to be inside the 3D-puzzle [image 13].

Now add a "Boolean"-modifier to the puzzle and set it to "Intersect". Apply it and like option 2 remove the vertices from the top to reveal your finished 3D-puzzle.

Option 3: Use option 1 and 2

You also can combine the approaches as I have done in this example with the heart and the sine-Heightmap. The procedure is nearly the same as you would just do option 1 and afterwards option 2.
The only difference is that you have to join the plane and the 3D-object with ctrl+j before you apply a boolean set to "Difference" to the 3D-puzzle.

Step 4: Print It!

Fire up your favorite slicer and make sure everything looks good in the preview. Now send it to your printer and watch your puzzle grow!

If you want to give the larger example a try: It takes very long to slice and up to 5 days to print.

Step 5: You Have Done It!

You have created your custom 3D-jigsaw-puzzle. Give it as a present to a special person or keep it and just enjoy it!

Step 6: Want More?

You can try out to generate your puzzle using this software. It allows for more complex puzzle pieces. If you want to make some true maniac puzzles, give it a shot!
You can also use any puzzle *.svg. Therefore Go and find the most interesting puzzle you can imagine!

Puzzles Speed Challenge

First Prize in the
Puzzles Speed Challenge