Projection mapping isn't new these
days,but this one is different. Using iPads as gamecontroller the
people could play a fast paced 3D game in real-time
This isn't your average game setup So I'll explain some of the
technical concepts below.
With four hours of game time there was no
margin for failure so we increased the redundancy of all our
hardware and software components.
We used the following hardware.
- 2 x Mac Pro
- 2 x Barco HD20 (Combined 40,000 lumens)
- Kramer 4x8 DVI Matrix
- 2 x Airport extreme
- 6 x iPads with 4 of them as backup only
- 2 x Kramer EID generators
- 3 x Backup power generators
We started the project on Windows because hardware is cheaper and
faster.
I tried to port the Nvidia Cuda Video Decoder to Cinder but ran
into trouble with different OpenGL Extension frameworks (Glew &
Glee) so I decided to switch the project to OSX which has fast HD
playback on Cinder.
The Mac introduced a new problem which was new for me, HDCP
protection.
From the moment you connect a Mac Pro to a HDCP compliant device
such as a DVI Matrix, all further communication will be encrypted
which in our case was a problem since the projectors where not HDCP
compliant. As you can see in the schema below we introduced a EID
generator between the Mac and the Matrix. The EID generator isn't
HDCP compliant and therefore all further communication will be non
encrypted. Without it we had a black screen on the
projectors.
We used Cinder for the most part of this
project.
The project consisted of 3 parts: a projection calibration tool to
calibrate the building mesh vertices and projection matrix, game
software, iPad software
Source code of the unbranded version is available at
Github
On the iPad I started from a standard OpenGL ES2 project and
included Cinder to have Boost & OSC support.
All other rendering & animation was done using classes from my
co-worker Kris Temmerman (
Cubebuilder
github)
As I said before redundancy was really important therefore we
setup two machines running the same game. The backup Mac was a
little bit slower than the live machine.
This resulted in out of sync window sequences
The solution was simple, one machine is assigned to be the master
and the other slave. Only the master calculates the scores and
sends game updates to the iPads and the slave server.

The below techniques where implemented by Kris Temmerman from
Neuroproductions.
To check for hits we used a technique which is often used in
games. When a shot was fired we render the whole scene color coded
to a frame buffer and check the pixels.

The building facade consisted of two layers, one with the brick
wall & shadows and the plaster.
As you can see above the plaster was color coded blue.
Upon a hit the surrounding triangles where animated off the
wall.
