Enabler- Nathalie White- Marcela Godoy

Conception and Design 

For my final project, I wanted to create an experience that would make users aware of the impact of their shopping choices.  My aim was for the project to be shocking- to link every-day objects to their dark production implications. Initially I didn’t know what aspect of consumerism to target: I considered using toys, shoes, beauty products and food to portray the message. Eventually I decided to focus on the fashion industry, looking into the negative effects of fast fashion. 

Since I wanted to make my message shocking, I considered creating a small space where images and videos of the negative effects of fast fashion would be projected.  I wanted the user to feel engulfed- completely surrounded and overwhelmed by the social and environmental harm done by this industry. The images would be triggered by a catalog of clothes and shoes, with each item acting as  a button. 

After testing the projectors available to me, I decided that it would be hard to get the desired effect with this technique:  I would need multiple projectors, which would, together with the physical structure, take up a lot of space. This was not logistically viable. Alternatively, I could use one projector, but I would run the risk of having the user accidentally block the projection with their body.

But the logistics of the projections were not my only issue with this concept. Marcela and I both felt that using buttons as the interface didn’t make the project feel interactive enough. This problem sparked what came to be my final design: a clothing rack with 3 hangers (each representing a particular brand) that would cue the videos when picked up. The idea was to take an ordinary action (picking up clothes from a clothing rack) and using it as a trigger for the message. The unexpectedness of the message would help it stay in the mind of the users, and hopefully spark thought and emotion- both critical aspects of interaction for me.

User testing

During the user test, I realized that people were initially unsure of how to interact with the project. Because of this, I decided to make a sign that said “Try out our new collection” and put it on the hanger. I also included a mirror, and added some background music, to mimic a clothing store.

Another comment I received during the user test was that the project made people feel deflated. I showcased only the negative aspects of the fashion industry, so users felt like there was no alternative they could turn to. Because of this, I chose have one of the hangers represent an environmentally conscious company (Patagonia).

Fabrication and Production

Physical Structure:

Code:

import processing.serial.*;
import processing.video.*;
Movie myMovie0, myMovie1, myMovie2;
import processing.sound.*;
SoundFile sound;

String myString = null;
Serial myPort;

int Y_AXIS = 1;
color c1, c2;

int NUM_OF_VALUES = 3;  
int[] sensorValues;      /** this array stores values from Arduino **/


void setup() {
  //fullScreen();
  size(1600, 900);
  background(0);
  setupSerial();
  myMovie0 = new Movie(this, "True Cost Summary.mp4");
  myMovie1 = new Movie(this, "True Cost Summary.mp4");
  myMovie2 = new Movie(this, "Patagonia.mp4");
  //myMovie0.play();
  //myMovie1.play();
  //myMovie2.play();
  c1 = color(180, 200, 200);
  c2 = color(255, 200, 200);
  //noLoop();
  sound = new SoundFile(this, "shopping.mp3");
}


void draw() {
  updateSerial();
  printArray(sensorValues);
  background(0);


  if (sensorValues[0] == 1) {
    myMovie0.play();
    myMovie1.stop();
    myMovie2.stop();
    if (myMovie0.available()) {
      myMovie0.read();
    }
    image(myMovie0, 0, 0, width, height);
  } else if (sensorValues[1] == 1) {
    myMovie0.stop();
    myMovie1.play();
    myMovie2.stop();
    if (myMovie1.available()) {
      myMovie1.read();
    }
    image(myMovie1, 0, 0, width, height);
  } else if (sensorValues[2] == 1) {
    myMovie0.stop();
    myMovie1.stop();
    myMovie2.play();
    if (myMovie2.available()) {
      myMovie2.read();
    }
    image(myMovie2, 0, 0, width, height);
  } else {
    myMovie0.stop();
    myMovie1.stop();
    myMovie2.stop();
    setGradient(0, 0, width, height, c1, c2, Y_AXIS);
    sound.play();
  }
}

void setGradient(int x, int y, float w, float h, color c1, color c2, int axis ) {

  noFill();

  if (axis == Y_AXIS) {  // Top to bottom gradient
    for (int i = y; i <= y+h; i++) {
      float inter = map(i, y, y+h, 0, 1);
      color c = lerpColor(c1, c2, inter);
      stroke(c);
      line(x, i, x+w, i);
    }
  }
}





void setupSerial() {
  printArray(Serial.list());
  myPort = new Serial(this, Serial.list()[2], 9600);

  myPort.clear();

  myString = myPort.readStringUntil( 10 );  // 10 = '\n'  Linefeed in ASCII
  myString = null;

  sensorValues = new int[NUM_OF_VALUES];
}



void updateSerial() {
  while (myPort.available() > 0) {
    myString = myPort.readStringUntil( 10 ); // 10 = '\n'  Linefeed in ASCII
    if (myString != null) {
      String[] serialInArray = split(trim(myString), ",");
      if (serialInArray.length == NUM_OF_VALUES) {
        for (int i=0; i<serialInArray.length; i++) {
          sensorValues[i] = int(serialInArray[i]);
        }
      }
    }
  }
}

Final product:

Final videos and other media used in this project can be found here.

Conclusion

I was content with how the project turned out. I feel that users were engaged by the message, and surprised by it’s form of delivery. To me, this means that my piece was interactive: users were mentally and emotionally engaged. If I had more time, I would change the videos. I am currently using a lot of material from the documentary “The True Cost” and from videos by Patagonia, and I feel that even though these videos were great for portraying the message,  I would want my final version to be more my own. I would also do more research on the individual companies I put on the rack.

Leave a Reply