Recitation 6: Animating an Interactive Poster

IMA Show Poster

    • Event: IMA Fall 22 End-Of-Semester Show
    • Location: 8th floor
    • Day: Friday December 16
    • Time: 6pm to 8pm

To design this poster the first thing I did was follow the instructions to make a double loop–put circles bespreading over the whole background.

For the random part, I chose to make the colors of background circles randomly changing, ending up with an effect of flashing.

For the interaction part, I got inspirations from a work: https://dribbble.com/shots/5894554-The-Diagon-Maze

Featured image

and https://dribbble.com/shots/5894554-The-Diagon-Maze?utm_source=Clipboard_Shot&utm_campaign=Jobarbo&utm_content=The%20Diagon%20Maze&utm_medium=Social_Share&utm_source=Clipboard_Shot&utm_campaign=Jobarbo&utm_content=The%20Diagon%20Maze&utm_medium=Social_Share

Featured image

I thought hollow out some grapics to make a shape of “IMA”. At the beginning, I considered to use half-circles as shown in the second referred project, but I failed to draw a draft of “IMA” characters design(time limited, since my laptop somehow had to be repaired). Therefore, I decided to keep the circles as repitation and just take of some circle around my cursor.

Version 1

There was something wrong with the color, which later was dealed with by  reorganizing fill() and noFill()–because I divided all the main operations into different functions in new tabs(it was much easier to write code and make the logic clear), there connection and interaction between functions were not well considered and organized. So, later I make some defaults at the beginning and end of every function.

Although I kept my idea to make the poster in deep color because I thought it fit the picture of IMA in my mind, it still worth recording such a fresh and beautiful “palette”.

Version 2

After dealing with the color(fill() & noFill())

The last step was to make the shape if backgound “IMA” to interact with the cursor.

Version 3

Finally, I added a condition to make the background “IMA” keeping in the middle when my cursor moving out of the sketch.

//float ri;
//Ripple ri = new Ripple();
float i;
float distanceW=1024/16;
float sizeCircle=0;


void setup() {
  size(1024, 768);
  frameRate(10);
}

void draw() {
  backGround();
  //i=dist(mouseX, mouseY, width/2, height/2);
  //i=map(i, 0, 700, 1.3, 0.2);
  //push();
  //rectBox(i);
  //textBox(i);
  //pop();

  //newdesign
  //background(140, 60, 150);
  backCircles();
  textShow();
}
void backCircles() {
  float d=distanceW;
  float x=mouseX;
  float y=mouseY;
  float[] arrayX=new float[48];
  float[] arrayY=new float[48];
  int[] ima={3, 9, 15, 17, 19, 21, 23, 27, 29, 31, 33, 39, 41, 43, 45, 47};
  int index=0;
  if (x>=6.5d && x=2.5d) {
    for (float j=distanceW/2; j<=height-distanceW/2; j+=distanceW) { //y
      for (float i=distanceW/2; i<=width-distanceW/2; i+=distanceW) { //x
        //fill(240,210,120);
        if ( i<=x+6*d && (i>x-6*d)&&(j<=y+2*d)&&(j>y-2*d)) {
          //fill(255);
          //noFill();
          //circle(i, j, distanceW);
          arrayX[index]=i;
          arrayY[index]=j;
          index++;
        } else {
          noStroke();
          fill(random(200, 250), random(200, 240), random(200, 240), random(90, 150));
          circle(i, j, distanceW);
          fill(random(200, 250), random(200, 240), random(200, 240), 80);
        }
      }
    }
  } else {
    x=width/2;
    y=height/2;
    for (float j=distanceW/2; j<=height-distanceW/2; j+=distanceW) { //y
      for (float i=distanceW/2; i<=width-distanceW/2; i+=distanceW) { //x
        //fill(240,210,120);
        if ( i<=x+6*d && (i>x-6*d)&&(j<=y+2*d)&&(j>y-2*d)) {
          arrayX[index]=i;
          arrayY[index]=j;
          index++;
        } else {
          noStroke();
          fill(random(200, 250), random(200, 240), random(200, 240), random(90, 140));
          circle(i, j, distanceW);
          fill(random(200, 250), random(200, 240), random(200, 240), 80);
        }
      }
    }
  }
  System.out.println(arrayX);

  for (int i=0; i<index; i+=1) {
    boolean isBlank=true;
    int p=0;
    while (isBlank==true && p<16){
      if(i==ima[p]-1){
        //System.out.println(ima[p]);
        isBlank=false;
      }
      p++;
    }
      
    if (isBlank==false) {
      noStroke();
      fill(random(200, 250), random(200, 240), random(200, 240), random(90, 140));
      circle(arrayX[i], arrayY[i], distanceW);
      fill(random(200, 250), random(200, 240), random(200, 240), 80);

 
    }
  }
}
void backGround() {
 
  for (int i=0; i<width;i+=1){
    noFill();
    float r=map(i,0,width,194,0);
    float g=map(i,0,width,107,0);
    float b=map(i,0,width,255,0);
    stroke(r,g,b);
    float j=map(i,0,width,0,height);
    rectMode(CENTER);
    rect(width/2,height/2,i,j);
  }
}
void textShow() {
  push();
  translate(width / 2, height / 2);
  PFont mono;
  PFont monono;
  PFont mononono;
  mono = createFont("cuteFont.ttf", 128);
  monono = createFont("titleFont.ttf", 128);
  mononono = createFont("lovelyFont.ttf", 128);
  textFont(mono);
   //textAlign(CENTER, CENTER);
  //textWeight(12);
  //fill(255,100);
  sizeCircle=sin(millis()/1000.)*60;
  circle(0, 0, 600+sizeCircle);
  fill(255,220);
  textSize(120);
  text("IMA", -250, -100);
  textSize(60);
  text("Fall 22", 30, -100);
  textFont(monono);
  textSize(80);
  fill(255);
  text("End-Of-Semester Show", -420, 0);
  textFont(mono);
  textSize(40);
  fill(255,220);
  text("Location: 8th floor", -250, +70);
  text("Time: 6pm to 8pm", -250, +130);
  text("--Friday December 16", -250, +190);

  //ri.display();
  //ri.move();
  pop();
}

For the further development, I can tried difference background repeating graphic instead of circles, but I know it will be hard to keep a visual balence between complex graphic and information concentration.

 

Recitation 5: Processing Basics


Based on my previous experience of drawing with code, I really wanted to draw something different, such as an environment instead of an object. Therefore, I chose this picture from my album which was taken half an year ago, when I was in the Shanghai lockdown, stuck in Jingqiao. I can still remember, the period when I took this picture, the situation became a bit better and we were allowed to get down in certain time. The weather became warmer and followers became out of bloom in Jingqiao.

To create the environment with graphic-based drawing skill on Processing, I decided to use color lumps(triangles, beginShape/endShape, lines with color changed linearly, and transparency) as the background color, as shown in the picture:

For the petals and leaves, the workload will be unthinkable large if I draw and locate them one by one, so I determined to create a set of objects–by class(OOP). However, everything about OOP I’ve learned is based on other language, such as JS, python. I met problems defaulting and calling object array. 

Therefore, I tried to make a function and call it hundreds of times in draw function. Here is the code can effect.

Version 1:

float x;
float y;
//Leave l;
int numL=int(random(100,200));
//Leave l[];

void setup() {
  size(600, 800);
  //createCanvas(width,height);
  background(40, 30, 60);
  
}
void draw() {
  //background
  background(100, 120, 180);
  for(int i=0;i<height/3;i+=1){
    //stroke(i/2.8,i/3.2,i);
    //line(0,height/3-i,width,height/3-i);
    float c=map(i,0,height/3,0,255);
    float d=map(i,0,height/3,255,0);
    stroke(d/3+20,d/4+10,d);
    line(c/255*width*2-width,height/3,c/255*width*2,0);
  }
  for(int i=height/3;i<=height;i+=1){
    float c=map(i,height/3,height,0,255);
    stroke(c/3,c/1.5,c/4);
    line(c/255*width*2-width,height/3,c/255*width*2,height);
  }
  
  line(0, height/3, width, height/3.1);
  line(0, height/3, width, height/2.7);
  line(width, height/4, width/5*4, height/7*3);
  line(width/5*4, height/7*3, width/4*2.8, height/3*2);
  line(width/4*2.8, height/3*2, width/15*14, height);
  push();
  noStroke();
  beginShape();
  vertex(0, height/3, width, height/3.1);
  endShape();
  pop();
// background


  //line(width/4*2.5,height/3*2);
  //curve()



  //flat
  push();
  noStroke();
  fill(130, 130, 130, 180);
  triangle(0, height/3, width, height/2.7, width, height/3.1);
  triangle(width, height/4, width/5*4, height/7*3, width, height);
  fill(120, 120, 120, 180);
  triangle(width/5*4, height/7*3, width/4*2.8, height/3*2, width, height/3*2);
  fill(110, 110, 110, 180);
  triangle(width/4*2.8, height/3*2, width/15*14, height, width, height/3*2);
  fill(100, 100, 100, 180);
  triangle(width, height, width/15*14, height, width, height/3*2);
  //width/5*4, height/7*3, width/4*3-20, height/3*2
  //width/4*3-20, height/3*2, width/15*14, height
  
  //grass
  fill(20,40,20);
  triangle(0,height/3.1,width/2,height/2,0,height/5*4);
  fill(40,60,30,180);
  triangle(0,height/3,width/10*9,height/2.8,width/3*2,height/3*2); 
  fill(40,60,30,180);
  //triangle(0,height/3,width/5*4,height/2.9,width/3*2,height/3*2);
  //fill(40,60,30,180);
  //triangle(0,height/3,width/5*4,height/2.9,width/3*2,height/3*2);
  pop();


  //tree
  push();
  noStroke();
  fill(120, 90, 80);

  push();
  x=width/5;
  y=height/2;
  translate(x, y);
  rotate(PI*0.98);
  rectMode(CORNER);
  rect(0, 0, width/30, height/5*2);
  pop();

  push();
  x=width/3;
  y=height/5.1;
  translate(x, y);
  rotate(PI/3);
  rect(0, 0, width/60, height/7);
  pop();


  //beginShape();
  //vertex();
  //endShape();
  pop();
  
  for(int i=0; i<numL;i+=1){ float x=random(width); float y=random(height/3,height); petals(x,y); } } void petals(float x, float y){ push(); translate(x,y); push(); translate(-25,-30); noStroke(); int r=int(random(230,255)); fill(r,200,220,130); beginShape(); vertex(18,21); bezierVertex(70,51,110,25,74,78); bezierVertex(76,123,38,89,18,21); endShape(); pop(); pop(); } //class Leave { // float x,y; // Leave (float xleave, float yleave) { // //ypos = y; // //speed = s; // x=xleave; // y=yleave; // } // void update() { // //y += speed; // //if (y > height) { 
//    //  y = 0; 
//    //} 
//    //line(0, y, width, y); 
//  } 
//  void displayLeaves(){
//    push();
//    translate(x,y);
//    scale(x*2/height);
//    shape();
//    pop();
//  }
//  void shape(){
    
//  }
  
  
//}  

The problem was: to diversify petals(location, color, size, rotation–only test teh location at the very beginning), function called everytime, changed the parameter of the location. However, the draw function is a loop. It means all the petals kept flashing, and changing locations–it was already an animation though :/

Continue reading “Recitation 5: Processing Basics”

Recitation 4: Actuators and Mechanisms

Step 1: Build the circuit

After deviding the work, the most of the circuit was finished by my partner. But before starting, we together learnt the direction of the IC.

Here is the instructions from the recitation webpage: 

/*h bridge
Make sure you orient the IC in the correct position; The IC has a front and a back. A semicircle indicates where the front of the IC is. The pin to the left is pin 1, and the diagram beside depicts how the other pins are numbered.
*/

Step 2: Build a cardboard mechanism!

It was hard to cut certain shapes from a thick cardboard. I had to follow the sides of the steel ruler and row the art knife for times, slowly can carefully. One important thing here is to use a cuttingmat; the other is using art knives rather than scissors, especially when cutting thick board.

To shape the curve of some elements, first cut straight lines and later use scissors to close it up.

Step 3: Personalize it

First, my partner wanted to make a star represented the shining by shaking. But I suggested to make a more interesting thing, since there were movable and stable parts on it, by which we can make an image(emoji) variable~ 

Continue reading “Recitation 4: Actuators and Mechanisms”

Midterm Project:Proposal

Shooting Games-Mingxuan Xie-Margaret Minsky

  The original idea is to simulate the process of aiming and powering. Only move the gun at certain direction and wait the power in a certain range, the corresponding target can be shot–the LED extinguishes(or simply change the state–light to dark or dark to light, depending on the game mode). To extend it, it can be developed into a rehabilitation training game on wrist–control the direction and power degree is in high demand of wrist control; it can also be used to education scenario–preserving the shooting part and find a angle sensor(perhaps or some sensors that are more sensitive to direction and angle), to help children engage answering the questions on the game. The idea to make a shooting game came from a character in a video game: https://kingglory.fandom.com/wiki/Baili_Shouyue Continue reading “Midterm Project:Proposal”

Recitation 3: Sensors

Step 1: Prepare your tilt sensor

During the process, the most challenge part might be keeping two wires’ tips and the feet of my tilt sensor stable when weilding it. Because the only thing I can use to press them together was the thin solder tip with two hands holding it and the tin wire. To solve it, I used more paper tape than it shown on the instrocutive picture on the website, pasting the sensor’s body and two wires’ tips on the cardboard at the same time. Unfortunately, for this part, I forgot taking a picture, but it worked well 😛

In the As for the splicing part, everything went well.

 

tilt-22uF-10k

Continue reading “Recitation 3: Sensors”

Recitation 2: Arduino Basics

Circuit 1: Fade

Reference:https://docs.arduino.cc/built-in-examples/basics/Fade

There were not any big troubles during the process. The only one thing interested me was the instructions about  on the tuition webpage:

“The analogWrite() function that you will be using in the main loop of your code requires two arguments: One telling the function which pin to write to, and one indicating what PWM value to write.

In order to fade your LED off and on, gradually increase your PWM value from 0 (all the way off) to 255 (all the way on), and then back to 0 once again to complete the cycle. In the sketch below, the PWM value is set using a variable called brightness. Each time through the loop, it increases by the value of the variable fadeAmount.”

Continue reading “Recitation 2: Arduino Basics”

Group Research Project: Read

Story1_The Veldt by Ray Bradbury: 

The children are addicted to the bestiality of the African savanna, which remind me of the relationship between food and human. So here comes a device in my mind.

It is a wearable device allowing you to simulate the taste of dishes other than what you are having, by seeing pictures of the dishes you want to taste. It will quite fit those fitness fanatic or someone eagering to lose weight. Besides, it can also be used in hospital by patients or old people hard to have tasty food, improving there life quality and mental health. In terms of the existing technology and design, I found there were already some expriments to give people special sense of taste by vibration and feelings by neural inhibition, which might be used in the future. Here is one of them: 

But in my idea, the machine can be smaller and lighter. It is hard to notice when having a meal, which makes the eating experience realistic and totally enjoyable.

 

Story2_The Ones Who Walk Away from Omelas by Ursula K. Le Guin: 

 

–The happiest city in the world lived the most miserable child.

To recreate the sense of shock, here comes an idea probably shown in a room. When you step into the room, a wild garden comes into your sight where grass, animals, insects and flowers irregularity grow and live: some are bloomson, vivid, and beautiful, while some are withered, dying, or dead. In the middle of the room, there are platforms with some lively creatures on, like a dozing cat(a fake one, of course), a dandelions in full bloom, and a goldfish in water. Reviewing the guidance, you knowthat, only strongly chocking the throat/flower of the creature can make the gardon turn into a whole bloomson even include those dead, but the one you chock. Once you release your hands, the gardon will return to the wild one, in half a life and half a death. Which one you will choose to “perscue”? I hope it would remind peope the equality of lives; from the device, poeple can care for a creature more for its own sake rather than our perference.

Story3_The Plague by Yan Leisheng: 

The concept is “catching a sense of time”, from the kiss spanning six thousand years in The Plague. Let’s start imagining. There is an exhibition displaying two rows of works, with a mirror-like screen behind/beside each to play a video about it, no matter its is the real history or a creative story. For each thing, serveral videos are created, including the real story of it and imaginative stories about it.

When you are certain distance away from it, only the inverted image can be seem in the mirror-like screen with reflection of the real world as a background. Then when you step closer to it, the background changes as time tracing back, which is actually upending the random story of the thing.

It should be noted that, the speed and progress of the story displaying is responding to the distance and speed of observer: The faster the visitor moves, the lower the playing speed will be; the closer the one is, the earlier the story progress will be, which means the video upends when getting closer and normally plays when stepping backward.

In terms of the exhibition’s influence, first, it’s expected to give people a clam experience to take some time enjoying a small visual show; second, it conbines the sense of body speed and time running, delivering a vivid sense of time; futhermore, the change of time speed may inspire people different angles to consider the meaning of time to different things in the world, helping them reflect on the natural law and their own life. 

Later, I found my idea is not exact “an interactive artifact which currently does not exist“, so I took some time and came up with another idea:

An Instrument in the shape of a magnifying glass. When you Move the magnifying glass above something, you can see the process of its formation through the glass. The possible law behind this device might be that, big data collects knowledges and mediaIt of most of thing in the world and the device recognizes the thing beneath and simlates the process of forming. It can be used to police procedurals or medical treatments, helping experts quickly find related information and better work for lives and society. For the existing tech, I know there are some apps or functions in smartphone that can scan a thing, recognize it, and tell the user more information about it. (like this:

Scan Thing

(https://scanthing.app/)

 

Updated:

a new idea for Story2: when you feel down, the device will recognize your low emotions and show you spotlights of people upset around(in the world)–help you feel not along anymore and make a connection with others in the world.

The problem is, the device might be dangerous if there are seldom people around–you might be targeted by someone bad to crime.

  • Your invention should be concrete and imaginative. 
  •  Research the existing technology and designs similar to your concept.
  • Do you foresee any new problems caused by the existence of this invention?

Group Research Project: Research

  • Task: Based on the 3 mandatory research readings posted on the readings page and your own research, write a blog post about how you would define interaction. 
  • Interaction is a process or movement within at least two subjects. It can happen between creature and creature, creature and objects, objects and objects… sometimes, abstract factors can also be included. For the interaction we discuss today, it mostly remind people of the interaction between human(or other creatures) and objects(including machine, devices, or something else). However, ‘conversation’ between different senses like sounds and graphs can also become great form of interaction art.(came after projects study)
  • In the process of interaction, there must be movements including receiving information(or instructions), processing information, giving reactions, and repeating (or iterating). It means there must be some changes with time passing by that we can figure out, whether by eyes, ears, or something else.

 

  • Projects study
  • 1. Into The Wind–by witaya
  • This installation invites the viewer to replicate the wind by triggering special mechanisms with their breath. 
  • Inspired by the surroundings observation in everyday life, “Into the Wind” started as an experiment to reproduce a natural process in natural space, based on technological technique and human perception. 
  • Interaction:  Into the Wind is designed to mimic nature, turning breath into wind by computer programming–just like a conversation mentioned by Crawford(2002, p. 3)–the breath is the first one’s statement, the programming is the listener’s thinking, and the blowing bubble is the response from the listener.  This interactive art device transforms user’s breath into data and then proceeds the information got from the user with set physical computing patterns, so finally it turns program into visual wind–bubble blowing process.
  • Others: Outside of programming, it’s more obvious to say it is an interation between sense of tough and vision. Shapes and forms of bubbles are varied depending on how the viewer blows, reflection how the wind respond to our breath.

 

  • 2. Multimedia channel Works “Linjie (The borderline)”–ALIENWARE外星人×摩登天空
    • it is interesting that there is no visitors’ behavior influencing the art show, but it was still classified into Interactive Media Art. So I started to think whether an art work with inner interactions between two or more visible components can be considered as interaction art. Then my understanding of interaction went deeper, though I don’t know if it is true–interaction is just a sense of connection delivered to visitors, not matter visitors joined or not.