The Philosopher Cube was an interactive art installation created for the 2010 Electric Fields festival in Ottawa. It featured a 3D projection of an alien cube on the Rideau Centre wall, posing philosophical questions to passersby and displaying their answers, gathered through Twitter. The project combined C++, OpenGL, and 3D projection mapping techniques to create an illusion of a floating, interactive cube.
Challenges included the short development time, the transition from SMS to Twitter for interaction, and the complexities of projection mapping in a real-world environment. Despite these challenges, the project successfully engaged the public, sparking conversations about the questions posed and the relationship between the virtual and real world.
This innovative project served as a valuable learning experience for future interactive art installations, highlighting the potential of technology to create thought-provoking and engaging experiences in public spaces.
“The Philosopher Cube” is a large public projection piece created for a festival here in Ottawa called Electric Fields. It is basically is a large projection downtown of an “alien” cube that asks passers-by questions about the human race such as “What is love?” or “what is justice?” etc. People can then reply by tweeting to twitter.com/efcube. These answers are then projected in real-time onto the wall and after a few minutes of receiving questions the cube will present an “answer” of random words from the answers given – think “refrigerator poetry.” It uses primitive projection mapping and OpenGL/C++ using Cinder Frameworks ( libcinder.org ).
The Philosopher Cube sprang from discussions with Ryan Stec, creative director of Artengine and James Acres, Coordinator of the BIT-Interactive Multimedia and Design program at Algonquin College, about a large projection that would have some sort of interaction using cell-phones for the Electric Fields festival [ http://artengine.ca/electricfields/2010/index-en.php ] in November. The original plan was to use text-messaging but due to the short development time, and the difficulties of doing so in Canada, Twitter was used instead. Though less of the general public uses Twitter it did provide the advantage of providing a public repository of the questions and answers given at http://twitter.com/efcube .
Tests
After settling on a projection that was to have some sort of interaction I set to work creating some 3D demos as the visuals would arguably be the main attraction for passers-by. The use of shaders and .obj 3D file formats (which can exported from any 3D software such as Blender or Maya) to create some interesting visuals is relatively straightforward as Cinder graciously provides some really great functionality in this respect. I admittedly spent a great deal of time working on the shadows as that is what would best create the illusion of depth using a 2D projection on the wall. In the main Cinder directory you downloaded you can find some really great sample projects, one of which deals with shadow shaders. I created on my own using their existing example as a template; and besides a bunch of tweaking ( literally changing a value here and there, then running the program to check how it looked, and repeating ad infinitum ) the shaders used in the example also had to be changed a bit to allow the use of textures as opposed to just material colours. I definitely recommend checking out the code for the shaders in the Philospher Cube project provided to better understand.
The Cube
Once I had some decent looking shadows I immediately set to work creating some test projects that used shadows, textures, and a cube. Initially I started by creating a cube programmatically in OpenGL but found that I wanted a bit more detail and animation. To do this I decided I would make use of the .obj importing abilities of Cinder and create a 3D mesh in Maya as my cube ( using custom textures created in Photoshop). I then created an animated sequence 24 frames long that would give a pulsating look and exported each frame as a new object I could load in sequence within the program. This method of animation does create quite a bit of overhead as I have to load in 24 different models but for this simple example it seemed to work well enough, and saved me from having to create some sort of Collada or FBX animation loader. For more complex animations I would definitely look into these methods ( though currently Cinder does not support them natively ).
The Words
After creating a cube that I was happy with the next major step would be to render out 3D text that could cast shadows on the wall. After sorting through the many options out there for text rendering I decided to use FTGL as it was the only library I could find that would render a truetype font as an extruded text. Unfortunately the pragmatist in me was a bit sore at having to bring in libraries that were not already included in Cinder; but visually it would look much better than flat text.
Canada, We Have a Problem …
After spending about 2-3 weeks hacking together a way to read in SMS messages from an iPhone I decided that the solution was far too convoluted to be reliable in a live environment and decided to go with Twitter towards the end of the project. It was a painful decision to make; but I do believe it was the right decision at the time; as I could not find any SMS services that could used in Canada.
The Final Touches
After completing all my tests with the individual elements of the project such as Twitter interaction, shadow mapping, textures, dynamic textures using FBO’s, aligning the projection with the actual surface, shaders et cetera, and bringing it all together I had a short time to test it out and make sure everything worked together smoothly. One thing that was immediately apparent was that the arrangement of the elements on the wall needed to be reworked to have better flow and readability after some suggestions from fellow artists. I must have redone the text that states how to answer the question through @efcube at least a dozen times! And because Twitter is still slightly unknown to the general public I had to poll some common answers before I went live so that if no one was “tweeting” answers would still show to try to entice others to also answer.
I must admit that I was constantly tweaking things until the final night to best try to gain the interest of pedestrians walking by.
what is love?
what is hate?
what is art?
what is war?
what is peace?
what is free?
what is home?
what is friend?
what is life?
what is justice?
what is beautiful?
what is family?
what is happiness?
what is fear?