This is going to be my first post about one of my later projects (03/2011): The DIY 3D Display prototype. I don’t have anything documented about it, after all it was just a proof of concept. But the youtube Video generated enough comments that I will try to come up with a documentation in the next post.
In this post however I’m going to explain how I got to make this prototype and I will talk a little about how it works. For those only interested in the technical stuff head on to How it works.
I’d love to say that I came up with it all on my own, but that’d be a lie. I merely reverse engineered the concept from videos of the commercial versions.
The first Pyramid shaped 3D object that I saw was the Cheoptics 360. I watched the youtube videos of it closely, trying to figure out how they did it. From what I could see these were really just glass pyramids with each side being lit by a projector. Back then I didn’t act on it though, it was only later when I found the smaller versions of this type of display on Youtube, that I really got curious again. As I watched most of those videos I was able to discern four basic features:
- The pyramid sides are illuminated by small LCD screens on top of the pyramid
- The pyramids glass was darkened (rather than clear, as was the case with the Cheoptics 360)
- The inside of the pyramid was lit up
- The animations consisted of seperate objects, there was no visible background
Now the first thing I did was to simplify the design a bit.
- Instead of 3 seperate LCDs I used only one big LCD (an old Computer monitor)
- I only used clear plexiglass
- I left out the light
So after I picked the screen I measured its display area and made that the base area of my pyramid. I did some calculations to get the dimensions of each side of the pyramid, so I could send those to a plexiglass supplier on ebay who’d cut the sheets for me. I ordered 3mm thick plexiglass, as that was the cheapest. I also bought plexiglass glue. This special glue will only cure under UV light and when cured perfectly matches the plexiglass refractive index (it becomes invisible, unless you make a mess like I did 😀 ).
After I had the pyramid I only needed to build a support structure for the display. I made it out of some left over wood and metal sheet. A very crude but effective construction.
To give it a first test I just wrote a short script that would render a 3D cube and rotate it randomly. Of course my animation had a black background (remember point 4 of things I noticed about the originals).
The result can be seen in the video I uploaded to Youtube.
It’s already impressive how well it works at that point, but I quickly noticed a flaw: the reflection doubled. It dawned on me, that the light reflected off of the front of the plexiglass was also reflected on the back of the plexiglass. This is because the transparent plexiglass can’t reflect 100% of the light (then it would be a mirror and the 3D effect would be destroyed), so some of the light still passes through and gets partially reflected at the backside. This second reflection appeared weaker, so I immeadiently remembered that the original 3D pyramids had darkened glass. I didn’t know what level of tint they had, so I carefully watched the videos again and then went back to ebay to find a car window tint kit that matched the videos as closely as possible. I ended up buying something with I believe 20% transparency (I wrote about the exact values in one of the youtube comments, I’ll update this post once I find it again).
So the tint foil got rid of the double reflection issue, but the 3D effect suffered a bit. As it turns out the originals where lit up from the inside for a reason. Clearly seeing the space behind the glass is an important part of the illusion. So I added a light inside the pyramid (not too strong though, you don’t want to outshine the reflection) and got the perfect result, exactly like the one from the videos of the originals.
Now obviously I only uploaded the video of the first trial and I recently moved and still need to setup my new workspace, so it might be a while before I can set it up and make another video again. So for now let me just explain how it works.
How it works
The principle is so simple that it’s been a part of theater for a long time (since the 18th century). It was called “Pepper’s Ghost” and when you google it you’ll find a lot of interesting information about the effect. But let’s concentrate on the 21st century here. The depth perception of the reflected image comes from the fact that it appears to float inside the pyramid. And the reason why it appears to float inside the pyramid can be accounted to a basic law of optics. An object in a mirror will appear to stand as far inside the mirror as it is away from the mirrors surface. So the distance each pixel of the screen has to the point of reflection on the surface of the pyramid will appear as the virtual distance of that pixel from the pyramids surface into the pyramid.
As the crude illustration (I know the reflective surface isn’t really drawn at the correct angle for that reflection to occure) above shows, the 3D effect could already be achieved with only one surface. But then you couldn’t walk around the display, seeing the same image from different sides (which improves the illusion quite a bit).
The most complicated part of this project then becomes to write the software that will display an object from three different angles onto the three sides of the pyramid in a way that will not let the viewer notice that it’s really three different images he’s seeing.
This can be accomplished by rendering the object in 3D space and then set up 3 camera perspectives corresponding to the sides of the pyramid in the real world. Those three camera perspectives then need to be rendered onto a 2D projection of the pyramid that perfectly aligns with the physical pyramid. However I will discuss the software in another post, as this one has already gotten quite lengthy. I will see to it that there will be source code available for download as well.
That’s it for now, be sure to check back for the rest of the documentation.