The following photos were taken by Glen Vigus!
The Kinect had issues reading our dancer behind the screens. In order to quickly resolve this issue, we decided to place the Kinect on the side of the stage, and use Z-axis readings from the Kinect to control the X-axis movements in the projection. Unfortunately, we also had to sacrifice some of our planned interaction design. Although we had originally planned to allow the user control the size of the black void, the Kinect would not accurately follow the skeleton. Having the Kinect on the side also required a lot of calibration, especially regarding the vertical movements. This process was rather frustrating to troubleshoot. Ultimately, we realized the best course of action would be to record our dancer’s movements, and view the data in a graphical form.
Contrary to what we originally expected, the Projected Y value was more stable than the Real World Y value, as shown in the above graph. This led to more experimentation using the Projected Y value to find a mathematical relationship to more accurately determine the dancer’s position in relation to the projection.
Ultimately, through more testing the Projected Y value of the dancer’s center of mass still proved to be unstable. The longer one stood in front of the Kinect, the lower the center of mass would drop. To get around this, we decided to analyze blob data by finding the highest detected user point. This proved to be a more consistent reading. By taking readings of the user walking flat on the floor away from the Kinect, we can find a relationship between the Z-axis readings and the Blob Y readings.
This graph shows a logarithmic relationship between the Z-axis readings and the Blob Y readings. Since the dancer’s height is constant in the real world, we can adjust this equation to estimate the dancer’s vertical height when she is standing on the boxes.
The above graph displays our analysis of the given data from the Kinect. Here, the steps taken on each box is quite evident. The logarithmic equation was then integrated into the Processing sketch.
We expanded on the code from the second sketch for our visualizations. One of the main qualities we wanted to include in this iteration was the wrapping of the waves underneath the dancer. In order to achieve this, the addition of horizontal springs connecting the nodes was absolutely necessary. The position of the dancer (or in these earlier iterations, the mouse) controlled a repulsion force that would push away the nodes of the springs.
If the springs were stretched far enough, they were not rendered. This provided a base for the dancer to be framed by. The rendering algorithm went through many iterations as seen in the following figures.
Here are two videos of the early system in action, one with springs rendered (to get a better idea of how the system is working) and without.
Next, an attraction force was added into the sketch.
The system worked as expected; however, we desired more movement from the waves. In order to achieve this, the initialization of the sketch was changed to fix only the furthest left and right nodes, leaving the top and bottom nodes to travel with the force. This allowed more range of movement from the system.
One force worked smoothly. However, when the second force was added, the mesh would sometimes get tangled up. This would result in undesired spring nodes rendered with the Bezier curve, causing the black void to be covered.
In order to handle these cases, an additional check had to be made. A vector was made between the node analyzed and the previous node included in the Bezier curve. A second vector was made between the node analyzed and the user (or repulsion force) position. If the angle between these two vectors was less than PI/2.0, that spring node was not rendered. This was more effective.
Here is a video demonstration (Note: the screen capture slowed down the frame rate of the actual visual).
Here we are testing out the Processing sketch with the costume!!! I’m super concentrated… I hardly move haha.
We were tasked with creating an interactive dance environment with projection mapping for our second sketch of the semester. We were given a Kinect camera to play with for this project.
While I was busy prepping for the ACDFA Conference, Noemi, Tiffany, and Janelle tested on the projections on the scrim. They put some videos of sea life on the screen. They really liked how Noemi looked dancing behind the screen with the tentacles, so we decided to base our projection visualizations on that.
Noemi also has to utilize one of the Laban movements into her choreography. She has chosen to focus on the movement “floating” which is perceived as indirect, sustained, and light.
First Iteration of System
After discussing with my group the desired behavior, I felt like a spring system would be appropriate, with attraction and repulsion force pushing and pulling the nodes. Here is a screenshot of the first iteration of the system. I got good feedback from the group.
I struggled a lot with the rendering of the nodes, mainly because I didn’t want to deviate too much from the tentacle theme our group had decided on. Here are a couple iterations of the system.
Tentacles –> Waves????
So, I was pretty unsatisfied with how the visualization with the tentacles were turning out, especially seeing Noemi interact with them on the huge projection screen. But the sketch was due in two days! I decided to deviate from the original tentacle idea, and experimented with different renderings of the system.
By drawing horizontal Bezier curves through the springs, I was able to create a flowy, wave-like pattern which fit perfectly with Noemi’s chosen Laban movement, “float.” I showed it to our group that night, and everyone was on board with the changes!!! It was really interesting how drastically different the two renderings felt, even though it was the same exact system. We played around with various parameters: color, speed, amount of rows. And incorporated some color changes based on the speed of the dancer’s center of mass.
Final Performance Video
Again, forgive the video quality. The camera did not do too well in low light.
Forgive the quality of the video, the camera did not do well in low light.
Unfortunately, we did not have the hindsight to take pictures of the final performance. Here are some screenshots of a video someone from another group took of the performance. Sorry for the low quality, the lighting in the room was dim and the video was taken with a cellphone.
So, as a reminder, this was just a prototype of the costume. Given more time, we would definitely extend the lights around the full skirt.
Overall, I was pleased with the aesthetics of the lighting. I would, however, change my Arduino program a bit. The change in resistance of the stretch sensor was very small, so instead of directly mapping the voltage to the brightness of the light, I would have my program detect whether the voltage was increasing or decreasing, and dim or brighten the light accordingly.
It would also be fun to play around with lights on her bodice and legs (perhaps to give the illusion of jellyfish tentacles?). This would allow the audience to see more of the dancer’s form.
If I can get a hold of one of the two videos taken, I will definitely post it!
Alright, so I had no experience with EL Wire at this point. We purchased an EL Sequencer to be able to animate the lights.
I used this tutorial from Bildr.org to help me get started with the EL Sequencer.
Once I got lights blinking and fading, I integrated the stretch sensor. I actually had worked with creating a breath sensor for another project in Physical Computing, and was able to easily incorporate it with the EL circuit.
To measure the breath, I used an stretch sensor band wrapped around the abdomen. When the user inhales, the abdomen would rise, causing the band would stretch, increasing the resistance. Exhaling would cause the abdomen (and the band) to contract, decreasing the resistance. I inserted the output voltage of a voltage divider circuit incorporating the sensor to one of the analog inputs.
I programmed it so that exhalations would result in the light dimming, and inhalations would result in the light brightening. I took several readings from Noemi, in order to determine the maximum and minimum incoming voltages from her breath. Using these values, I mapped incoming voltages to 0 to 255, so when Noemi reached her minimum/maximum breath points, the light would be fully on or off respectively with fading values in between.
Here is the final diagram:
With the final diagram in place, I got rid of the breadboard and alligator clips, and began stitching the main soft circuit with conductive thread on felt. (Note: I forgot to put the battery back in when I took these pictures).
We also stitched the stretch sensor on an elastic band that Noemi could wear under her chest.
Here is the front of her leotard:
And a close up of the band on her back:
In order to connect the stretch sensor to the main circuit (which we planned to place under her skirt), we added two fabric strips with two snaps (power and ground) on both ends, connected respectively by conductive thread.
We taped all the exposed conductive thread. And created a flap to protect Noemi from the circuit (I got shocked many times from working on this…).
We also created a little pocket for the battery and the inverter to go into. You can also see the two snaps that connect to the stretch sensor!
Here is a better picture demonstrating how everything all fits together:
After consoling with Carisa, the primary costume fabricator of the dance department, we began planning out the skeletal structure of our skirt. We decided to use an elastic waist band, and suspend plastic tubing with fishing wire.
Time to shop for materials! We headed to Jo-Ann’s to pick out some fabric. We knew that we wanted something sheer like chiffon to lay over the EL wire; however, we were unsure about color.
We found a row filled with different colored chiffon. To test, we held up the colors to Noemi (which was also helpful to get a rough estimate as to how many yards of the material we should get).
We ultimately settled on these two bolts of chiffon in different shades of blue. We really liked the effect they had when laid over each other.
We got some plastic tubing from Lowe’s for the skeleton of the garment. Tiffany already had some fishing wire at home!
We met again at my apartment to being the construction of the skirt! First, we decided to test the overall shape by creating the skeleton support. We curved the plastic tubing into a loop for the bottom of the skirt, and suspended it with fishing wire to an elastic waist band. Tiffany also had some fishing line weights, that we used at the bottom of the skirt to help keep it’s shape (it originally kept wanting to fold up on itself). Noemi moved around in it a bit, and liked the movement it provided.
We decided to measure out the other tiers of the skirt.
First layer done! We basically folded over the fabric on both sides to create a little pocket for both the elastic band and the tubing. Unfortunately, I did not allow enough seam allowance, so this ended up being shorter than we wanted. But that was okay! This would become the shorter tier, and now we know better for the next one.
Second tier completed the next day!
Now time to assemble the piece together.
And add lights! Tiffany, Janelle, and Noemi worked on laying out the lights in an organic pattern.
They tacked on some stitches to maintain the desired curves.
The theme for our first assignment was “symbiosis.” By definition, symbiosis is “the relationship between two different kinds of living things that live together and depend on each other” (Merriam-Webster Dictionary). It is a mutualistic relationship.
After some investigation, we began exploring inspiration in ocean life which is abundant with symbiotic relationships. And we became entranced by the soothing movement of the jellyfish.
In order to mimic the rhythmic nature of the jellyfish, we found it appropriate to incorporate the breath of the dancer. The expansion and contraction of the jellyfish’s body is reminiscent of breath. We decided to measure breath using a stretch sensor that will be wrapped around the rib cage of the dancer.
We were initially pretty set on using an LED output with a rippling effect timed with her breath. However, we came across this image of a deep-sea comb jelly:
This inspired us to use EL Wire in order to create a more organic shape with the lights and better capture the jelly’s bioluminescent likeness with lights dimming and brightening along with the dancer’s breath.
Our costume plan evolved quite extensively during our brainstorming process.
Initially were we set in having gaucho pants and a form fitting top for contrast.
However, these pants morphed into a skirt to mimic the shape of the jellyfish. We wanted to create layering tiers of the skirt.
The EL wire would be installed under the layer of fabric, in an organic pattern as shown in the deep-sea comb jelly image mentioned above.
Noemi has settled on the following keywords to guide the choreography for the piece: mysterious, soothing, smooth, fluid, and contractions.
We came across the following image for our set inspiration:
Ideally, we would love to create a world of some sorts for the dancer to explore. This world would consist of various sheer hanging curtains that the dancer can move in between and around. They would be dimly lit ground up (unlike our inspiration source) in order to make the dancer the primary focus.