More selected projects


Drops is a projection mapping piece designed for a triangular three dimensional form. The animation, which was made in OpenFrameworks, is made of flow fields that are informed by the physical geometry that it is projected on. 

produced by: Rebecca Aston


This projection mapping piece plays with an abstraction of rain drops; exploring illusions of gravity, three dimensional form and flow fields. 

Concept and background research

My aim was to create a piece that was strongly tied to the physical geometry of the object I was projecting onto. I wanted to create a piece that played with a sense of virtual illusion by exploiting the triangular mesh-like quality of the physical shape.

I wanted to create an abstraction of rain that toyed with simulating the real natural phenomenon. As such, in an allusion to rain drops falling, the animation begins with a randomized lighting up of whole triangles of the physical shape. When the center points of the triangles are articulated a sense of gravity is created as drops flow towards these central ‘sinkholes’ where they then disappear. 

My predominant background research was on how to program autonomous agents and flow fields.  


The piece was made in OpenFrameworks using ofxPiMapper to handle the projection mapping. The shape that the animation was projected onto was built using an Olga Kit

I used Object Oriented Programming to randomly generate rain drops that would respond to flow fields. I created a continuous “skin” for the abstract shape that was comprised of triangular surfaces. This was largely in response to the way ofxPiMapper has triangulated grids as one of the types of geometry you can use to map projections. As such, the rectangular FBO source was divided into a grid of triangles that delineated regions which would influence the flow of the rain drops as they randomly fell onto the surface. 

A singular drop's steering direction and/or velocity was influenced by looking up the directional vector that corresponded to the drop’s own x and y location on the grid. The flow field’s directional vectors would switch between, firstly, pointing down towards the central “sinkholes” of the triangles, secondly, pointing away from them, and lastly, there was a “noisy” version of the flow field that had the drops moving into different triangular fields than the one they originally fell into. Additionally, battling with and refreshing myself on Pythagorean theorems and alternate math for calculating the properties of triangles was both a challenge and enlightening. 

Future development

This was definitely only my first foray into autonomous agents and programming emergent behavior. I hope to explore this more and begin to make more complex systems. 

Self evaluation

As a whole, I treated this as a learning opportunity and tried to create a scenario where I stepped out of my comfort zone as well as solidified my understanding of underlying mathematical building blocks, especially vectors. 

If I had had more time, I would have perhaps created a stronger final animation if I had introduced alternate animation states that furhter responded to the shape. I would have liked to spend more time thinking about time, sequencing and transitions. In many ways I feel that I managed to just start ironing out a system which would have provided a good framework to experiment with creating illusions on the shape. During the exhibition I realized that the beginning and ending sequence were perhaps the strongest, when the flashing colors on the triangles provided contrast to the slower movement of the flow fields. Creating more moments of contrast and interest would have bettered the final animation.

Overall, it was a productive and challenging experience for me. I achieved my goal of executing my initial concepts and another round of responding to the reality of that execution would have bettered the animation and the code I hope.  



- OfBook, Zach Lieberman
- Nature of Code, Daniel Shiffman
- Forums and resources about triangles, most usefully and notably this one.