Eliza Pratt – Looking Outwards 02


LIA’s mechanical plotter drawings demonstrate how generative art can be used to create expressive works that still retain the signature of the artist. Using code written in Processing (a software program developed for the arts) and Micron pen fastened to a plotter, LIA creates beautiful works that vary in shape and composition. Not only do I admire LIA as a female creative programmer, but these “drawn” prints feel eloquently reminiscent of traditional printmaking practices. Much like in printmaking, the art of printing the work is equally as important as the image itself, and the copies that result from this process are inherently one-of-a-kind. Though created with code and executed by machine, the shapes and compositions of these works show evidence of human thought and creativity. While these drawings may lack the nuances of traditional art, LIA’s personality and expressiveness still clearly shines through.

Eliza Pratt – Project 02

sketch

/* 
Eliza Pratt
Section E
elpratt@andrew.cmu.edu
Project-02
*/


var eyeSize = 30;
var eyeWidth = 1;
var blu = 100;
var faceWidth = 250;
var faceHeight = 300;
var skin = 30;
var glasses = 20;
var cut = 120;
var brow = 0;

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

function draw() {
    noStroke();
    background(200, 222, 230);

    //hair
    fill(224, 72, 72);
    rect(width / 2 - faceWidth/2 - 20, height / 2 - 45, faceWidth + 40, cut, 0, 0, 10, 10);
    fill('rgba(0,0,0, 0.25)');
    rect(width / 2 - faceWidth/2, height / 2 - 45, faceWidth, cut);
    

    ////////HEAD/////////
    fill(242-skin, 194-skin, 131-skin);

    //ears
    ellipse(width/2 - faceWidth/2, height/2 + 10,  55, 65);
    ellipse(width/2 + faceWidth/2, height/2 + 10,  55, 65);
    fill('rgba(0,0,0, 0.25)');
    ellipse(width/2 - faceWidth/2, height/2 + 12,  35, 45);
    ellipse(width/2 + faceWidth/2, height/2 + 12,  35, 45);

    //neck
    fill(242-skin, 194-skin, 131-skin);
    rect(width/2 - 25, height/2 + faceHeight/3, faceWidth/5, faceHeight + 50);
    beginShape();
    curveVertex(width/2 - faceWidth/3, 600);
    curveVertex(width/2 - faceWidth/3, 480);
    curveVertex(width/2, height*0.8);
    curveVertex(width/2 + faceWidth/3, 480);
    curveVertex(width/2 + faceWidth/3, 600);
    endShape();

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


    ////////NOSE////////
    noFill();
    stroke('rgba(0,0,0, 0.25)');
    var noseLine = height/2 + 40;
    
    beginShape();
    curveVertex(width/2 - 20, noseLine);
    curveVertex(width/2 - 20, noseLine);
    curveVertex(width/2, noseLine + 10);
    curveVertex(width/2 + 20, noseLine);
    curveVertex(width/2 + 20, noseLine);
    endShape();


    ////////////EYES//////////
    var eyeLX = width / 2 - faceWidth * 0.25;
    var eyeRX = width / 2 + faceWidth * 0.25;

    //eyes
    fill(255);
    ellipse(eyeLX, height / 2, eyeSize*eyeWidth, eyeSize);
    ellipse(eyeRX, height / 2, eyeSize*eyeWidth, eyeSize);

    
    //irises
    fill(26, blu, 138);
    stroke(0);
    strokeWeight(3);
    ellipse(eyeLX, height / 2, eyeSize/2, eyeSize/2);
    ellipse(eyeRX, height / 2, eyeSize/2, eyeSize/2);
    //pupilS
    fill(0);
    ellipse(eyeLX, height / 2, eyeSize/5, eyeSize/5);
    ellipse(eyeRX, height / 2, eyeSize/5, eyeSize/5);
    //reflection
    fill(255);
    noStroke();
    ellipse(eyeLX + 3, 1 + height / 2, eyeSize/5, eyeSize/5);
    ellipse(eyeRX + 3, 1 + height / 2, eyeSize/5, eyeSize/5);
    //eyelids
    fill(242-skin, 194-skin*1.5, 131-skin);
    stroke(0);
    strokeWeight(3);
    arc(eyeLX, height / 2, eyeSize*eyeWidth, eyeSize, PI, 0, CHORD);
    arc(eyeRX, height / 2, eyeSize*eyeWidth, eyeSize, PI, 0, CHORD);


    ////////EYEBROWS////////
    noFill();
    stroke(224, 72, 72);
    strokeWeight(brow + 3);

    if (brow < 1) {
        arc(eyeLX, height/2 - 30, eyeSize + 30, 15, PI, 0);
        arc(eyeRX, height/2 - 30, eyeSize + 30, 15, PI, 0);
    }
    else if (brow < 2) {
        arc(eyeLX, height/2 - 30, eyeSize + 30, 15, 0, PI);
        arc(eyeRX, height/2 - 30, eyeSize + 30, 15, PI, 0);
    }
    else if (brow < 3) {
        arc(eyeLX, height/2 - 30, eyeSize + 30, 15, PI, 0);
        arc(eyeRX, height/2 - 30, eyeSize + 30, 15, 0, PI);
    }
    else {
        arc(eyeLX, height/2 - 30, eyeSize + 30, 15, 0, PI);
        arc(eyeRX, height/2 - 30, eyeSize + 30, 15, 0, PI);
    }


    ///////GLASSES////////
    noFill();
    stroke(0);
    strokeWeight(3);

    rect(width/2 - 120 , height/2 - 25, 100, 60, glasses);
    rect(width/2 + 20, height/2 - 25, 100, 60, glasses);
    line(width/2 - 20, height/2 - 10, width/2 + 20, height/2 - 10);


    /////////MOUTH/////////
    noStroke();
    var lipLine = height/2 + faceHeight/4;
    //upper lip
    fill(92,13,58);
    arc(width/2 - 10, lipLine, 30, 25, PI, 0);
    arc(width/2 + 10, lipLine, 30, 25, PI, 0);
    //bottom lip
    fill(155, 0, 55);
    arc(width/2, lipLine, 50, 40, 0, PI);

    
    ///////BANGS///////////
    noStroke();
    fill(224, 72, 72);
    var hair = height/3;
    arc(width / 2, height / 2 - 45, faceWidth + 40,  faceHeight, PI, 0);


    /////SHIRT///////
    fill(40, 16, blu);
    rect(width/2 - faceWidth/3, height*0.85, 2*faceWidth/3, 100, 20);
    fill(242-skin, 194-skin, 131-skin);
    arc(width/2, height*0.85, 80, 30, 0, PI);


        
}

function mousePressed() {
    eyeSize = random(30, 40);
    eyeWidth = random(1,2);
    blu = random(0,255);
    skin = random(1, 100);
    glasses = random(1, 50);
    cut = random(90, 260);
    brow = random(4);

}

With this project, I had a lot of fun messing with the sizes, colors, and shapes of different features. In fact, I had to restrain myself from making every object changeable for the sake of time. I also spent a solid chunk of my afternoon trying to get the eyes to move with the mouse before giving up out of frustration. Maybe next time?

Eliza Pratt – Looking Outwards 01

 

Limbo is a puzzle-based video game developed by a small, Denmark-based studio known as Playdead. Beginning in a dark forest without any introduction or tutorial, the game details the terrifying challenges of a young boy as he travels through “the edge of hell.” Though I rarely show interest in video games and get motion sickness from 3D animations, I fell in love with the minimalist nature of this game and its stunning 2-dimensional visuals. With eerie, film-noir style graphics and intuitive controls, Limbo has influenced both my own artistic style as well as my admiration for interactive media design.

A shot from one of the most nail-biting puzzles depicts the player attempting to survive a spider attack. The highly stylized design and lack of visible controls keeps the player fully immersed in the game.

Starting as a one-man project by concept artist Arnt Jensen in 2004, the game development expanded to a team of 16 by the time of its release in 2010. Much of the artistic direction and concepts for Limbo derived from Jensen’s admiration for the film noir genre and his desire for minimalistic controls. The absence of text, arrows, and buttons keep you fully immersed in the game and encourage the user to decipher the platform on their own. While the original designs were created using Visual Basic, the team moved to Visual Studio during the development process. After overwhelming success following the game’s release, Playdead expanded to a company of 35 programmers and designers and has released its second game, Inside, which has received even greater praise.

Sources:
Playdead
Wikipedia

Eliza Pratt Project 01

sketch

/* 
Eliza Pratt
Section E
elpratt@andrew.cmu.edu
Project-01
*/

function setup() {
    createCanvas(400, 450);
    background(202, 219, 180);
}

function draw() {

    noStroke();
    //hair
    fill(77,47,23);
    ellipse(200, 200, 281, 310);
	
    //face
    fill(222,172,115);
    ellipse(200, 245, 253, 253);
    //EARS
    arc(80, 240, 60, 70, HALF_PI, PI + HALF_PI);
    arc(320, 240, 60, 70, PI + HALF_PI, HALF_PI);

    fill(161,114,50);
    arc(78, 240, 35, 45, HALF_PI, PI + HALF_PI);
    arc(322, 240, 35, 45, PI + HALF_PI, HALF_PI);

    ellipse(120, 275, 8, 8);


    //eyebrows
    fill(77,47,23);
    rect(100,190,66,5);
    rect(234,190,66,5);

    //eyes
    fill(255,255,255);
    ellipse(130, 225, 67, 30);
    ellipse(270, 225, 67, 30);

    fill(63,69,31);
    ellipse(138, 223, 25, 25);
    ellipse(278, 223, 25, 25);

    fill(0,0,0);
    ellipse(138, 223, 15, 15);
    ellipse(278, 223, 15, 15);

    fill(255,255,255);
    ellipse(144, 220, 5, 5);
    ellipse(284, 220, 5, 5);

    //glasses
    noFill();
    stroke(0,0,0);
    strokeWeight(3);
    rect(75, 200, 100, 60, 25);
    rect(225, 200, 100, 60, 25);
    line(175, 230, 225, 230);

    arc(130, 225, 67, 30, PI, 0);
    arc(270, 225, 67, 30, PI, 0);

    noStroke();

    //nose
    fill(161,114,50);
    ellipse(200, 278, 35, 35);

    fill(222,172,115);
    ellipse(200, 270, 35, 35);

    //lips
    fill(153,24,97);
    arc(200, 318, 50, 40, 0, PI);

    fill(92,13,58);
    arc(188, 318, 26, 20, PI, 0);
    arc(212, 318, 26, 20, PI, 0);

    //more hair
    fill(77,47,23);
    arc(319, 100, 284, 208, HALF_PI, PI, CHORD);
    arc(334, 80, 284, 208, HALF_PI, PI, CHORD);




    


}

This was fun, and took me less time to figure out than I thought it would! I found it difficult to arrange everything just by guessing random positions, so I did a quick sketch on Illustrator and then pulled the coordinates from there.