It Was a Girl
A generative piece and poem that deals with the issue of female genital multiation.
This piece is a visual poem that consists of writing and supplementory visuals that both evolve over the lifetime of the piece. The piece attemps to liken vulvas to flowers - both being natural and beautiful creations that should not be modified and mutliated with knives, and especially without consent. Female genital mutliation often affects young girls, I have attempted to have the visuals of the piece resemble children's drawings in an attempt to reflect/incorporate that fact. The visuals evolve first growing into a flower, then transforming into a vulva, and finally turning into an eye and shedding tears that eventually take up the entire screen and lerp to black the way it started. This is supplementory to the poem in the middle cube that also turns redder over time to signify the growing rage. The visuals change based on triggering lines in the poem to supplement this.
Concept and background research
In an attempt to stay true to the theme of the poem, I found inspiration in the work of Georgia O’Keefe. Much of her art work aims to celebrate the feminine form (this is not to say that vulvas only belong on feminine identifying individuals) by likeing vulvas to flowers found in nature. This was defintely something I wanted to incorproate in the piece. I had a vision of the piece changing and growing over time, and in order to have a flower that can morph into a vulva, I also had to draw upon sources from the mathematical field. I had to find equations for curves that have factors, that when changed, can turn into new curves that are common in both flowers, vulvas, and eyes.
My aim for the piece, and perhaps this can be an area of future work (to evolve the piece to better show this aim) was to create gentle child like visuals that are contrasted by the harsh language used in the poem. And the extremely harsh and horrendous phenomenon of female genital mutilation. I also wanted the piece to have a clear begining and ending as opposed to it being decorative. I also hoped that it may show the cycle of being born a woman in a society that practices FGM. First, prior to puberty the girl is born (like a flower sprouting), eventually the girl becomes a woman and the problems in societie's eyes begin (as if she is nothing but what is between her legs), finally when FGM is carried out, often the woman becomes a shell of herself (finally the eye shedding tears that consume it). The piece by tranforming on these instances, I hope demonstrates that process.
Grey Line with Lavender and Yellow by O'Keefe (Left) and The Intricate and Folded Rose by Jodi Stewart (Right)
The technical part of this project was by far the most challenging. There are two portions of the piece that I worked on seperately, before syncronizing them together. These were everything that has to do with the poem, and everything that has to do with the visuals.
For the poem, I used a vector of poem lines. A poem line, is a structure I created in which one element contains all the attributes I would need for one line. These were, the string contianing the line to be displayed, the duration that one line should be displayed on the screen, a value of type EffectBool that basically tells me which of the effects I've programed I want to add to that particular line, and the size that text should be displayed. EffectBool is a struct containing of boolean values grow, noise, none, explode, unexplode, shrink. If one or more of these are true, then that effect will be applied to that line. I programmed each of these effects in the .cpp part on the code. Each of these rely on one key thing, and that is the poems index and universal timer I created that gets updated each frame. Basically, I keep track of the framenumbers, I increment the index each time the frame number, minus the timer divided by 60 is larger than the duration of the current poem line. This basically means that ofGetFrameNum()-Time is a number that will always go from 0->the duration of the active poem line. Using this number, I was able to create the growing, shrinking, exploding, unexploding, effects. For the growing and shrinking, I would map that value to 0->90 to input into the sin function to give me a gradually increasing number that ranges from 0->1 for the scale. For the explosion, I would use that number to increase the noise for that word... so that the circles that compose the word would have more noise. I used similar techniques for the rest of the effects. The poem's color also lerps from grey to red based on the index. So the poem starts off as grey, and at the end becomes red to signify rage.
The visuals begin first with the flower sprouting. This starts with the branch that starts as a small brown root that grows into a green stem. I used noise on the x-axis to get the jagged-ness of it, in an attempt to make it look more stem like. Once the branch was done, I began the flower bud, when that was done, the petals grow in as well. To get the petals to take more of an eliptical shape, I mapped my timing mechanism to a factor I mutltipled by the sin and cosine to make the shape eliptical. I also lerped the color so that it would take the final colors for the next shape. I also scaled the transforming petals down, and grew out of it a gradient elipse that was a series of NoFill ellipses with lerping colors to give a gradient effect. Finally, I added a diamond shape which was based on cos(x)^3 and sin(x)^3 curves. In order to get this into an eye shape, I used the outer gradient ellipse, ofMaped its factors to make it eliptical along the X-axis as oppsoed to the Y-axis as it was previously. Lerped its color to white, and the petals I lerped slowly into a gradient ellipse that was brown to be the eye color. Once it turned into an eye, I added the tears using noise along the Y-Axis. It took a lot of coordination to create the tears. In order to have the tears fall gradually, I had to keep track of them in a vector with their old positions. I used a vector of unique noises for each one as well. I lerped the number of tears based on the index so that they would keep increasing to cover the eye by the end of the poem.
What was the most challenging out of all of this was the timing synchronization. To scale objects gradually, I created a function that would use the open frameowkrs timer to scale for a number of seconds. To make sure it only went off once (since everything is in a loop in openframeworks), I had to create trigger booleans. I could have used the timing to be the index of the poem itself, but unfortunately it made transitions extremely unsmooth as the resolution for the ofMap function is less. Instead I opted to use either my own timer mechanism (ofGetFrameNum - Timer / number of seconds * 60) or the get elapsed seconds. Another problem arose of syncrhonzing hese when I wanted to reset them for the other components that would use them.
I think in the future it would be nice to incorporate more elements of the "feminine" form that is so frowned upon. To advance the angle of showcasing the shameful and hidden "female" form in a defiant and celebratory fashion. Technically what this may look like, is perhaps adding more details to each of the three main visual aspects of the project. Perhaps add more movement, maybe have the text overlap with the visuals, perhaps have the text morph into visuals. I would really love to have this syncrhonized with audio for the future as well. Perhaps a voice over, or even just supplementory music. The tears also could be more tear shaped as opposed to spherical. Perhaps in the future the graphics in general can be more realistic. This will take the piece in a different direction, but it might be interesting to explore that as well.
As I said above, I did set out wanting the piece to be an evolutionary somewhat of a performace instead of being decorative. I believe that is indeed what happened. I found it difficult to synchronize the timers with eachother, and given more time, I would have come up with a better design decision that was more sustainable for synchronizing the timers. During development, I changed the entire structure for the poems to what it is now with the vector of nested structs. This made my life much easier if I ever needed to change/add a line in the poem. I tried to do this for the gradual scaling function, but syncing between all the elements that generated based on frames/times, when they all used that same frame/time mechanism was a challenge. I would defintely go about this differently by trying to think of a sustainable design decision. I had some issues with the ofPiMapper that I evenetually got to be the form they are in at the time of submission. But still, I think this would be worth exploring even further in the future. I added the ability for the text to show a space, in the future it would also be worth looking into to accomodate new lines as well.