Carly Sacco – Project 02 – Variable Face

sketch

//Carly Sacco
//Section C
//csacco@andrew.cmu.edu
//Project - 02 

var eyeSize = 20
var leftLeg = 20
var rightLeg = 20
var mouthSize = 40

var armX = 365
var armY = -90

var backColor = 100

function setup() {
    createCanvas(640, 480);
}
function draw () {
    background(100, 100, backColor);
	
	//body
	fill(255, 255, 255);
	noStroke();
	//ellipse(325,300,150,150);
	//rect(250, 200,150, 60, 60);
	rect(250, 150, 150, 275, 90, 90, leftLeg, rightLeg);
	
	//eyes
	fill(0);
	ellipse(300, 200, 15, eyeSize);
    ellipse(350, 200, eyeSize, 15);	
	
	//mouth
	fill(0);
	ellipse(325, 250, mouthSize, mouthSize);
	
	//leftarm
	fill(255);
    rotate(PI / 3.0);
    rect(armX, armY, 40, 60, 90, 0, 90, 0);
	rect(armX + 55, armY - 160, 40, 60, 0, 90, 0, 90);
}
function mousePressed() {
	leftLeg = random(30, 90);
	rightLeg = random(90, 30);
	eyeSize = random(10, 45);
	mouthSize = random(40,80);
	armX = random(365, 380);
	armY = random(-80, -100);
	backColor = random(0, 300);
}

After I decided I wanted my variable face to represent a ghost, I thought of all the aspects of the ghost that could change. This lead to me create randomized variations of changes to the body, face, and arms.

Fallon Creech-Project-02-Variable-Face

sketch

//Fallon Creech
//Section A
//fcreech@andrew.cmu.edu
//Project-02

var eyeSize = 20;
var faceWidth = 375;
var faceHeight = 275;
var cheekSize = 20;
var noseWidth = 30;
var noseHeight = 20;
var noseColor = 0;
var patchSize = 50;
var earSize = 100;

function setup() {
    createCanvas(640, 480);
    background(255, 200, 200);
}

function draw() {
    //ears
    noStroke();
    fill(0);
    var earLX = width / 2 - faceWidth * 0.40;
    var earRX = width / 2 + faceWidth * 0.40;
    ellipse(earLX, height / 2.5, earSize, earSize);
    ellipse(earRX, height / 2.5, earSize, earSize);

    //face
    fill(255);
    ellipse(width / 2, height / 1.75, faceWidth,  faceHeight);

    //black patches
    noStroke();
    fill(0);
    var eyeLX = width / 2 - faceWidth * 0.25;
    var eyeRX = width / 2 + faceWidth * 0.25;
    ellipse(eyeLX, height / 1.6, patchSize, patchSize);
    ellipse(eyeRX, height / 1.6, patchSize, patchSize);

    //eyes
    noStroke();
    fill(255);
    var eyeLX = width / 2 - faceWidth * 0.25;
    var eyeRX = width / 2 + faceWidth * 0.25;
    ellipse(eyeLX, height / 1.575, eyeSize, eyeSize);
    ellipse(eyeRX, height / 1.575, eyeSize, eyeSize);

    //nose
    fill(noseColor);
    ellipse(width / 2, height / 1.40, noseWidth, noseHeight);

    //cheeks
    fill(255, 200, 200);
    var cheekLX = width / 2 - faceWidth * 0.375;
    var cheekRX = width / 2 + faceWidth * 0.375;
    ellipse(cheekLX, height / 1.5, cheekSize, cheekSize);
    ellipse(cheekRX, height / 1.5, cheekSize, cheekSize);
}

function mousePressed() {
    eyeSize = random(10, 30);
    earSize = random(80, 120);
    cheekSize = random(5, 20);
    noseColor = random(0, 255);
}

For this project, I tried making a panda that changed its facial expression when the mouse is clicked; to simulate this, I defined variables for most of the facial features and decided to limit the variances to certain features; those features include the eyes, cheeks, nose, and ears. 

Rachel Shin – LO2

Karl Sims, a second generation generative artist, explores the concept of art production via algorithms and repeated patterns. One of Sims’ projects that stood out to me was “Liquid Selves.” Sims used software and animations to morph an animation that depicts a soul leaving our physical bodies. The movement that Sims incorporates sets a tone as well as displays the skilled algorithmic patterns that Sims utilizes. The description states that “particle systems were used to disassemble and reconstruct various images” while “artificial evolution and interpolation of 3D parametric shapes allowed the creation of unusual surface transformations.” (Sims, 1992). I admired this particular work of Sims because it is a fractal-like creation that invites audience members to further analyze each component of the animation. While it stirs a sense of discomfort with all the “abnormal” animations, the artwork also suggests a beauty and uniqueness of the work itself and establishes a soothing tone to better reflect the society we live in.

Jacky Tian’s Project 02

sketch

// Yinjie Tian
// yinjiet@andrew.cmu.edu
// Section D
// Project 02

var earSize = 20
var hairColor = 0
var glassSize = 45
var pocketPosition = 450
var rgb1 = 250
var rgb2 = 250
var rgb3 = 250
var mouthSize = 30

function setup() {
    createCanvas(600, 600);
    background(180);
 
}

function draw() {   
//Background
    stroke(0);
    fill(rgb1, rgb2, rgb3);
    rect(80, 50, 80, 550);
    fill(rgb2, rgb1, rgb3);
    rect(110, 80, 140, 520);
    fill(rgb3, rgb1, rgb2);
    rect(300, 100, 200, 500);
    fill(rgb1, rgb3, rgb2);
    rect(160, 170, 300, 430);
    fill(rgb2, rgb3, rgb1);
    rect(400, 200, 200, 400);

//Neck
    noStroke();
    fill(230,214,169);
    quad(240, 310, 235, 370, 320, 370, 315, 310);

//Ears
    stroke(240,224,179);
    fill(240,224,179);
 
    rect(195, 240, earSize, 40, 10);
    rect(340, 240, earSize, 40, 10);

//Face
    stroke(255,244,189);
    fill(255,244,189);
    strokeWeight(3);
    
    beginShape();
    vertex(210, 270); 
    vertex(210, 310);  
    vertex(250, 335);  
    vertex(310, 335); 
    vertex(340, 310); 
    vertex(340, 225);   
    vertex(215, 225); 
    endShape();

//Hair
    stroke(0);
    fill(hairColor);
    strokeWeight(4);

    beginShape();
    vertex(190, 220);
    vertex(205, 150);
    vertex(270, 125);
    vertex(338, 150);
    vertex(360, 218);
    vertex(342, 235);
    vertex(330, 235);
    vertex(290, 225);
    vertex(250, 235);
    vertex(217, 230);
    vertex(210, 230);
    endShape();

//Glasses
    stroke(225, 215, 0);
    strokeWeight(3);
    fill(255);
    rect(220, 240, glassSize, glassSize, 15);
    rect(288, 240, glassSize, glassSize, 15);
    line(265, 250, 288, 250);

//Nose
    stroke(0);
    strokeWeight(2);
    line(275, 280, 270, 300);
    line(270, 300, 275, 300);

//Mouth
    noStroke();
    fill(290,214,159);
    ellipse(290, 320, mouthSize, 10);

//Jacket
    stroke(0, 0, 0);
    fill(0, 0, 0);
    strokeWeight(4);
    beginShape();
    vertex(150, 365);
    vertex(90, 480);
    vertex(90, 600);
    vertex(430, 600);
    vertex(490, 480);
    vertex(410, 365);
    endShape();  

//Pocket
    stroke(255,165,0);
    rect(190, pocketPosition, 50, 60);

}

function mousePressed() {
    
    earSize = random(15, 30);
    hairColor = random(0, 220);
    glassSize = random(35, 55);
    pocketPosition = random(425, 475);
    rgb1 = random(0, 250);
    rgb2 = random(0, 250);
    rgb3 = random(0, 250);
    mouthSize = random(20, 50)
}

I used my portrait for project 1 as the base file. The three factors for variations I looked into were size, position and color. Based on the three factors, I created variables that can change the sizes of my nose, glasses, and mouth; alter the color of my hair and the background; reposition the pocket on my sweatshirt.

Claire Yoon-Looking Outwards-02

The eCloud Sculpture is an interactive installation project that is located at the San Jose International Airport and created in 2010. Whenever I travel I usually go to this airport and these endless line of tiles have always intrigued my eye while walking down the long hallway.

This sculpture is made up of hundreds of polycarbonate tiles hung from a tensile structure that respond to the real-time weather data from all over the world by changing from transparent to opaque. The tiles reflect the current weather as when it is raining the eCloud looks like it is dropping while when it is cloudy the display feels slow and lazy. This installation created by artist Aaron Koblin, designer Nik Hafermaas, and NASA visual strategist Dan Good is inspired by the behavior and volume of an idealized cloud and produced by UEBERSEE which is an artist production platform specializing in converging digital media with spatial experiences

Erin Lim (Revised) – Project 02 – Variable – Face

Erin Lim – Project 02

var eyeSize = 30;
var faceWidth = 260;
var faceHeight = 320;
var noseX = 275;
var noseY = 270;
var noseSize = 15;
var faceX = 300;
var faceY = 265;
var eyecolor = 255;
var pupilcolor = 0;
var lefteyeX = 250;
var eyeY = 200;
var righteyeX = 350;
var leftpupilX = 250;
var rightpupilX = 350;
var pupilY = 200;
var pupilWidth = 10;
var pupilHeight = 10;
var browHeight = 160;
var leftbrowX = 220;
var rightbrowX = 330;
var browY = 160;
var leftbrowWidth = 270;
var rightbrowWidth = 380;
var earHeight = 45;
var earY = 250;
var leftearX = 150;
var rightearX = 450;
var mouthX = 300;
var mouthY = 350;
var mouthSize = 45;
var r = 255;
var g = 241;
var b = 209;

function setup() {
    createCanvas(640, 480);
    // background(220);
    // noStroke(0);
}

function draw() {
  background(227, 103, 84);
  noStroke(0);

    fill(255, 241, 209); //face
    ellipse(faceX, faceY, faceWidth, faceHeight);

    fill(eyecolor, eyecolor, eyecolor); //left eye
    ellipse(lefteyeX, eyeY, eyeSize, eyeSize);

    fill(eyecolor, eyecolor, eyecolor); //right eye
    ellipse(righteyeX, eyeY, eyeSize, eyeSize);

    fill(pupilcolor, pupilcolor, pupilcolor); //right pupil
    ellipse(rightpupilX, pupilY, pupilWidth, pupilHeight);
    if (mouseX < width*0.33) {
        fill(255, 0, 0);
      } else if (mouseX > width*0.66) {
        fill(0, 255, 0);
      } else {
        fill(0, 0, 255);
      }

    fill(pupilcolor, pupilcolor, pupilcolor); //left pupil
    ellipse(leftpupilX, pupilY, pupilWidth, pupilHeight);
    if (mouseX < width*0.33) {
        fill(255, 0, 0);
      } else if (mouseX > width*0.66) {
        fill(0, 255, 0);
      } else {
        fill(0, 0, 255);
      }

    circle(mouthX, mouthY, mouthSize); // mouth


    stroke(0, 0, 0); // left eyebrow
    line(leftbrowX, browY, leftbrowWidth, browHeight);

    stroke(0, 0, 0); // right eyebrow
    line(rightbrowX, browY, rightbrowWidth, browHeight);

    fill(255, 241, 209); // left ear
    circle(leftearX, earY, earHeight);

    fill(255, 241, 209); // right ear
    circle(rightearX, earY, earHeight);

    fill(0);  // nose
    ellipse(275, 270, noseSize, noseSize);
    ellipse(275 + 20, noseY, noseSize, noseSize);
}

function mousePressed() {

  faceWidth = random(260, 300);
  faceHeight = random(320, 400);
  eyeSize = random(10, 50);
  noseX = random(275, 300);
  noseY = random(270, 300);
  leftbrowWidth = random(270, 300);
  rightbrowWidth = random(380, 400);
}

In my process of making this face, I learned a lot about using variables to code. I also experimented a lot with “else” and “if” to produce what I want to happen.

William Su-LookingOutwards-02

https://vimeo.com/320461873

Fluctus by LIA

LIA is an Australian artist whose primary working material is code.

The piece, “Fluctus” especially appeals to my aesthetic sense. I like the fluidity and vision behind it. The funny part about it for me is, is that it reminds me of the painful times where i’ve had to deal with computers crashing or some of my own coding projects not working as it should.

While it evokes some negative memories, it is absolutely cool to look at.

As far as how it works, it looks like the “artboard” is probably not redrawing at all like you would for a smooth, singular animation. Instead, the algorithm just leaves behind what it draws as it goes and keeps drawing on top. This creates a smooth, repeated pattern that gives it a 3d “noodle” look. There also seems to be some “mirroring” going on where the drawer starts splitting in certain areas. It certainly adds to the complex but simple nature of the artwork.

Another interesting thing as I was watching this is that the way the drawer moves makes it look like it was a “performance”. The movement looks like its choreographed in a way that makes it look purposefully artistic rather than the random generation of computer.

Sarah Choi – Looking Outwards – 01

Summer of 2017, Yayoi Kusama held an exhibition in the National Gallery of Singapore. She has been more widely known as a contemporary artist. She created an expansive vision of the human body through a collection of interactive art called, “Life is the Heart of a Rainbow”. Working in Shinjuku, Japan, she worked with canvas using patterns and the stroke of waves that created the basis of most of her art. This work of various art took her around eight years to complete. Inspired, by paintings mainly from the 1950’s, Kusama further developed her works of art through contemporary mediums such as using LED Light. One of her most well-known pieces is called the “Infinity Mirrored Room – Gleaming Lights of the Souls”.  Her infinity mirror rooms transform the continuous and repetitive approach of her also famous net and dot paintings. This room-scale installation with kaleidoscopic environments bring another interactive experience to her audience, as she uses LED lights, metal, wooden and acrylic panels, and mirrors to create this art. 

https://www.nationalgallery.sg/see-do/highlights/yayoi-kusama-life-is-the-heart-of-a-rainbow

Yayoi Kusama

Life is the Heart of a Rainbow, 2017

Margot Gersing – Project 02 – Variable Face

I enjoyed taking my self portrait and adapting it for this project. I did make some changes but I tried to keep the same style. It was also super helpful to learn how to use the curveVector(). It took me a while to figure it out but now that I know how to use it, I know it will come in really handy.

margot-project-02


// Margot Gersing - Project 02 - mgersing@andrew.cmu.edu - Section E
var eyeWidth = 30;
var eyeHeight = 30;
var faceWidth = 300;
var faceHeight = 300;
var noseHeight = 200;
var faceColor = 162;
var noseColor = 178;
var eyeColor = 66;
 
function setup() {
    createCanvas(480, 640);
}
 
function draw() {
    background(202, 211, 227);

    // face
    fill(246, faceColor, 136);
    noStroke();
    ellipse(240, 300, faceWidth,  faceHeight);

    // eyes
    // lids
    noFill();
    strokeWeight(4);
    strokeJoin(ROUND);
    stroke(243, 103, 71);
    beginShape();
    curveVertex(130, 270);
    curveVertex(130, 270);
    curveVertex(150, 250);
    curveVertex(180, 250);
    curveVertex(200, 270);
    curveVertex(200, 270);
    endShape();

    beginShape();
    curveVertex(280, 270);
    curveVertex(280, 270);
    curveVertex(300, 250);
    curveVertex(330, 250);
    curveVertex(350, 270);
    curveVertex(350, 270);
    endShape();

    // eyelash
    strokeWeight(4);
    line(130, 270, 123, 267);
    line(135, 260, 128, 256);
    line(350, 270, 357, 267);
    line(345, 260, 352, 256);

    // iris
    fill(29, eyeColor, 163);
    noStroke();
    ellipse(165, 265, eyeWidth, eyeHeight);
    ellipse(315, 265, eyeWidth, eyeHeight);

    // nose
    fill(255, noseColor, 55);
    triangle(240, noseHeight, 220, 330, 260, 330);

    // mouth
    noFill();
    strokeWeight(6);
    strokeJoin(ROUND);
    stroke(243, 103, 71);
    line(210, 390, 270, 390);
    beginShape();
    curveVertex(210, 390);
    curveVertex(210, 390);
    curveVertex(230, 375);
    curveVertex(250, 375);
    curveVertex(270, 390);
    curveVertex(270, 390);
    endShape();
}
 
function mousePressed() {
    faceWidth = random(270, 450);
    faceHeight = random(250, 450);
    eyeWidth = random(20, 40);
    eyeHeight = random(20, 40);
    noseHeight = random(200, 300);
    faceColor = random(120, 200);
    noseColor = random(160, 200);
    eyeColor = random(30, 110);
    
}

Erin Lim – Project 02 – Variable Face

In my process of making this face, I learned a lot about using variables to code. I also experimented a lot with “else” and “if” to produce what I want to happen.

Erin Lim – Project 02

var eyeSize = 30;
var faceWidth = 260;
var faceHeight = 320;
var noseX = 275;
var noseY = 270;
var noseSize = 15;
var faceX = 300;
var faceY = 265;
var eyecolor = 255;
var pupilcolor = 0;
var lefteyeX = 250;
var eyeY = 200;
var righteyeX = 350;
var leftpupilX = 250;
var rightpupilX = 350;
var pupilY = 200;
var pupilWidth = 10;
var pupilHeight = 10;
var browHeight = 160;
var leftbrowX = 220;
var rightbrowX = 330;
var browY = 160;
var leftbrowWidth = 270;
var rightbrowWidth = 380;
var earHeight = 45;
var earY = 250;
var leftearX = 150;
var rightearX = 450;
var mouthX = 300;
var mouthY = 350;
var mouthSize = 45;
var r = 255;
var g = 241;
var b = 209;

function setup() {
    createCanvas(640, 480);
    // background(220);
    // noStroke(0);
}

function draw() {
  background(227, 103, 84);
  noStroke(0);

    fill(255, 241, 209); //face Q: HOW DO I USE VARIABLES FOR THIS?
    ellipse(faceX, faceY, faceWidth, faceHeight);

    fill(eyecolor, eyecolor, eyecolor); //left eye
    ellipse(lefteyeX, eyeY, eyeSize, eyeSize);

    fill(eyecolor, eyecolor, eyecolor); //right eye
    ellipse(righteyeX, eyeY, eyeSize, eyeSize);

    fill(pupilcolor, pupilcolor, pupilcolor); //right pupil
    ellipse(rightpupilX, pupilY, pupilWidth, pupilHeight);
    if (mouseX < width*0.33) { // HOW DO I CHANGE FACE COLOR?
        fill(255, 0, 0);
      } else if (mouseX > width*0.66) {
        fill(0, 255, 0);
      } else {
        fill(0, 0, 255);
      }

    fill(pupilcolor, pupilcolor, pupilcolor); //left pupil
    ellipse(leftpupilX, pupilY, pupilWidth, pupilHeight);
    if (mouseX < width*0.33) { // HOW DO I CHANGE FACE COLOR?
        fill(255, 0, 0);
      } else if (mouseX > width*0.66) {
        fill(0, 255, 0);
      } else {
        fill(0, 0, 255);
      }

    circle(mouthX, mouthY, mouthSize); // mouth


    stroke(0, 0, 0); // left eyebrow
    line(220, 160, 270, 160);

    stroke(0, 0, 0); // right eyebrow
    line(330, 160, 380, 160);

    fill(255, 241, 209); // left ear
    circle(150, 250, 45);

    fill(255, 241, 209); // right ear
    circle(450, 250, 45);

    fill(0);  // nose
    ellipse(275, 270, 15, 15);
    ellipse(275 + 20, 270, 15, 15);
}

function mousePressed() {

  faceWidth = random(260, 300);
  faceHeight = random(320, 400);
  eyeSize = random(10, 50);
  noseX = random(275, 300);
  noseY = random(270, 300);
  leftbrowWidth = random(270, 300);
  rightbrowWidth = random(380, 400);
}