The rhythm of relations of color and size makes the absolute appear in the relativity of time and space.
- Piet Mondrian
produced by: James treagus
I was inspired to make this work in an attempt to break out of the realm of static projections which rely on a forced perspective to give depth. While often visually impressive, these works are only able to function from one precise viewing position, and break down entirely when seen from anywhere else. Instead, inspired by the ‘reverspective’ works of Patrick Hughes, I tried to create a projection which used perspective to encourage and enhance the mobility of the viewer, rather than restrict it.
Concept and background research
Given we were able to work on 3d objects, I was curious if dynamic graphics could work to liberate the viewer’s movement, rather than restrict it. I took as my starting point for this inquiry the works of Patrick Hughes, who uses a forced perspective technique to imbue the image with motion -- appearing to move in an inverted 3d space to the viewers movement.
I chose the work of Piet Mondrian as the aesthetic basis for this work as his geometric formations not only lent themselves to being coded, but also enhanced the forced perspective of the projection. For Mondrian, art represented something fundamental about the world, and he attempted to distil this into its purest essence, representing the world in its most basic elements using only vertical and horizontal line, and primary colour. With this piece I wanted to pay homage to Mondrian’s philosophy, but also combine it with my own theoretical interests in the world-as-nothing. Thus Mondrian’s ordered rationalist world emerges from a chaotic sea of static, lives briefly, before being once more consumed back into infinite possibility.
The work was coded in openFrameworks, using the ofxPiMapper addon.
Though the first and last scenes have relatively simple code they presented some difficult problems. In the first scene, my initial attempts to render static proved to be excessively memory hungry, which prevented me from doing anything else in the scene as it slowed the framerate into single figures. Overcoming this required me to think in terms of optimising the number and type of calls made to memory.
Displaying an FBO with a transparent background was also a hurdle. Though I eventually found a solution online, attempting to solve the problem myself required digging into piMapper’s source code and gave me a better understanding of how the addon was functioning. Similarly, in order to implement the static creep in the final scene, I had to research and learn how to render textures using openGL.
Thinking in an optimised manner was essential to writing the middle scene, where the Mondrian-esque forms are generated, was the most challenging, taking several ground-up re-writes before I settled on a method which was both aesthetically pleasing -- following the rules of Mondrian’s compositions -- and computationally efficient, using parent/child arrangements to cull hidden and redundant entities.
Although successful on a 2d plane the translation of the script generating the Mondrian-esque planes proved tricky to tune to the projection, often (as is unfortunately evident in the above video) producing rather uninteresting planes of solid colour. Increasing the number of boxes generated didn’t seem to address this issue, as I suspect they ended up appearing behind the larger boxes. A script managing the scaling of the boxes might improve this.
While the project proves that dynamic images can function within the ‘reverspective’ structure, it doesn’t go much beyond what Hughes has already achieved with paint. It would be interesting to see what more could be done with dynamic visuals utilising this technique, for instance how interaction between the planes might be accomplished.
This project required me to learn several new aspects of openFrameworks in order to achieve the aim I set myself, and for the most part I feel I met my goals. The final projection is aesthetically coherent and, I feel, conveys the narrative I was aiming at. I am particularly happy with how the creep of scene three turned out, but the Mondrian planes of scene two are ultimately disappointing when projected compared to the effect achieved when the code is run alone. I feel that this is due to my failure to take into account how my code would interact with, and be altered by, the projection script, writing it in isolation and expecting it to translate unaltered. I will be sure to be mindful of this in future projects.
FBO alpha blend fix
flipperpistol (https://forum.openframeworks.cc/t/changing-fbo-opacity-while-using-ofxpimapper/31390/4), accessed 28/12/20
adapted from code by Theo, https://forum.openframeworks.cc/t/how-to-apply-a-texture-in-a-circle/2205/3 (accessed 04/01/21)