Julia Nishizaki – Project 02 – Variable Face

For this project, I decided to create different monsters/creatures, and focussed on conveying both their physical characteristics as well as their emotions or personalities. When approaching this project, I struggled with deciding on a concept, and kept it fairly simple, changing more of the facial aspects of the creatures, rather than adding arms or tails.

sketch

//Julia Nishizaki
//Section B
//jnishiza@andrew.cmu.edu
//Section B, Project 02 Variable Face

// starting variables
var eyeSize = 20;
var faceWidth = 150;
var faceHeight = 200;
var CornerT = 30;
var CornerB = 15;
var toothExistence1 = 0;
var toothExistence2 = 0;
var faceY = 340;
var bodyWidth = 250;
var mouthWidth = 100;
var mouthHeight = 50;
var eyebrowY = 320;
var r = 243;
var g = 179;
var b = 174;
var pupilDX = 6;
var pupilDY = 5;
var w = 5
 
function setup() {
    createCanvas(480, 640);
}
 
function draw() {
    background('white');
    noStroke();
    
    //background color
    fill(r, g, b, 55);
    rect(width / 2, height / 2, width, height);

    //body
    fill('white');
    rectMode(CORNERS);
    var faceX = width / 2;
    rect(faceX - bodyWidth / 2, faceY + faceHeight / 2, faceX + bodyWidth / 2, height, CornerT, CornerT, 0, 0);
    //stomach   
    fill(r, g, b, 100);
    rect(faceX - bodyWidth * 0.25, faceY + faceHeight * 0.75, faceX + bodyWidth * 0.25, height, 50, 50, 0, 0);
    
    //face
    fill('white');
    rectMode(CENTER);
    rect(faceX, faceY, faceWidth, faceHeight + 1, CornerT, CornerT, CornerB, CornerB);
    
    //mouth
    noStroke();
    fill(r, g, b);
    var mouthY = faceY + faceHeight * 0.25
    rect(faceX, mouthY, mouthWidth, mouthHeight, 50, 50, 50, 50);

    //tooth and teeth
    fill('white');
    triangle(faceX * toothExistence1, (mouthY - mouthHeight / 2 - 1) * toothExistence1, (faceX + mouthWidth * 0.5) * toothExistence1, (mouthY - mouthHeight / 2 - 1) * toothExistence1, (faceX + mouthWidth * 0.25) * toothExistence1, mouthY * toothExistence1);
    triangle(faceX * toothExistence2, (mouthY - mouthHeight / 2 - 1) * toothExistence2, (faceX - mouthWidth * 0.5) * toothExistence2, (mouthY - mouthHeight / 2 - 1) * toothExistence2, (faceX - mouthWidth * 0.25) * toothExistence2, mouthY * toothExistence2);

    //eyes
    var eyeLX = faceX - faceWidth * 0.25;
    var eyeRX = faceX + faceWidth * 0.25;
    stroke('black');
    noFill();
    strokeWeight(5);
    ellipse(eyeLX, faceY, eyeSize, eyeSize);
    ellipse(eyeRX, faceY, eyeSize, eyeSize);
    //eye pupils
    noStroke();
    fill('black');
    var pupilLX = eyeLX + eyeSize * 0.125;
    var pupilRX = eyeRX + eyeSize * 0.125;
    var pupilY = faceY + eyeSize * 0.125;
    ellipse(pupilLX - pupilDX, pupilY - pupilDY, eyeSize * 0.625, eyeSize * 0.625);
    ellipse(pupilRX - pupilDX, pupilY - pupilDY, eyeSize * 0.625, eyeSize * 0.625);
   
    //eyebrows
    stroke('black');
    strokeWeight(w);
    line(eyeLX - eyeSize / 2, faceY - eyeSize, eyeLX + eyeSize / 2, eyebrowY);
    line(eyeRX + eyeSize / 2, faceY - eyeSize, eyeRX - eyeSize / 2, eyebrowY);
}

function mousePressed() {
    //color of background and mouth
    r = random(255);
    g = random(255);
    b = random(255);

    //face and body proportions
    faceY = random(200, 350);
    faceWidth = random(100, 250);
    faceHeight = random(150, 300);
    bodyWidth = random(50, 300);
    //roundness of face and body
    CornerT = random(10, 50);
    CornerB = random(10, 50);

    //size of eyes, angle of eyebrows, and location of pupils
    eyeSize = random(15, 40);
    let existence1 = ['0', '1'];
    eyebrowY = random(faceY - eyeSize * 0.5, faceY - eyeSize * 1.5);
    pupilDX = random(eyeSize * 0.25);
    pupilDY = random(eyeSize * 0.25);

    //stroke weight for eyebrows
    w = random(1, 15);

    //proportions of mouth and how many teeth
    mouthWidth = random(15, 100);
    mouthHeight = random(15, 50);
    toothExistence1 = random(existence1);
    let existence2 = ['0', '1'];
    toothExistence2 = random(existence2);
}

Jacky Tian’s LookingOutwards-02

idea space – a cyclic universe by karsten schmidt

A screenshot of cyclic universe by Karsten Schmidt

This generative artwork is a timelapse animation where digital artist Karsten Schmist created a ongoing visualization project of space where steadily increasing number of moving particles are attractive by slow moving, invisible gravitational force centres. The imaginary cylindrical space act as a four dimensional canvas where the moving particles will leave permanent traces in time as well as in space. The paradoxical set up created ironical results that even with the increase of particles approaching to infinite, there is no increase in computational cost.

From the image, one can see the the particles have larger movements when they are far away from the gravitational centres. On the other hands, near gravitational centres, the density of particles is significantly higher than far away places. This symbolizes the shift of the university.

Fallon Creech-LookingOutwards-02

Italian woodworker Uli Kirchler shapes kinetic castles out of knobbly tree pieces, which are known as “very hidden castles.” Now based in Oregon, Kirchler uses local wood pieces that have an interesting shape, which ultimately dictates the form and placement of the castles within the wood. The castles, which in starting position resemble an ancient European streetscape, cave into the carved piece of wood after a gentle stroke of the hand. 

 

I admire this piece for its structurally ability to both form a hilly skyline and easily retake the shape of its original wooden formwork. It shares characteristics with general computing practice in how quickly and deceivingly easy a given task is accomplished. Assuming that Kirchler based the positioning of the telescopic castles on the soundest areas of the wood piece, the rhythm of the piece contains an organic quality, giving it a naturalized type of algorithm.

Sydney Salamy: Project-02-Variable-Face

I wanted my project to react and change as the mouse of the viewer moved, so I played around with if statements, which was an interesting challenge. I wanted my project to have a cute aspect to it. Originally, there was supposed to be a fruit with a face reacting, but then it turned into a baby who didn’t want others touching its candy.

sketchsydney

//Dont Touch The Lolipop!

var pi = 3.14159;
var mainX = 320;
var headY = 220;
var bodyY = 360;
var iEyeBrowY = 212;

function setup(){
    createCanvas(640,480);	
    
}

function draw() {
    background(163, 210, 267);//baby blue
    noStroke();
    //baby base
    fill(233, 185, 122);//darker tan
    ellipse(mainX,bodyY, 170,170);//baby body
    fill(237, 189, 126);//tan
    ellipse(mainX,headY, 150,150);//baby head
    //arcs
    fill(255);
    arc(mainX,bodyY, 172, 172, 0, pi, CHORD);//baby diaper
    fill(255, 163, 195);
    arc(mainX,headY, 152, 152, pi, 0, CHORD);//baby hat
    //limbs
    fill(229,181,118);//darker tan 2
    ellipse(440,307, 150,40);//right arm
    ellipse(200,307, 150,40);//left arm 
    ellipse(355,475, 45,145);//right leg
    ellipse(285,475, 45,145);//left leg
    //lolipop
    fill(245);
    rect(490,245, 6, 100);//stick
    frameRate(.7);
    fill(random(230),random(200),random(220));//candy color
    ellipse(493,220, 106,100);//candy part   
    //facial features
    frameRate(10);
    fill(0);
    ellipse(343,225, 8,8);//right eye
    ellipse(297,225, 8,8);//left eye
    strokeWeight(4);
    stroke(0);
    line(336,iEyeBrowY, 355,218);//right eyebrow
    line(285,218, 304,iEyeBrowY);//left eyebrow
    //movement
    if(mouseX > 365){
        iEyeBrowY = 218;//stern
        line(315,256, 325,256);//flat mouth
        fill(128, 17, 17);
        ellipse(343,225, 8,8);//right eye
        ellipse(297,225, 8,8);//left eye
    }
    if(mouseX > 440){
        iEyeBrowY = 223;//angry
        arc(mainX,256, 20, 20, pi, 0, CHORD);//sad mouth
        fill("red");
        ellipse(343,225, 8,8);//right eye
        ellipse(297,225, 8,8);//left eye
    }
    if(mouseX > 545){
        iEyeBrowY = 218;//stern
        line(315,256, 325,256);//flat mouth
        fill(128, 17, 17);
        ellipse(343,225, 8,8);//right eye
        ellipse(297,225, 8,8);//left eye
    }
    if(mouseX < 365){
        iEyeBrowY = 212;//happy
        arc(mainX,256, 20, 20, 0, pi, CHORD);//happy mouth
        fill(0);
        ellipse(343,225, 8,8);//right eye
        ellipse(297,225, 8,8);//left eye
    }
    if(mouseX > 621){
        iEyeBrowY = 212;//happy
        arc(mainX,256, 20, 20, 0, pi, CHORD);//happy mouth
        fill(0);
        ellipse(343,225, 8,8);//right eye
        ellipse(297,225, 8,8);//left eye
    }
}

Kimberlyn Cho- Project 02- Variable Face

I decided to draw a hotdog because of a sudden late night craving. After a few iterations of different hotdogs, I focused on varying the droopiness of the eyelids to portray a sleepy hotdog. 

variable

/* Kimberlyn Cho
Section C
ycho2@andrew.cmu.edu
Assignment-02 */

//background
var R = 179;
var G = 236;
var faceHeight = 700;
var droop = 180;
var mouthW = 60;
var mouthH = 10;

function setup() {
    createCanvas(640, 480);
}

function draw() {
    //background
    background(R, G, 255);

    //face
    strokeWeight(5);
    fill(255, 121, 92);
    ellipse(320, 480, 350, faceHeight);

    //hands
    fill(255, 204, 102);
    ellipse(320 - 175, 225 + faceHeight * 0.4, 150, 200);
    ellipse(320 + 175, 225 + faceHeight * 0.4, 150, 200);

    //eyes
    strokeWeight(0);
    fill("white");
    var eyeLX = width / 2 - 350 * 0.15;
    var eyeRX = width / 2 + 350 * 0.15;
    var eyeLY = 480 - faceHeight * 0.3;
    ellipse(eyeLX, eyeLY, 40, 60);
    ellipse(eyeRX, eyeLY, 40, 60);
    fill("black");
    ellipse(eyeLX, eyeLY, 25, 50);
    ellipse(eyeRX, eyeLY, 25, 50);

    //eyelids
    strokeWeight(3);
    fill("green");
    arc(eyeLX, eyeLY, 45, 70, droop, 0, OPEN);
    arc(eyeRX, eyeLY, 45, 70, droop, 0, OPEN);

    //mouth
    strokeWeight(0);
    fill("yellow");
    ellipse(320, 480 - faceHeight * 0.15, mouthW * 3, mouthH * 6);
    fill("red");
    ellipse(320, 480 - faceHeight * 0.15, mouthW * 2, mouthH * 4);
    fill("white");
    ellipse(320, 480 - faceHeight * 0.15, mouthW, mouthH);


}

function mousePressed() {
    //background
    R = random(150, 200);
    G = random(200, 250);
    faceHeight = random(600, 780);
    droop = random(HALF_PI + QUARTER_PI, PI + QUARTER_PI);
    mouthW = random(50, 70);
    mouthH = random(5, 15);

}

 

Jasmine Lee – Project 02 – Variable Face

bear

//Jasmine Lee
//Section C
//jasmine4@andrew.cmu.edu
//Project-02 (Variable Faces)

var wind = 10;
var windv = 10;
var r = 210;
var g = 134;
var b = 50;
var bodyx = 250;
var bodyy= 300;
var underbelly = 60;
var earx = 100;
var eary = 100;
var headx = 220;
var heady = 220;
var eyesize = 5;
var browtilt = 10;

function setup() {
    createCanvas(640, 480);
}

function draw() {
    background (189, 238, 255);

    //cloud-left
    noStroke();
    fill(255, 255, 255);
    ellipse(140 + wind, 230 + windv, 230, 60);
    ellipse(60 + wind, 210 + windv, 45, 40);
    ellipse(100 + wind, 210 + windv, 60, 80);
    ellipse(150 + wind, 210 + windv, 80, 95);
    ellipse(190 + wind, 210 + windv, 60, 65);
    ellipse(230 + wind, 210 + windv, 30, 20);
    ellipse(75 + wind, 247 + windv, 70, 30);
    ellipse(150 + wind, 253 + windv, 100, 32);
    ellipse(215 + wind, 245 + windv, 50, 23);

    //cloud-right
    noStroke();
    fill(255, 255, 255);
    ellipse(540 - wind, 230 - windv, 230, 60);
    ellipse(460 - wind, 210 - windv, 45, 40);
    ellipse(500 - wind, 210 - windv, 60, 80);
    ellipse(550 - wind, 210 - windv, 80, 95);
    ellipse(590 - wind, 210 - windv, 60, 65);
    ellipse(630 - wind, 210 - windv, 30, 20);
    ellipse(475 - wind, 247 - windv, 70, 30);
    ellipse(550 - wind, 253 - windv, 100, 32);
    ellipse(615 - wind, 245 - windv, 50, 23);

    //body
    noStroke();
    fill(r, g, b);
    ellipse(320, 470, bodyx, bodyy);

    //bodywhite
    noStroke();
    fill(255, 255, 255);
    ellipse(320, 470, bodyx - underbelly, bodyy - underbelly);

    //ears
    noStroke();
    fill(r, g, b);
    ellipse(220, 200, earx, eary);
    ellipse(420, 200, earx, eary);

    //earwhites
    noStroke();
    fill(255, 255, 255);
    ellipse(215, 215, earx / 2, eary / 2);
    ellipse(435, 215, earx / 2, eary / 2);

    //head
    noStroke();
    fill(r, g, b);
    ellipse(320, 270, headx, heady);

    //eyes
    noStroke();
    fill(0);
    ellipse(250, 280, 35 + eyesize, 35 - eyesize);
    ellipse(390, 280, 35 + eyesize, 35 - eyesize);
    
    //eyeshine
    noStroke();
    fill(255, 255, 255);
    ellipse(260, 270, 15, 15);
    ellipse(400, 270, 15, 15);
    ellipse(265, 280, 5, 5);
    ellipse(405, 280, 5, 5);

    //nose
    noStroke()
    fill(255, 209, 216);
    ellipse(320, 300, 30, 5);

    //mouth
    stroke(1);
    fill(0);
    line(310, 340, 330, 330);
    line(330, 340, 310, 330);

    //eyebrows
    stroke(1);
    fill(0);
    line(230, 245, 280, 245 + browtilt);
    line(410, 245, 360, 245 + browtilt);
}

function mousePressed() {
    wind = random(10, 100);
    windv = random(10, 100);
    r = random(210, 180);
    g = random(134, 150);
    b = random(33, 112);
    bodyx = random(250, 300);
    bodyy = random(330, 350);
    underbelly = random(80, 120);
    earx = random(120, 140);
    eary = random(100, 120);
    headx = random(235, 270);
    heady = random(220, 250);
    eyesize = random(1, 5);
    browtilt = random(-15, 15);
}

For this assignment, I had fun creating a teddy bear. I think they’re very cute as stuffed animals and wanted to recreate one whose expressions could change from angry to sad.

Yoshi Torralva-LookingOutwards-02

Title: Nervous System for New Balance Data-Driven Midsoles
Date of Creation: 2015

Peoples running forms are often none two alike. For this reason, there are hundreds of shoe brands and types designed for specific running styles. New Balance asked nervous System to develop a shoe that had personalized sole designs that were auto-generated from an algorithm by pressure point data. In terms of data collection, points of pressure and impact strikes would be taken into account. The overall design of the shoe generates into an organic design that represents natural structures. Nervous System approaches designs that look like cell structures, plant leaves, or spider webs to evenly distribute the impact of the runner. What I enjoy about this project is how Nervous System develops structures that are both visually pleasing and extremely effective to the specific user. It’s interesting to see how New Balance saw an opportunity to build custom shoes just like other sports have for gear. By partnering with a company like Nervous System, they were able to develop a shoe that’s inclusive of all running forms based on a generative algorithm.

Crystal Xue-LookingOutwards-02

Art That Makes Itself Symposium 2015 | Frieder Nake

Frieder Nake is a mathematician and computer artist. He is also the founding father of digital computer art. He raised a question of “Do calculating machines like drawing?” and he tried to solve it by experimenting with digital artwork. A computer is a tool equally as useful as a brush and paints which turn the open infinite process into a determined finite process.

http://dada.compart-bremen.de/item/artwork/1208

This is one of his famous artwork “Walk-Through Raster” done in 1972 was particularly interesting to me. He color-plotted squares in yellow, orange and blue with different grid dimensions. The variations of depth and density are shown through the layering of the grids. It is a full series of art compositions. To me, it is similar to how computer screen works. Zooming in to the resolution of the display, all we can see are color squares. A lot his work was also based on political points which takes the merely aesthetic compositions to the next level.

Crystal-Xue-Project-02

sketch-105.js

//Crystal Xue
//15104-section B
//luyaox@andrew.cmu.edu
//Project_02

var nosePointX = 380;
var nosePointY = 340;
var chinPointX = 372;
var chinPointY = 442;
var jawPointX = 240;
var jawPointY = 430;
var earPointX = 180;
var earPointY = 310;
var lighteningR1 = 255;
var lighteningG1 = 0;
var lighteningB1 = 0;
var lighteningR2 = 0;
var lighteningG2 = 0;
var lighteningB2 = 255;
var backgroundR = 113;
var backgroundG = 114;
var backgroundB = 208;
var count = 0;

function setup() {
    createCanvas(480, 640);
}

function draw() {
	background(backgroundR, backgroundG, backgroundB);

    //hair
    fill(255);
    noStroke();
    ellipse(230,320,220,250);
    quad(120, 320, 190, 500, 300, 500, 310, 300);
    triangle(200, 500, 160, 500, 190, 470);

    //face
    stroke(255);
    strokeWeight(3);
    fill(20);
    beginShape();

    //forehead
    curveVertex(220, 335);       
    curveVertex(220, 330);       
    curveVertex(220, 300);      
    curveVertex(220, 270);        
    curveVertex(220, 245);       
	curveVertex(250, 240);
	curveVertex(300, 235);

    //browbone
	curveVertex(335, 262);

	//nose
	curveVertex(347, 278);
	curveVertex(348, 305);
	curveVertex(nosePointX, nosePointY);
	curveVertex(nosePointX - 15, nosePointY + 21);

    //mouth
	curveVertex(365, 373);
	curveVertex(372, 381);
    curveVertex(368, 391);
    curveVertex(372, 400);

    //chin
    curveVertex(368, 422);
    curveVertex(chinPointX, chinPointY);   
    curveVertex(chinPointX - 7, chinPointY + 16);
    curveVertex(345, 462);
    curveVertex(305, 458);

    //jaw
    curveVertex(jawPointX, jawPointY);       
    curveVertex(220, 370);

    //ear
    curveVertex(205, 375);
    curveVertex(earPointX, earPointY + 45);   
    curveVertex(170, 325);
    curveVertex(earPointX, earPointY);     
    curveVertex(199, 315); 
    curveVertex(earPointX + 35, earPointY + 25);            
    endShape(CLOSE);

    //lightening bolt
    stroke(lighteningR2, lighteningG2, lighteningB2);
    strokeWeight(5)
    line(302, 235, 286, 384);
    line(289, 448, 318, 318);
    push();
    noStroke();
    fill(lighteningR1, lighteningG1, lighteningB1);
    triangle(304, 235, 288, 384, 343, 270);
    quad(323, 308, 291, 448, 352, 310, 346, 273);
    pop();
}

function mousePressed() {
    nosePointX = random(375, 385);
    nosePointY = random(335, 345);
    chinPointX = random(368, 376);
    chinPointY = random(433, 450);
    jawPointX = random(235, 245);
    jawPointY = random(425, 450);
    earPointX = random(175, 185);
    earPointy = random(300, 320);
    backgroundR = random(100, 200);
    backgroundG = random(100, 200);
    backgroundB = random(100, 200);

    count+=1;
    if (count%3==0){
        lighteningR1 = 255;
        lighteningG1 = 0;
        lighteningB1 = 0;  
        lighteningR2 = 0;
        lighteningG2 = 0;
        lighteningB2 = 255;
    }
    
    if (count%3==1){
    	lighteningR1 = 217;
    	lighteningG1 = 190;
    	lighteningB1 = 77;
        lighteningR2 = 104;
        lighteningG2 = 52;
        lighteningB2 = 30;    	
    }

    if (count%3==2){
    	lighteningR1 = 146;
    	lighteningG1 = 206;
    	lighteningB1 = 234;
        lighteningR2 = 214;
        lighteningG2 = 149;
        lighteningB2 = 183;     	
    }
}

I am inspired by David Bowie figure and pop art color palette. I also approached this project with a slightly different way. Experimenting with the side profile of David Bowie was a lot of fun.

Sarah Kang – Project 02 – Variable Face

ugly

//sarah kang
//section c
//sarahk1@andrew.cmu.edu
//project-02

var faceWidth = 180;
var earDim = 40;
var earhole = 20;
var eyebrows = 170;
var nostril = 7;
var hairlength = 30;
var hairR = 0;
var hairG = 0;
var hairB = 0;
var shirtR = 0;
var shirtG = 0;
var shirtB = 0;

function setup() {
	createCanvas(400, 400);
	background(255, 242, 246);
}

function draw() {
	noStroke();

	//body
	fill(shirtR, shirtB, shirtG);
	ellipse(200, 350, 100, 200);

	//ears
	fill('tan');
	ellipse(115, 200, earDim, earDim);
	ellipse(285, 200, earDim, earDim);
	fill(171, 133, 103);
	ellipse(115, 200, earhole, earhole);
	ellipse(285, 200, earhole, earhole);

	//face
	fill('tan');
	ellipse(200, 200, faceWidth, 180);

	//hair
	fill(hairR, hairG, hairB);
	rect(200, 100, 7, hairlength);

	//eyes 
	fill('white');
	ellipse(165, 200, 30, 15);
	ellipse(235, 200, 30, 15);
	fill('black');
	ellipse(165, 200, 15, 15);
	ellipse(235, 200, 15, 15);

	//nostrils
	ellipse(190, 220, nostril, nostril);
	ellipse(210, 220, nostril, nostril);

	//brows
	stroke(0);
	noFill();
	arc(165, eyebrows, 30, 10, PI, 0, OPEN);
	arc(235, eyebrows, 30, 10, PI, 0, OPEN);

	//mouth
	stroke(176, 60, 79);
	strokeWeight(2);
	arc(200, 240, 30, 30, 0, PI, CHORD);
}

function mousePressed(){
	faceWidth = random(180, 220);
	earDim = random(40, 100);
	earhole = random(40, 80);
	eyebrows = random(140, 180);
	hairlength = random(20, - 80);
	nostril = random(4, 14);
	hairR = random(0, 225);
	hairB = random(0, 225);
	hairG = random(0, 225);
	shirtR = random(0, 225);
	shirtB = random(0, 225);
	shirtG = random(0, 225);
}



I enjoyed playing around with different variables for my face. Adjusting the colors to only display certain shades that were still discernible was pretty difficult, so I decided to completely randomize the colors instead.