this is an interactive installation i did for an exhibition about Parque da Paz, a huge park in the Almada (the city i live in) in Portugal.

video can be seen here:

here’s what i had to say about it:
Parque is an interactive installation with an ecological message where the growth of a forest is determined by the amount of attention it receives.
By making upwards movements with their bodies, children can create new trees or grow existing ones. If a tree is left unattended for too long it will shrink and eventually disappear.

This installation was commissioned by the city of Almada to be part of a permanent exhibition at Parque da Paz, a beautiful park in Almada that now celebrates its 10th birthday.

video song is Cornelius - Tone Twilight Zone

some technical information:
this was created in c++ using the amazing openframeworks library. movement detection is done using openCv’s optical flow and a custom openCV based contour tracker that calculates persistent contour identification over time. Computer vision is all running on a separate thread to keep things fast.
Trees and grass are constructed using particles and springs through a simple 2d Verlet physics engine based on this article here:


1 Like

SWEET :lol:

really cool.

did you find it that kids got it straight away?
or was there someone there instructing them how to use it?


how did you do the tree coloring?

thanks :slight_smile:

julapy: The amount of upwards movements you have to make to generate a new tree is minimal and this was set on purpose so that by exploring the installation and trying to interact with the grass and mosquitoes people could find out for themselves how it works. I noticed that this didn’t work at all with grownups which required instructions but pretty much all kids got it in a very short time.

vanderlin: i searched colorlovers for some colors that i liked and then made tables with the color values (in a range 0…1 for opengl). When a new tree is created it gets one of these colors with a slight random variation as its base color.
the rendering was done with opengl’s vertex arrays and color arrays. the vertices on one side o the branches get a base color, the vertices on the other side get a slight darker color. So for example if a branch was pointing straight up all the vertices on the left side would have the base color and all the vertices on the right side would get the slight darker color. so instead of a flat color the branches get a much interesting shading effect.
Then i also draw a stroke with a darker color for a more cartoonish look.


Very nice job! I would like to know how you do the data storage of branches/nodes. (vector?)
Also I am looking for a good approach to move branches/nodes with physics like you.

Hi, @moebiussurfing sorry for the very delayed response, i hadn’t visited the forum in several months…
Yes, i’m storing all trees in std::vectors, each tree has a itself a std::vector of branches, which also have std::vetoes of branches, creating recursion. To avoid infinite recursion branches may only be create up to the 3rd generation (or 4th… can’t remember…) :slight_smile:
each branch is made of particles connected with springs, using a Verlet integration (there is a lot of information about this, and several add ons for verlet physics). The motion is then creating by applying forces to the particles. For the wind i’m creating forces using perlin noise.
Hope it helps :wink:

1 Like

no problem at all dude! :slight_smile: Thanks for the reply. I’ll check for it.