Skip navigation

…final considerations

bottom line

The project was intended from the beginning like creating a kind of musical instrument on the water. The key item, the water, is both the most important quality and the most difficult challenge. So, we can say that projecting on the water and by night is something beautiful and fascinating, but also difficult to communicate and re-create in a prototype. From the practical point of view, it’s possible to project on water in night time, even if the angle of projection is less than 90°. A certain amount of light will be reflected in the opposite direction, but the projection on the water will be very good and precise. We try out that in a simple experiment projecting green light in a little basin.

projecting on water

A difficult challenge was also coding a complex interaction between objects of different classes (in our case lilies and ripples). At the beginning we wanted to have a sound for the ripples, when they appear, a sound for a intersection among ripples, a sound for the lily and a sound for the lily hit by a ripple. Simplifying the sound situation, also for making a lighter code, we delete the sound of ripples’ intersections also because when two ripples appear, you can hear two different sounds overlapping and that create a “third” sound.
The function we used to check intersections among different ripples, became useful to check the hitting between ripple and lily: but the problem was “how an ellipse (the ripple) can interact with an image (the lily)?”. So we thought that it would be easier drawing an ellipse under the lily image and treat “her” as another ripple in the ‘checkIntersection‘ function (see the code page).
Another problem with the code was that at the beginning our ripples got enlarging and fading off, but actually remain still there… You couldn’t see them, but they were still “alive” and continue to interact with lilies. To solve this problem Tom Hulbert suggested to create a list that contains all the visible ripples, and that would delete them when they become completely transparent.

// addRing function adds a ring inside the rings’ array
void addRing(float x, float y, float dt, float alph){
rings = (Ring[]) append(rings, new Ring(x,y,dt,alph));}

// update rings (in the void draw): make the ripples enlarging and get transparent, and when they are completely invisible
// it deletes them from the list (the Ring array)
for(int i=0; i<rings.length; i++ ){
if (rings[i] != null){

ringsTemp = new Ring[0];
for(int i=0; i<rings.length; i++ ){
if (rings[i].visible == true){
ringsTemp = (Ring[])append(ringsTemp,rings[i]);}}

if (ringsTemp.length < rings.length){
rings = new Ring[ringsTemp.length];
arraycopy(ringsTemp, rings);
ringsTemp = null;}

Paper lily

We think that it would be a great opprtunities and a challenge at the same time to upset the nature of our installation, doing completely without projections and using real elements.
We now try to give an example of how it could work.
Our sensors, once pressed, could make some plastic tablets moving and creating real ripples. The camera tracking input turns on a system, set under the water level, that will get free a material lily which will bob up, when a person arrives on the jetty. This lily could have a piezoelectric sensor in it, which feels the vibrations due to the ripple that hit it, and that send the input to generate a sound. It could even have a real analogic instrument that works with vibrations.
We make a try with a paper lily and ripples generated by moving a plastic tablet and, as you can see in the photo, the ripple effect is really beautiful.
Water, the most important element of our work, would give a poetic value also to this physical version of the project.

bloom | more | context | design | tech | prototype | code | considerations | credits | downloads