This article appeared in Make: Vol. 90. Subscribe for more maker projects and articles!

Every winter, Trillium Park on the waterfront in Toronto is lit up with amazing sculptures at night. For a few years now, my friends Kyle Chisholm, Hillary Predko, and Daemon Baliski and I have had the opportunity to create some of these works. This year we’re super excited to have made Greenhouse Reflect, a mesmerizing mirrored sculpture that changes throughout the cycle of the day, and is my favorite shape, the icosahedron. During the day it’s a reflective fragmentation of the landscape, and at night it’s a warm, kaleidoscopic greenhouse in the winterscape.

The 12-foot sculpture is made out of two-way mirrors and wooden supports. Two-way mirrors are either transparent or mirrored, depending on which way the light is coming from. It’s kind of hard to explain, but if you imagine an office building in a big city that’s reflecting the sky during the day, but you can see inside at night, it’s the same kind of material. What I love about it is that we can control the effect by putting LEDs inside the sculpture, and letting the sun and moon do the rest!

As a result, when you’re standing inside the sculpture during the day you can see the entire landscape outside, and everyone viewing from outside can see the landscape reflected in the exterior. At night, standing inside the sculpture creates an amazing kaleidoscope, and outside people can watch you ogle the effect! I personally do a variety of related works, like my piece VOID that uses a similar shape and materials to invite people to put their heads inside the sculpture. This was an extension of that line of work, but it wouldn’t have been possible without collaborating with Hillary, Kyle, and Daemon to make it so big and awesome!

Good Big Art

Photography by Lee Wilkins

There are a number of considerations when making public art: It has to be sturdy, instructions should be clear, and it should be viewable at all times of day. Making this sculpture sturdy was an issue we were concerned about from the beginning. We knew it would be on uneven ground, on the Toronto waterfront which can get pretty windy, and it had to last 3 months in the Canadian winter. While part of me wanted to see the giant shape rolling across frozen Lake Ontario, we knew that would be frowned upon. We used concrete feet on the bottom of steel posts to hold it in place, along with large bolts to secure each facet.

As with any good big art, we also wanted it to be able to have another life — to be stored and reassembled after the show was done. We were lucky enough to have it shown again at another festival, and hopefully more are on the horizon. Each panel and truss comes apart, and remarkably it can fit inside a small hatchback! With the use of threaded inserts, it’s easy to set it up again without a fuss, and taking it down is quick too. The only annoying part is the concrete feet, but luckily there are only three.

Another concern we had was how the public would treat the sculpture. Because of cost limitations, the acrylic mirror panels are only 3mm thick. We had a few people try to climb inside the structure and unfortunately some panels did break, but they were easy to swap out (even if they weren’t cheap).

Geodesic and Kaleidoscopic

To avoid reinventing the wheel, we purchased some pre-made geodesic dome brackets for the corners. By getting two sets of dome brackets, we had enough to make a full sphere. We removed one truss in order to let people walk or roll inside with ease, and installed LED lights around the entrance.

The electronics are quite simple; the only catch was that we wanted the light pattern to change throughout the day. We used a real-time clock (RTC) Arduino module. It was my first time using one of these, and it was pretty simple. The device has a small battery so it’s powered at all times. You can select time zones and set the current date, and the RTC does the rest to keep track of time. I set the LEDs to a warm yellow at night, and a cool purple during the daytime, with some transition in the middle.

In order to make the interior mirror effect as immersive as possible, we used interior standoffs to hold the mirror panels away from the skeleton to ensure a close panel fit. These we made out of PVC pipes, long bolts, and 3D-printed parts that helped distribute the pressure on the panels.

There were also supports along the edges of the structure to stop the panels from sagging and ruining the mirror effect.

We all worked very hard on every part, but Daemon was the real genius on the lumber and finishing, Kyle modeled and designed it all using FreeCAD, and Hillary was the glue and hands to make it all into reality. My focus was the mirror effect and electronics. It’s such a joy to collaborate on ideas with amazing people.

Project Steps

1. Concept, Model And BOM

We began by reviewing the call for proposals and coming up with an idea. Before a project is funded, we start with a quick Photoshop mockup and general technical discussion. If it gets funded, then we start on the CAD. The photos show our initial mockups, trying to convey the concept to the panel of judges.

Once the design was approved, we were asked to make it a bit more accessible. We added struts to raise it so that anyone can walk or roll freely into the structure. Kyle created these amazing CAD drawings using FreeCAD that let us understand how to put it together. He imported the existing corner brackets and calculated the measurements so we could get a feel for it.

Once we were happy with how it looked, we chose the right hardware and placed a McMaster-Carr order.

2. Cut and prep parts

Based on the CAD drawings we then cut all the wood to plan and had the mirror panels manufactured by a local laser cutting service. To get a nice corner on the sculpture, we cut the truss corners to about 58 degrees so they would all come together in a flat point. We drilled the holes, stained the trusses, and added threaded inserts.

Next, we 3D printed a ton of custom brackets. There were two kinds: one for the corners and another to hold up the mirror panels in the center of the truss. Each was made from a long bolt, a large washer, 3D-printed parts, and a large nut. We presorted all the hardware so we didn’t have to do it all on site in the middle of winter!

3. Concrete feet

We used concrete blocks to make sure the structure was stable. One key element was to cast them at an angle that would let them stand properly. We used concrete casting forms that were cut on the right angle, and placed the steel poles for the legs inside them.

The legs were attached to the flat face of the bottom brackets using a bolt. Honestly, we aren’t too thrilled with the legs and have a few ideas how to improve them. Other than these huge concrete blocks, it’s very easy to assemble and move around, so for future iterations we’re considering more traditional weights.

4. Electronics and LEDs

The electronics had to be assembled in a weatherproof box. We used a power supply that could output both 24V for the LEDs and 5V for the Arduino, and the RTC had its own battery. RGB LED strips were attached around the entrance triangle.

We used FastLED’s blend function to transition smoothly from one color to another. It’s a very useful tool but doesn’t always behave as expected. Just to take a quick sidebar into LED color theory, there are two ways to translate between colors. The first is to move along hue, which will adjust the color along the color wheel to get where you want. For example, going from pink to purple has to go through red. The other way is to blend by fading each RGB value to the target value; but often there is a white or unpredictable color in the middle that can feel kinda random. In the end, it wasn’t a huge deal because the change took place over a period of 1 hour as the sun was setting.

  DateTime now = rtc.now();
  int currentHour = now.hour();
  if (currentHour < sunset && currentHour > sunrise) {
    animation(blend(CRGB(100, 90, 5), CRGB(100, 50, 255), 0), 10, 10, 50);
  } else if (currentHour > sunset || currentHour < sunrise) {
    animation(blend(CRGB(100, 90, 5), CRGB(100, 50, 255), 255), 10, 10, 50);
  } else if (currentHour == sunrise) {
    int currentMin = now.minute();
    animation(blend(CRGB(100, 90, 5), CRGB(100, 50, 255), map(currentMin, 0, 60, 0, 255)), 10, 10, 50);
  } else if (currentHour == sunset) {
    int currentMin = now.minute();
    animation(blend(CRGB(100, 90, 5), CRGB(100, 50, 255), map(currentMin, 0, 60, 255, 0)), 10, 10, 50);
  }
}

5. Test run

To be sure it was all working, we did a full test run inside — a good thing, as we found we had to drill out some inserts to be deep enough.

6. Final install

Surprisingly it went together seamlessly, but we didn’t anticipate how trippy it would be to install!

For the test, we had left the protective coating on the mirrors, so we hadn’t seen how reflective they’d be. On this overcast day they were in a middle state, both transparent and reflective. We had to take turns being inside doing the assembly!

We had so much fun making this. I hope you learned something too.


This article appeared in Make: Vol. 90. Subscribe for more maker projects and articles!