3D Printed Stereographic Lampshade

This is the update of my project to create stereographic lampshade using the Blender API.


Above is the 3D printed lampshade projecting the snowflake pattern I made.

It measures approximately 4 inches across and 1.7 inches high.

I’ve updated my code to reflect what I’ve learned from this project.

Previously, I generated dome-like lampshades, based on the original formula for height:

z_{new} = a \cos \alpha


  • z_{new} is the height of the vertex on the lampshade, computed from the point on the pattern,
  • a is the radius of the spherical lampshade, and
  • \alpha is twice the angle from the light source (top of the sphere).


However, to more accurately reflect the interplay of the lampshade and the light source, I’ve changed the formula for height:

z_{new} = h - a \cos \alpha

where h is the distance from the plane of the projection of the pattern to the center of the spherical lampshade.

This new formula produces bowl-like lampshades. This makes sense, since the lampshade sits between the projection of the pattern and the light source, curving towards the light.


distance to center of lampshade = 5; radius of lampshade = 5

Decreasing the distance between the center of the sphere and the plane of projection results in a more spherical lampshade. This distance could even be negative.

fish bowl

distance to center of lampshade = 0; radius of lampshade = 5;

Conversely, the greater the distance to the center of the lampshade, the flatter the lampshade will be.

almost flat

distance to center of lampshade = 10; radius of lampshade = 5

The physical light source can also distort the pattern. Ideally you’d want a single point source. More diffuse light sources result in fuzzier projections.

light source

Finally, you can adjust the lampshade for different magnifications and resolutions.

It’s all pretty fun.

Make your own with my code on Github!

Explanation of the code here.


  1. Joe Smith said:

    Not sure if it is just me but I can’t seem to get the python script to run in the current version of Blender… Does the script still work in the current Blender tool? 😦

    I hope it is just operator error but I’m not sure. Thanks for sharing your effort! I still have much to learn about Blender.

  2. arborski said:

    same here, looks like it is not working with the new blende

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: