Projection Mapping project exhibited in St James Hatcham Building as part of getLerped exhibition 2019.
produced by: James Quinn
The Plague project attempts to projection-map a generative animation onto a 3D shape, and, in a playful and original way, computationally tell an old-world story of fire and brimstone.
Using C++ as a chisel and Open Frameworks as its tablet, I set out to explore the potential narrative opportunities afforded by these computational tools.
My practice is rooted in the creation of stories, but the addition of a computational element into this work is a recent one - particularly using creative coding.
The moment therefore seemed ripe to investigate not only the creative opportunities computation affords the storytelling process, but also perhaps its limits and more importantly, those of the storyteller and their imagination.
I took my initial inspiration from the 3D shape I planned to map my projection onto: a pyramid of boxes. Pyramids got me thinking about Egyptian mythology which lead me on to old-testament biblical stories set in ancient Egypt.
The 10 Plagues of Egypt from the book of Exodus tells the tale of Moses who returns from exile to demand, by order of God, that Pharaoh release the enslaved Israelite people. When Pharaoh refuses this divine order, Moses tells him God will punish his disobedience by raining a series, or vector, of plagues upon the city.
From God’s ten plagues, I selected three to begin conceptualising:
Concept and background research
I watched The Ten Commandments and drew from paintings of the story for inspiration. To forge the piece’s aesthetic, I observed YouTube videos of frogs bouncing on mass and swarms of locusts moving -as well as the way blood splatters and runs on brick.
I coded my three scenes, or plagues, using openFrameworks with an ofxPiMapper addon.
The main resources I relied upon were lecture videos from Workshops in Creative Coding, advice from colleagues and the openFrameworks forum.
The idea was to start small and have each plague gradually infect more and more of the pyramid’s surface.
I aimed to use vectors, loops, random and sin functions to tell a simple yet effective three-act story with an almost childlike aesthetic.
Plague 1 – Frogs
This scene uses ofImage to import and manipulate an image of a frog which then bounces across the foot of the pyramid using a sin wave. This single frog is soon joined by a vector of many other frogs who use the same sin wave pattern to bounce across the window and infect the pyramid, while ofRandom determines their random locations and bouncing heights.
Because I wanted these frogs to bounce across the pyramid’s foot, I created a grid with six adjustable points in the FBO section which I used to drape it across the cubes rather than creating six separate quads.
Plague 2 – Locusts
The plagues begin to consume more of the city.
Utilising ofImage once more, this plague creates a vector of locusts and employs for-loops, ofRandom and if statements to make the locusts swarm and fly across all pyramid surfaces but not disappear off the edge. The result is hopefully intense visuals of swarming insects generating interesting patterns.
Plague 3 – Blood
The final plague draws lines of circles with the same RGB value as the colour of blood.
ofRandom dictates their size and location on the shape’s quads to simulate the effect of blood being splattered across the pyramid before eventually covering the whole thing.
I experienced a problem with setting the background auto to false because it was incompatible with FBO. I solved this problem by only setting background auto for the FBO in the class I was drawing in, rather than the main one.
I wanted the blood splattering to take more time and next time I would work to realise this. I’d have also liked to have seen more surprising or startling visual results from the blood – the same goes for the other two plagues too, in fact.
I’d like to explore creating the other 7 plagues in openFrameworks, perhaps by employing more ambitious coding techniques with the capacity for greater computational agency to hopefully produce more surprising and interesting results.
For example, rather than reverse engineering the animation of a frog plague, I could create the conditions and rules that would elicit a plague-like entity to grow and spread in a more computationally generative way
This was my first ever coding project and if comparing my current ability to when I began learning several months ago, I am happy.
That said, I can see that the finished project is far from perfect.
Next time I would hand over much more creative agency to the computer because: a) that’s the point of computational art, and b) I believe more original material would have been generated that way.
The main take away lesson for me is not to try to prejudge how a finished piece of generative art should look at the outset. Rather the human artist should provide their computer colleague with interesting given circumstances and allow it to create.
In future, I’ll endeavour to approach the process more as a collaborator with the computer than as a director of it.
The Bible (Exodus 7:14-25, Exodus 8:1-15, Exodus 10:1-20).
The Ten Commandments. Dir. Cecil B. DeMille. Paramount Pictures, 1956. Film.
Algorithmic Thinking Lesson, T., Papatheodorou. (2018). https://learn.gold.ac.uk/course/view.php?id=11521§ion=7
Repeat, Repeat, Repeat Lesson, T., Papatheodorou. (2018). https://learn.gold.ac.uk/course/view.php?id=11521§ion=4
Number Generators lesson, T., Papatheodorou. (2018). https://learn.gold.ac.uk/course/view.php?id=11521§ion=5
Geometric Frog Print. JDP Prints
Schistocerca Gregaria Desert Locust. Turbosquid 3D Models