Inspiration

Years ago, I found something called Zometool. It's somewhere between a modeling system and a toy, and I used it to build cool geometric stuff. One of my favourite parts of building stuff with Zometool was taking it outside and rotating it around to see the shadows, and how the lines would converge to form great shapes.

What it does

The project has two sections. The section on the left is a perspective view of the shape, as a human eye would see it. The section on the right is the same angle, but isometric -- the shadow of the shape. Switch between shapes and find cool shadows, or just play around with the renderer.

How we built it

This project was made completely in Java. I have experience with creating a 3D renderer from scratch, so I did something similar but with some parts left out. If you're curious, since the program doesn't have faces, rasterisation wasn't necessary; I merely had to sort the segments back to front to maintain logical layering. The isometric visualisation was made by rendering the exact same shape but with the Z coordinate (forward direction) for each line constant, instead of where it would actually be in 3D space. It's not a true isometric render, but it's close enough and gets the desired effect.

Challenges we ran into

At first, all the segments were the same, so I had trouble seeing which part of the shape was in front -- look up the Necker cube. To resolve this, I made the further-away segments darker, which makes them also appear smaller. This also came with its own challenges, which were resolved without much trouble. The most major challenge I encountered was that there I know of no way to automate the definition of the points and line segments, which meant I had to spend a very long time putting them in manually.

Accomplishments that we're proud of

I started very late, and I am proud of how much I got done in such little time.

What we learned

I learned that sometimes the simplest solution is the easiest. I tried to use my own way for several different things, and then realised that someone else had already done the work for me.

What's next for Shadow Projection

If I keep working on this project, I will probably add more shapes. 4D shapes or irregular solids would be interesting, but the cooler the shadow, the more difficult the edge-initialisation. Another thing I might add is to be able to snap to the coolest shadow angles. However, that diminishes the effect of watching the lines converge.

The java files are in the Github repository, you'll need to run it with:

javac *.java; java Runner

Built With

Share this project:

Updates