Cylindrical Lithophanes for 360⁰ Panorama Images

We have our rectangular flat lithophanes for putting in the window.

Now we’re going to bend the lithophane surface so that we can produce curved ones including bending it 360 degrees into a cylinder for panoramic photos.

We can then produce single panoramic cylinders for 360 degree images or put a series of lithophanes in a circle to produce a cylindrical photo album.


It doesn’t take much imagination to see how curved lithophanes can be incorporated into lamps, rotating displays, light shades, dioramas, printing wheels, embossing tools, etc.

So, how to convert our flat lithophanes into curved ones? Well, it doesn’t take much. We have a series of x,y,z points on the surface of our model, if we push the x and z coordinates off the flat by adding an offset based on a curve that meets our dimensions, we’ll have a curved lithophane.

There are a few things we need to calculate. if, for instance, we want to produce a lithophane that occupies a 30 degree arc, we need to know where the centre of that arc would be and the radius of the arc so that we can calculate the offset to apply to each point on the surface.


So, in the diagram above, (a) is the angle in degrees, (w) is the width of the flat lithophane, to work out where the centre of the arc is, we need (d) – the distance between the lithophane surface and the centre of the arc.  we can calculate (d) if we know the radius of the arc (r), we can get these with the following formulas:

var arcRadius = (width/angle) * (180/Math.PI);
var distanceFromFlat = Math.sin(angle * (360/Math.PI)) * arcRadius;

Now that we know these, we can calculate the offset of each pixel in the lithophane using cos and sin just as if calculating the points on a circle:

//circle pseudo function
for (angle=0 to 360) { 
    x = centerX + radius * sin(angle); 
    y = centerY + radius * cos(angle);

Putting what we have together:

 var magnitude = heightData[index] + arcRadius;
 x = width/2          + magnitude * Math.sin(rotation);
 z = distanceFromFlat + magnitude * Math.cos(rotation);

Adding these lines into the processVectors routine that calculates the vectors from the 2D height map, allows us to create curved lithophanes, all we need to pass in addition to the original parameters is the curve.

we can add a little extra functionality by allowing the curve to be negative as well as positive.  This will allow us to produce curved lithophanes with the detail on the inside or the outside.

var arcRadius=(width/curve)*(180/Math.PI);

TrafLitho                                bbLitho

I’ve added a curve parameter to the UI  with values of: Flat, 30,45,90,120,135,180,270 and 360 degrees inner and outer (inner – texture on the inside of the curve, outer – texture on the outside):


I hope you find this useful, my daughter has had all sorts of ideas regarding incorporating images into 3D designs, so there will be more to come.

Maybe you can produce a series of photos for a loved one arranged into a cylinder with an LED candle just in time to save having to think of an alternative by February 14th?  Or maybe make a roller for lino style printing, there are so many cylindrical things you can make better with a little texture.

I suppose I’d better finish off lithophanes with domes & spheres next time – until then, here’s a quick project:

Draw a pattern on a strip:


Take a picture and crop the part of the image you want to use:


Create an LED tea light holder:


Published by


see about

10 thoughts on “Cylindrical Lithophanes for 360⁰ Panorama Images”

  1. Hi,
    How are you?
    Very interesting website…well Done!
    I’m working with my self to make some lithophanes and I tried to do it from your website without success, I don’t know wath is the problem.

    I like a lot the idea about the cylindrical lithophane,
    I wanna make it! Can you help me?
    I red your article to try to do this alone but is too hard for me.
    Thanks a lot

  2. Hi Rock,
    Now I don’t have any problems. Great.
    I would like to collaborate with you If you are interested.
    I’m building a website focused in 3DPrinting Photos.


  3. Hello. I just bought a 3d printer and absolutely love the Image to Lithophane website! Is there a particular material that is best suited for printing lithophanes? My first attempt was with white PLA and it seems perhaps that is a bit dense… but maybe I made it too thick? What is everyone using for material?
    Thanks, Mike 🙂

      1. Thanks Mark. Yes, It was a thickness issue. I surprised that you had success with Clear PLA… just seems like there would be no contrast. I’ll have to try that sometime.

    1. I just finished making one 3mm thick with 0.4 being thinnest layer that came out nicely. I used white petg from mgchemicals. Petg is partially transparent and came out very impressive. Specially for my first try. It actually gave the picture a real 3d look to it. Wife is going to love it on valentines day.

  4. how long does it usually take to convert a photo? I’m trying a jpg and it just stays stuck in processing. Thanks, excellent idea!

Leave a Reply

Your email address will not be published. Required fields are marked *