Introduction: Lithophanes: 3D Printing Your Photos!
Every time there's a birthday or an event of any kind where I need to buy a gift, I'm always faced with the same problem.. "What should I get him/her?" and I can rarely find an idea that's worth mentioning.
Since I bought a 3D printer, I always think that the best gift would be something personalized that I would 3D print, something that cannot be bought elsewhere and something that would make me proud to show off my printer's creations! And also, I wouldn't have to keep worrying about finding a good gift idea!
The most personalized item I could 3D print was a lithophane! What is a lithophane? To put it simply, it's a 3D print of a photo which uses the thickness of the print to show varying shades of grey when illuminated from behind. As an example, see the image above. That's an old picture of me when I was a baby and is also the result of this instructable.
Lithophanes are definitely unique, the recipient is sure to like it and it makes the perfect gift! It can even save you if you're still wondering what to get your family and friends on Christmas!
I've had a lot of experience trying to print photos and I haven't always been successful. It is not a very difficult task to accomplish but it's not a trivial task either, as there are many different ways of accomplishing it. Once you do it right though, the results are phenomenal! I've compiled my experiences here so you don't have to go through the learning curve yourself.
Step 1: Choose an Appropriate Photo
The first thing you need to do is to choose a photo/picture that would be appropriate for 3D printing. Not all photos will look good when 3D printed, so you must think of the following things when choosing the right picture :
- The 3D printed photo will basically appear in shades of grey, so if there is any important detail that requires color, the image may not be a good fit.
- It is best to choose a picture with a fairly high contract ratio
- An image with a lot of details might not look as good as a lithograph, so a simple image, uniform background, etc.. would be better
Note that those are just things to keep in mind and will greatly be affected by the print quality of your printer and size of your lithophane. If you have a well calibrated printer, you can probably print any kind of picture.
For this instructable, I have chosen three pictures as a demonstration. The first one is a picture of myself when I was a baby, I think it's a great image because of the contrast of colors in it. The other two pictures are from my Windows "Sample Pictures" directory, a Koala and a Lighthouse which will serve to show how a badly chosen picture might turn up. These would be a good test to show how a bad image would appear since all the varying grey in the Koala's fur will cause a lot of spikes in the STL and the print will look bad due to all those small details which most FDM printers will have trouble with (due to oozing, retractions, extrusion width, etc..). As for the Lighthouse, it has a lot of dark rocks that may be very hard to print and there's not a lot of contract between the lighthouse and the sky.
We'll see how they look as a printer lithophane!
Step 2: Using the Right Application
To generate the 3D model from the picture, there are a few options available :
- Using Cura (version 13.11 and up)
- Using the Lithophanes application
- Using the Customizable Lithopane thing on Thingiverse
- Using the Image To STL Converter application
- Using the PhotoToMesh application (Not free)
As you can see, there are a few options available to you. The easiest one of course is to use Cura since you may already be used to it. Since version 13.11, Cura supports importing images and conversion into 3D meshes. It's quite simple, drag&drop or select Load Model from Cura's menu then select a jpg image instead of an stl file. A dialog will pop up asking you to select the size (see picture). You will want to keep the "Darker is Higher" option and you may want to enable the "Light Smoothing" option, or not, depending on your preference. For other options, it is best to read the next steps for more information.
Unfortunately, while Cura is the easiest solution, it lacks in terms of options when it comes to loading the image. The best application I have found is to use the Lithophanes application. It's on a Brazilian site, so here is the direct link to the installer. After you install it, it will be set to Portuguese by default, but you can set the language to English by going to the Iniciar menu, then Idioma and finally selecting English. This is the application I'll be using in this Instructable.
There are some other alternatives (some not listed above) you can look at if you're curious about the other applications and their features, most notably, the PhotoToMesh which allows you to create lithophanes on spheres, boxes, etc.. but it's quite pricey. You can also use the Customizable Lithophane thing on thingiverse which is not that bad either, but I personally don't like thingiverse and I find their Customizer very slow to work with, not to mention having to wait until thingiverse generates the STL file for you instead of having it generated directly by your computer. I also expect there might be some privacy concerns here if the customized lithophane suddenly gets published on thingiverse.
Each of these choices will have its own advantages and disadvantages. The advantage of Cura is that it is simple to use, you may already be familiar with it, it has smoothing options (none, light or heavy), but you can't set a frame around the image or tweak the image. The Lithophanes application is great because you can tweak the image before generating the 3d model and you can add a frame to the image, it will also scale down the image for you, however, it doesn't have any smoothing options. The Customizable Lithopane thing has a nice feature to allow you to add a ring to the frame so you can hang the lithopane, but as discussed before, thingiverse may not be the best medium for this kind of thing, also, it will scale down the image to 100x100 pixels which may not give you enough resolution. The Image To STL converter gives more options in terms of smoothing but it might make it harder to use, it also doesn't allow you to tweak the image. Finally, the PhotoToMesh application has more options, gives you an import wizard and allows you to select only an area of an image to print, allows you to print on a cube, a sphere, etc.. however, it is not a free application and its interface can be a bit confusing.
For most people, using Cura will be the easiest solution and all they will need. I personally prefer Lithophanes because it can quickly generate the 3d model, so you can experiment with options and regenerate until you're satisfied. Cura however will be a little slower in importing the image and if you don't like the options you chose, you have to delete the object and re-import it. If however you don't know to manipulate the image, or you want to have a smoothed image, then Cura is simply the best choice.
Step 3: Generating the 3D Model
To generate our 3D model, we will use the Lithophanes application. You can however use Cura to do it, most of these instructions will still apply.
In the "Imagem" tab (the only thing left untranslated), we select Open Image and select our image. It will load the image and display in the main window, we will then be able to adjust the various settings of the image, such as Contrast, Brightness and Gamma.
There is also a Binarize option which can be helpful if you want a purely black or white lithophane (no shades of grey). Note that if you use the Binarize option, then the Contrast, Brightness and Gamma options are ignored.
There is also a button for displaying the Negative of the image, and finally a Restore button to reset everything back the way it was.
The Max proportion in Pixels is an important setting, as it allows you to select between a down-sampling of the image to 500 or 1000 pixels. Usually 500 pixels is more than enough. You will usually want to have a maximum of 1 pixel for each half width of your nozzle.
This means that if you have a nozzle of 0.5 mm and you want to print a lithophane of 100 mm width, then you need less than 400 pixels:
100 / (0.5 / 2) = 100 / 0.25 = 400 pixels
If however you have a 0.35 mm nozzle (like me) and you want to print a lithophane of 150 mm or 200 mm, then you will need :
150 / (0.4 / 2) = 150 / 0.2 = 750 pixels 200 / 0.2 = 1000 pixels
If you have a very small nozzle or/and want to print a large lithophane, then using 1000 pixels might give you a slight increase in quality, otherwise 500 is more than enough. Note however that the higher the resolution, the longer it will take to slice the model. Actually, using 1000 pixels on my sample images dramatically increase the slicing time making it go from a couple of minutes to an overnight task (more on that later) so you may always want to keep it at 500 regardless of nozzle size and length.
Once you have an image to your liking, go to the "3D - STL" tab where you can set your parameters for how the lithophane should be printed. I think the default options here are pretty good (see image).
- Width (mm): This is the width of the lithophane, it will be tied to the Height parameter so the aspect ratio is always kept
- Height (mm): This the the height of the lithophane, it will be tied to the Width parameter so the aspect ratio is always kept
- Z (mm): This is the Z depth of the lithophane.
- Thickness (mm): This is the thickness of the base.
- Edge (mm): This creates a boxed frame around the lithophane.
The Z and Thickness parameters are the most important here. The bigger you set the value of Z, the more shades of grey you will be able to have, but if you set it too high, then the lithophane will be too dark to show its full effect with a back light, and it will increase the print time considerably. The default here is 2 mm and I think it's a pretty good value but you may want to increase it to 5 mm for a more detailed print (the higher the number, the longer it will take to print though, if you're inpatient, 2 mm might be good enough for you). The Thickness parameter however will need to be as small as possible, so it doesn't block any light and doesn't affect your lithophane. So it can be sliced into a single layer, the best value here is your first layer height in your slicing software. The default is 0.25 (note that due to brazilian locale, you need to use a comma as a decimal separator: "0,25" instead of "0.25") which is what most people have. If your slicing software sets the first layer height to 0.3 or 0.35 for example, then change that value accordingly. If however, your photo has white areas, you might end up with some areas where only the first layer is visible and it would look too bright and the infill lines would show through, in that case, you can increase it to 0.5 mm for example. You can also adjust it depending on how dark you want the overall picture to look.
While the Width/Height parameters are self explanatory, it is a good moment to point out that for best results, a print of 100x100 mm in size (or close to it, depending on the picture's aspect ratio) is a good trade-off between print time and print details. Obviously, the bigger the print, the more detailed it will be, however, it can take a long time to print. You can print smaller 50x50 mm lithophanes as well or lower for low-detailed prints.
Finally, the Edge parameter can be left at the default of 0, but I personally like adding a 1 mm or 2 mm frame around the print.
You can click the Generate 3d button to see how each parameter affects the print until you are satisfied, then click the Save STL button to save your 3D model to an STL file. Make sure you wait until the status bar says "File Save" before you load the STL in your slicing program.
Step 4: Slicing Your Model
You now have a nice 3d model, but you still need to be able to print it! While most tutorials and tools on lithophanes only show you how to generate the STL file, you will rarely find one that explains how to slice the model.
Here are a few very important things to keep in mind when slicing your model :
- You must set the infill to 100% rectilinear at 30° angle
- You must use the lowest layer height that your printer supports
- You must print as slowly as you can
- Use proper slicing parameters for a lithophane
- Do not scale the model
- Chose the right slicing program!
First of all, you have to set the infill to 100%. Most of my first prints had my default 20% infill in them and they never looked good until I realized that some portions of the print had a honeycomb inside of them. It will also help prevent filament drooping into the infill for small sections which can completely mess up the print. I suggest using a rectilinear infill at 30°or 35°.
The lowest layer height you use, the better your print resolution will be. It will also allow you to determine how many shades of grey your print will have. For a 2 mm Z parameter, at 0.1 mm layer height, that's 20 shades of grey which is a quite acceptable number. If you use a Z parameter of 5 mm however, you may want to increase your layer height to 0.2 mm, to avoid an unnecessarily long print time. For the Koala print, I'm going to use a 3 mm Z so we can have more shades of grey on the koala's fur.
Most of the print will be very detailed with very little extruding, and will cause a huge amount of retractions. In order to avoid blobs of filament all over the place, or jamming your extruder due to an excess of fast retractions, it is best to slow down the print speed as much as you can. The slower it is, the more refined the print quality will be.
The 4th point I mentioned is "Use proper slicing parameters for a Lithophane". I know it's not very specific, but simply use your common sense and go over most of your slicing options. For example, in Slic3r, there's an option to skip infill every X layers, you should disable that, in Cura, there is an option for how much overlay the infill has with the perimeters, you should set it to 0 because you don't want the overlay to darken part of an image, and you don't care about rigidity of the printed part since it won't be used in a mechanical system.
If you want to scale the model, just go back the previous step and change the value in the Lithophanes application instead of scaling the model in your slicing program, this way, you won't lose any resolution in your print.
Finally, and one very important thing is to choose the right slicing program. I usually use Slic3r for everything but in the case of Lithophanes, I have to use Cura because it's much faster to slice the models. I have used Slic3r to slice a 50x37mm lighthouse lithophane and it took about 30 minutes on an Core i7, while it takes less than 1 minute to slice in Cura. For the 100x75mm koala, Cura slices it in about 2 minutes while Slic3r took over 5 hours to slice 35% of it then I just stopped it. For my 100x130mm baby picture, it took about 45 minutes to slice on Slic3r while it took 1 minute on Cura. As you can see, the difference in speed is huge, but I still prefer using Slic3r when possible, it will depend on the size and mostly on the level of detail of each lithophane. If there is a lot of spikes (details), like the Koala image for example, it will be much harder for slicing than an image with more uniform areas.
Also note that when using Cura to slice the same 100x75mm koala using 1000 pixels resolution, Cura simply failed to slice anything, the CuraEngine either crashes or cancels the slicing operation after a few seconds, but Slic3r had no problems with it (although it might have taken days to slice it). That's another reason why you should only use 1000 pixels if you really need it because you might end up using Slic3r and leave it slicing overnight.
Step 5: Print and Enjoy!
Now that you've sliced your model, you can print it. If your printer has an SD card reader, then use it instead of using the USB connection to print your model. This is because the print may have a lot of details on some layers and the USB connection may not be fast enough to send all the G-code to the printer so it will start taking pauses while it's receiving the G-code over USB, these small pauses will leave blobs of filament (oozing) in the print that will affect the quality of the overall result.
Make sure your bed is well prepped to avoid any warping, and your printer is well calibrated, especially in terms of filament width, E-steps, flow rate/extrusion multiplier. The print temperature for your filament should also be set correctly to minimize any possible oozing.
Another important detail is to use a white or natural filament, you can also experiment with some light colors such as yellow, but since the image will be sort of black & white, it is best to use white as the filament. I have tried green filament, it looks nice, but it doesn't give the same effect as a natural filament.
Finally, once the print has finished, the final, important step would be to shine a diffuse light behind the lithophane to finally see the print in all its glory. My first attempts were just to 3D print an image and I didn't know the effect it can have to shine a light behind the print, so the first time I discovered it (by accident) was a truly magical moment. The difference between a lit and unlit lithophane is huge. It will usually appear much nicer with daylight than with a flashlight, but as long as the light is diffuse and not too bright, it will look perfect. Have a look at the video above that shows the effect of light on the 3d print.
You can see the result of my lithophanes in the images above. I've printed 5 samples here, one small lighthouse image at 50x37 mm in size, a 100x75 mm koala with 3 mm thickness and two pictures of me when I was a baby, one with a 0.25 mm base and 2 mm Z height and another with 0.55 mm base and 4 mm Z height, both at 100x130 mm size and finally a rocktopus at 135x100 mm with 0.55 mm base and 4 mm Z height.
Note that the 50x37mm lighthouse image was printed in 32 minutes while the 100x75mm koala print took a little over 5 hours (then the print failed at the last few layers). The 100x130 baby picture (2 mm thick) took 2 hours 50 minutes while the 100x130 baby picture with 4 mm thickness took 6 hours 11 minutes to print. The rocktopus took 2 hours 11 minutes.
As you can see, the dimensions and the thickness affect greatly the print time, but also, the amount of details in the photo will also affect it as we've seen with the koala photo.
Step 6: Conclusion
As you can see, choosing the right image to use is important as it can greatly affect the slicing time, print time and overall result. If you are patient and have a well calibrated printer and a big print bed, then you can use pretty much any image you want. The Koala image with all those spikes due to its fur makes slicing and printing a nightmare, it is still recognizable but it doesn't look that great (the fact that my print failed a few layers before it finished might contribute to the bad image quality, especially on the left side and on the nose), the lighthouse doesn't have good enough contrast to make it very apparent at such a small size, but I am sure that with a width of 150 mm or more, it would look very nice. And finally, the baby picture came out absolutely perfect.
There are some small issues with the baby picture which only has 2 mm thickness, most notably the 1 layer thick base makes the infill lines visible through the light, but only when I use a flashlight, as well as a few bumps that might be caused by the extrusion of plastic overflowing on the sides of the nozzle. It might also be that it's a consequence of the poor quality of the original image (over 30 years old passport-sized photo that I scanned a long time ago).
As I have printed that photo using two different settings, you can compare how the parameters will affect your print, You can see the photo on a white background (my PC screen) with the original picture next to it. The first image above is from the 4.55 mm print while the second one is from the 2.25 mm print. Finally, the third picture shows the two lithophanes next to each other. The 4 mm print looks much nicer with a darker image and the details are much more visible. Every little nuance of grey is very well defined and apparent.
I'm also showing here the difference between two prints of a rocktopus, they both have a similar size, same 0.55 mm base and 4 mm height, but you can see the quality is very different (ignore the text I tried to add in the center of the image). The difference is that there is a very thin line of shadow below one of the rocktopus' tentacles, that caused a high contrast difference with the green of the image that made most of the rocktopus be printed within just a few layers and all the other layers were used to print a very tall thin line for the shadow due to the contrast. Once I removed it (and cleaned the image a bit to remove artifacts that looked bad in the first print, especially around the bottom tentacle), the difference was huge. In summary, don't hesitate to do some pre-processing on your images to make them better suited for printing.
I think a good next step would be to try printing with different materials. I have always printed using ABS but I will try using HIPS to see how the print looks. HIPS has a better dimensional accuracy so the lithophane might have a better surface finish and better photo quality. I will update this instructable with more pictures once my 4 mm thick HIPS prints are done.
I don't want to print with PLA because those will probably be placed on a window, and long exposure to direct sunlight could melt the PLA.
Something to try next would be to print four photos this way, in relatively small prints with a 2 or 3 mm Edge, then glue them together as an open cube and put a candle in the center, this way you get a nice sort of 'picture frame' that would magically appear when the candle is lit, and it's a perfectly unique Christmas gift! Make sure though that the candle has enough space around it so it doesn't start melting the plastic!
I hope you liked this instructable and found it useful, and please vote for me in the 3D Design and FormLabs contests. Having a contest that offers a stereolithographic printer, or one that offers both a 3D printer and a Camera sounds like the perfect combination for an instructable about 3D printing photos! :)
I'd like to thank Joao Paulo M. Claro for his great application, Peter Blacker for his helpful article on lithophanes as well as Steve Caplin on his article about thingiverse's customizable lithopane.