Shopping Cart

Sydney Opera House Illuminated with Adafruit NeoPixels

Sydney Opera House Illuminated with Adafruit NeoPixels


3D Printing for Lighting Applications

3D Printing offers the prospect of a number of great lighting applications, like custom lamp shades, illuminated signs and many more.

Small LED lights are the perfect companion given they can be operated with low-voltage, are energy-efficient and come in easy to customize packages, like the Adafruit NeoPixel strips.

Unfortunately, until recently, there was no ideal 3D printing filament for LED lighting applications. You really would have to use either transparent or natural PLA, neither of which works particularly well:

  • Natural PLA has a very low light transmittance. Printed light covers can only have very thin walls, limiting the strength of the object and type of application.
  • Transparent PLA on the other hand is too translucent; individual LEDs remain visible and it's impossible to create smoothly illuminated surfaces.

Light Diffusion Filament

Vivasa Design, a filament maker based in the Czech Republic, sought to address these issues with their creation of their eco3D PLA Light Diffusion Filament, which balances light transmittance and diffusion.

Read more about Vivasa design and the background for developing this filament on Vivasa Design to Transform Lighting Industry with eco3D PLA Light Diffusion Filament

The Opera House

Most of us have seen pictures of the iconic Sydney Opera House illuminated at night. So when I came across this model of the Opera House, I figured this would be a great project for the Light Diffusion Filament. 

3D Printing Filament

Besides the light diffusion filament which will set you back $45 for the spool, you'll need some non-translucent (I recommend black or another dark color) filament to print the bottom housing where we'll install the lights.

You'll need very little of the filament for the bottom part, but printing the Opera House will use quite a bit of the light diffusion filament, because of the solid infill (more on that in the detailed steps below).

LEDs & Electronics

If you're starting from scratch, meaning that you need to buy all the power supplies and the Arduino UNO board, this project will set you back about $140 in electronics. Ouch! 

Let's break it down a little bit. The major cost driver here is the NeoPixel strip at $60. I bought 1m of the densest version with 144 LEDs, which squeezed about 85 pixels into the housing and creates a ton of light. $60 is not cheap, but I personally think that NeoPixels are well worth their money.

Having multi-colored LEDs with a single connection that are super-easy to install and even easier to address using the provided libraries lets me focus on the rest of the project instead of the lighting details. That said, it's obviously fine to install any kind of LED lighting to illuminate the Opera House. But in this guide we'll be using the NeoPixels.

If you happen to have an UNO board lying around somewhere you can save about $25 and if you're on a tight budget you might further save on the power supply. I bought a fairly beefy 5V 10A wall supply, which wouldn’t be quite necessary.

With its ~85 NeoPixels the Opera House would draw just about 5.1 amps if all LEDs are lit at the same time (i.e. every pixel is bright white). You should thus be able to get by with a 5A supply and save a few bucks.

Skills Required to Complete this Project

Before we get into the details, let's briefly cover the basic skills you want to have (or be willing to learn) to complete a project like this.

Many models you'll find are not necessarily hollow, so a little 3D design work maybe needed. We had an experienced CAD designer hollow-out the Opera House in less than 15 minutes and I'm pretty sure there are some good software tools that let you do this fairly quickly. Of course if you're looking to print this exact model, head on over to

There you can find the opera house and also the matching bottom box that has all the necessary cutouts to install the NeoPixels. For your own project you'll want a little bit of experience in designing 3d models to create a matching box (the devil is in the details here to make sure the top part sits nicely on the rim etc).

Of course, some basic soldering skills and electronics knowledge will be required. The hardest part here is that we used the densest NeoPixel strip with 144 LEDs per meter and the pads are tiny. Be sure to have good lighting and maybe even a magnifying glass handy!

Lastly, as with any NeoPixel project, you’ll want to know how to code (or be willing to teach yourself). However programming for the Arduino is not all that difficult and Adafruit provides a really easy to use library for the NeoPixels.

Step-by-Step Guide

3D Design

We scaled the model up to about 280% of its original size and then hollowed it out so that the wall thickness was around 3-5mm in most places.

For the bottom we designed a custom box with a rim that we can just sit the Opera House safely on without needing to attach it in any way.

We wanted to be able to illuminate each building as well as the bottom separately, so we designed the bottom part with two raised platforms where we embedded the NeoPixels to illuminate each building.  The platforms are snug to the top and a little wider than the openings so that we eliminate ambient light from the bottom entering the buildings.

3D Printing

The bottom part prints like any other model. Feel free to use a moderate to low infill and the quality shouldn’t matter much with the exception of maybe the outer wall. We printed it in black to distract as little as possible from the Opera House itself.

When printing the Opera House with the light diffusion filament there’s only one thing you have to keep in mind: Use 100% infill.  Any non-solid infill will result in a pattern that you will see when the object is illuminated. So unless you are looking for that effect, go with the solid infill.

Printing a larger object like this with 100% infill, you’ll want to make sure that you have really good adhesion.  Even though this is PLA filament, the solid thick surface will cause significant force and trying to pull away from the bed. We ultimately used BuildTak as our trusty blue tape didn’t work out, which then resulted in the opposite problem: Almost breaking the printer as we’re trying to yank the print off the bed!

But, the Opera House came out very nicely, weighing in at a solid 10oz ... printing with 100% infill does create unusually heavy objects!

NeoPixel Installation

I won’t go into the basics of NeoPixels here; if you’re not familiar with these LED strips, I recommend reading the Adafruit NeoPixel Überguide, which is amazing and will get you started in no time.

We wanted to keep the house fairly neat on the outside and just left a little opening in the back. If that’s what you chose to do, be sure to solder the capacity across the ground/power wires after inserting them into the box.  I had to learn the hard way that the capacitor just won’t fit through that little hole!

Installing the NeoPixels is straightforward for the most part. As I said, soldering these 144 pixel strips can be tedious, especially as we cut the strip up in 9 pieces creating 48(!) individual solder connections. As always, be sure to watch out for the direction of the strip and that you solder the wires to the correct pads.

Programming the Arduino

If you just want to illuminate the opera house, you can probably get by with some of the sample code provided by Adafruit. I went a little further by adding an LCD button shield to control the NeoPixels; that way I can change between static color and motion mode without touching the code. For the static mode I added the ability to set each building and the bottom to its own distinct color.

You can download the Arduino source code file for this project and use it to your liking. A large portion of the code is dedicated to controlling the menu, while I had to write almost no code at all to use the NeoPixel strip. The main piece for the lighting was to address the different sections of the strip correctly to illuminate the bottom and each of the buildings separately.

Disclaimer: In true Arduino prototyping fashion I had to jam this code in to finish up the project in time for the photoshoot (the opera house will be featured on our new homepage). So, it's not clean or optimized. Simply put: It works and that's it.

Connecting the Power & Arduino UNO

Once the Arduino is programmed, we just hook up the ground and the digital pin to the corresponding wires of the NeoPixel and you are ready to go. Be sure to power up the NeoPixels first, before connecting (or giving power to) the Arduino.

What do you think?

This was a fun project and the light diffusion filament is a really cool filament for some creative projects. Post your comments if you have any questions or just want to let us know what you think! 

If you have any other cool ideas for 3d printed light projects, we'd love to hear them as well.

Project Supplies


Description Price
5V 10A switching power supply $25.00
Female DC Power adapter - 2.1mm jack to screw terminal block $2.00
3-pin JST SM Plug + Receptacle Cable Set $1.50
Adafruit NeoPixel Digital RGB LED Strip 144 LED - 1m Black $59.95
9V Power Adapter $6.95
LCD Button Shield $12.95
1000uF 6.3V Capacitors $5.60
Arduino UNO R3 $24.95


Description Price
eco3D PLA Light Diffusion Filament $44.99
Voltivo ExcelFil PLA High Grade 3D Printing Filament $54.99

Older Post Newer Post


Leave a comment

Please note, comments must be approved before they are published