I tested my sketch on one of the screens in the foyer at Weymouth house. This enabled me to see what my sketch looked like on a bigger screen, as well as adjust the proportions. I think I should have adjusted the brightness levels the camera picked up as well. After showing this on the screen the feedback I received was that I could have created a shadow to show where the interactions had been as well as that path taken.

My final sketch for the interactive Installation interprets the idea of John Thompson’s (1990,1995) Quasi-interaction, where the individuals are not linked directly but the interaction is stretched across space and time. My sketch creates moving dots to represent an individual that walks past the camera. I chose dots as in ‘The Virtual Community’ Howard Rheingold (1993) looks into the idea of social aggregations and personal relationships forming in cyberspace being similar to the real world but in a disembodied form. The dots represent ourselves in our disembodied state making many interactions with surrounding people.

my original concept ideas incorporated the use of sound. With this final sketch I attempted to assign a different pitch with each dot to represent our own sense of personality and difference. However this also explores the ideas of Theodore Adorno of the Frankfurt School who argues “Musical forms tend to reflect the society within which they exist.”(Giddens, 2009) this explores musical forms taking on predictable structures which train people to expect uniformity and repetition. I’ve portrayed this in my sketch as after a while the dots of interaction build up to form patterns of diamonds and other emerging shapes. This could comment on how anonymity strips any individual personality and shows a continuous repetition in daily lives.

For future reference I think making a more attractive looking design would attract people more and get them to ask questions for them to delve deeper into the theory of an abstract piece such as this. I would also like to develop skills further in this area as to be able to create large and more interactive and engaging installations. As I learnt at the London Museum of Science, the most engaging installations were the most colourful, loudest and boldest. They were attentions grabbing and although I am happy with the concept idea of this piece I do not feel it stands out to the best of its potential.


// Imports //—————————————————————————————————- import processing.video.*; // we need to import all the classes that allow us to hook up to a web cam // Data //—————————————————————————————————- Capture cam; // Camera object with global scope PVector position, velocity, centre; ArrayList agents; // This method is called once at startup //—————————————————————————————————- void setup(){ // set the size of the canvas size(600, 600); // Instantiate and start camera cam = new Capture(this, 160, 120); cam.start(); agents = new ArrayList(); strokeWeight(4); } // This method is called repeatedly until user quits //—————————————————————————————————- void draw(){ // Test to see if the cam is available and call the grabPixel() method if it is if (cam.available() == true) { grabPixel(); } for(int i = 0; i < agents.size(); i++){ Agent agent = (Agent)agents.get(i); agent.draw(); } } // This method will only be called if the camera is available //—————————————————————————————————- void grabPixel(){ //read the current video frame cam.read(); //grab one pixel from the middle of the camera color c = cam.get(int(cam.width*0.5), int(cam.height*0.5)); //map the brightness of this pixel to a value between 0 and 1 float v = map(brightness(c), 0, 255, 0, 1); //test this value and call appropriate method if(v > 0.5){ bright(); }else{ dim(); } } void bounce(){ if(position.x > height){ position.x = height; velocity.x = -velocity.x; }else if(position.x < 0){ position.x = 0; velocity.x = -velocity.x; } if(position.y > height){ position.y = height; velocity.y = -velocity.y; }else if(position.y < 0){ position.y = 0; velocity.y = -velocity.y; } } // This method is called when the pixel is bright //—————————————————————————————————- void bright(){ background(255); // fill white } // This method is called when the pixel is dim //—————————————————————————————————- void dim(){ background(240); Agent tmpAgent; tmpAgent = new Agent(mouseX,mouseY,color(random(0,255),random(0,255),random(0,255))); agents.add(tmpAgent); } class Agent{ PVector position, velocity, centre; Agent(int x,int y, color c){ position = new PVector(random(1000),random(1000)); velocity = new PVector(6, 3); centre = new PVector(0.5*width, 0.5*height); } void bounce(){ if(position.x > height){ position.x = height; velocity.x = -velocity.x; }else if(position.x < 0){ position.x = 0; velocity.x = -velocity.x; } if(position.y > height){ position.y = height; velocity.y = -velocity.y; }else if(position.y < 0){ position.y = 0; velocity.y = -velocity.y; } } void draw(){ //higher number, less friction velocity.mult(1); position.add(velocity); bounce(); point(position.x, position.y); } }