2009-12-05

Projection mapping in the office

Projection mapping is making projections in a way that they match the surface they are projected on. This way we can use projector for something much more interesting than flat powerpoint presentation like VJ projections. As I was invited for vivisesja'09 this year I decided to play a bit
with Processing and see what I can do during two weekends.

2D in 2D - This is how I call projecting 2D graphics on flat (or almost flat)
surface. We have some cool pipes going across room and wall in
our studio so I chose them as my projection target.

Equalizer - first test was simple. I have audio reactive bars and I want to
project them so they match the pipes. How to do that? I made a sketch that displays
4 rectangles. I was doing it by hand in code so I spend some time to make them match
the pipes perfectly. This gave me a mask that I could use for limiting projection
only to the pipes. Having positions of the rectangles I programmed animated bars
so they matched this positions. Results were super good, as expected :)

,Equalizer

The only trick here is to adjust projector brightness so the black is invisible on the wall.

!VIMEO,7504037,640,480

Sunset - it's time for some magic. What would happen if we invert the mask so
we project everywhere beside the pipes?

,Sun

People usually say that's the best one of my first tests. It's somehow counter
intuitive and surprising when watched for the first time.

!VIMEO,7504182,640,480

The only issue with this one is that when observed from a side you get shadows
from the pipes so it doesn't look so good anymore.

,Sun shadow

Sofa - this time I wanted to play with some more complex mask and couch next
to the pipes looked like a perfect target. I took a photo of the couch, draw
an outline of it, filled the shape with white and projected it back on the couch.

,Stars

Of course my shape wasn't perfect so I had to retouch it a bit to remove all the
gaps. I made a Processing sketch that was constantly reloading the image for
projection so every time I pressed Cmd+S I was able to see the changes almost realtime.

!VIMEO,7504276,640,480

Want more (especially large scale) projection mapping examples?
Look at this,
this,
this and
this.