Looking Outwards 03

Line Number – Jennifer Jacobs MIT 2015

Used Algorithms to generate patterns using simple forms, and this was one example that was translated onto wooden panels

I think what I admired the most about this project was how intricate and expressive it was. I normally wouldn’t relate these types of projects to computer generated art, and to see that this was created with an algorithm really inspired me to gain more perspective on what is achievable through this median.

The art was created from a series of simple shapes, and if you look closely it is noticeable. The algorithm isn’t given, but it is very possible to create similar forms of art using specific shapes, and I think that’s very interesting.

I also think that even though it was algorithmically generated art, it still does present the artists own vision and style. Although it is generated, there is still an element of control in the constraints of generation, which I think shows the artists personality.

Andrew-Project02-VariableFaces

sketch

// Simple beginning template for variable face.
var eyeSize = 20;
var eyeInside = 10;
var faceWidth = 100;
var faceHeight = 150;
var earWidth = 5;
var earHeight = 20;
var noseBridge = 15;
var hairType = 3;
var colorR = 180;
var colorG = 180;
var colorB = 180;
var colorR2 = 200;
var colorG2 = 200;
var colorB2 = 200;
var mouthWidth = 20;
var mouthHeight = 5;
var mouthPosition = 4;
var eyeBrow = 1;

function setup() {
    createCanvas(300, 300);
}
function draw() {
    background(colorR, colorG, colorB);
      
    noStroke();
    fill(255);
    switch(hairType) {
        case 1:
            fill(colorR2, colorG2, colorB2);
            ellipse(width/2, height/2+faceHeight/6, faceWidth+30, faceHeight+80);
            break;
        case 2:
            fill(color(colorR2, colorG2, colorB2));
            rectMode(CENTER);
            rect(150, 150-faceHeight/2.5, faceWidth-20, faceHeight/6,80);
            rect(150, 150-faceHeight/2.5, faceWidth-50, faceHeight/2,90);
            break;
        default:
            strokeWeight(10);
            stroke(color(colorR2, colorG2, colorB2));
            arc(150, 150, faceWidth, faceHeight, PI, 0);
    }
    fill(255);
    strokeWeight(1);
    noStroke();
    //face
    ellipse(width / 2, height / 2, faceWidth,  faceHeight);

    var eyeLX = width / 2 - faceWidth * 0.25;
    var eyeRX = width / 2 + faceWidth * 0.25;
    var earLX = width / 2 - faceWidth / 2;
    var earRX = width / 2 + faceWidth / 2;
    var mouthY = height / 2 + faceWidth / mouthPosition;
    noStroke();
    //ear
    ellipse(earLX, height / 2, earWidth, earHeight);
    ellipse(earRX, height / 2, earWidth, earHeight);
    fill(colorR, colorG, colorB);
    //eye
    ellipse(eyeLX, height / 2, eyeSize, eyeSize);
    ellipse(eyeRX, height / 2, eyeSize, eyeSize);
    fill(255);
    ellipse(eyeLX, height / 2, eyeInside, eyeInside);
    ellipse(eyeRX, height / 2, eyeInside, eyeInside);
    fill(colorR, colorG, colorB);
    //nose
    stroke(color(colorR, colorG, colorB));
    line(150,160,150,150+noseBridge);
    //mouth
    ellipse(width / 2, mouthY, mouthWidth, mouthHeight);
    //neck
    rectMode(CENTER);
    fill(255);
    noStroke();
    rect(150, 150+faceHeight/2,25,30);
    //eyebrows
    switch(eyeBrow) {
        case 1:
            noFill();
            stroke(color(colorR, colorG, colorB));
            arc(eyeLX, eyeRX-40, 30, 30, PI, 0);
            arc(eyeRX, eyeRX-40, 30, 30, PI, 0);
            break;
        case 2:
            noFill();
            stroke(color(colorR, colorG, colorB));
            strokeWeight(4);
            line(eyeLX-10, eyeRX-50, eyeLX+10,eyeRX-50);
            line(eyeRX-10, eyeRX-50, eyeRX+10,eyeRX-50);
            break;
        default:
            noFill();
            stroke(color(colorR, colorG, colorB));
            arc(eyeLX-10, eyeRX-faceHeight/2, 40, 20, 0, HALF_PI);
            arc(eyeRX+10, eyeRX-faceHeight/2, 40, 20, HALF_PI, PI);
    }
    if (hairType == 1) {
        noStroke();
        fill(colorR2, colorG2, colorB2);
        arc(150, 150-faceHeight/4, faceWidth/1.1, faceHeight/1.9, PI, 0);
    }
}
 
function mousePressed() {
    // when the user clicks, these variables are reassigned
    // to random values within specified ranges. For example,
    // 'faceWidth' gets a random value between 75 and 150.
    colorRandomizer();
    colorRandomizer2();
    faceWidth = random(75, 150);
    faceHeight = random(100, 200);
    eyeSize = random(10, 30);
    earWidth = random(5, 15);
    earHeight = random(15, 30);
    hairType = floor(random(1, 4));
    mouthPosition = random(2, 5);
    mouthWidth = random(10, 30);
    mouthHeight = random(1, 5);
    noseBridge = random(5,20);
    eyeInside = random(5,10);
    eyeBrow = floor(random(1,4));
}
function colorRandomizer() {
    colorR = random(0, 250);
    colorG = random(0, 250);
    colorB = random(0, 250);
}
function colorRandomizer2() {
    colorR2 = random(0, 250);
    colorG2 = random(0, 250);
    colorB2 = random(0, 250);
}

I tried changing the eyebrows and hairstyles in this project as I think eyebrows are the easiest way to express different emotions, and hairstyles can make the individual look drastically different. Other than that I changed the variable and position of the mouth, nose, eyes, and ears to represent differences.

Project-01-Face

sketch
I tried to use multiple objects to represent the face to show its actual asymmetry. I used the shapes to create the outline and then simply just added differing colors afterwards.

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

function draw() {
    background(155,22,10);
    //settings
    ellipseMode(CENTER);
    rectMode(CENTER);
    strokeWeight(0);
    //hair
    fill(1, 2, 5);
    rect(300, 200, 450, 300, 80);
    rect(300, 50, 200, 100, 75);
    //neck
    fill(237, 209, 185);
    strokeWeight(1);
    ellipse(300, 300, 480, 520);
    strokeWeight(0);
    rect(300,575,150,100);
    //ears
    ellipse(75, 300, 120, 175);
    ellipse(525, 300, 90, 134);   
    //mouth
    fill(219, 151, 180);
    rect(300, 450, 150, 50, 35,40,32,45);
    //eyes
    fill(123, 150, 186);
    ellipse(200, 230, 125, 160);
    fill(250, 248, 242);
    ellipse(400, 230, 175, 133);
    fill(150, 108, 29);
    ellipse(200, 230, 90, 60);
    fill(105, 145, 107);
    ellipse(400, 230, 70, 90);
    fill(0, 0, 0);
    triangle(200, 240, 220, 215, 180, 215);
    fill(232, 225, 144);
    triangle(400, 215, 420, 240, 380, 240);
    fill(232, 189, 144);
    //nose
    quad(300, 280, 240, 360, 300, 400, 350, 350);
    noFill();
    strokeWeight(1);
    line(300, 300, 300, 375);
    //eyebrows
    arc(150, 100, 200, 100, 0, HALF_PI);
    arc(450, 100, 200, 100, HALF_PI, PI);
}

Congrenw – Looking Outwards 01

Out of Line – Crowdsourced interactive music video by Moniker and Studio Puckey

This project was a result of the efforts of around 10 people through the Moniker and Studio Puckey. The project took around a year to accomplish, and it appears that they organized it through usage of specialized groups and organizations for UI, UX and development. From what I can tell, the project was created using custom software/scripts as it’s specified that the creators wrote their own library to achieve their goal. From the description, the project creators were inspired anonymous internet comment threads as well as the complexities that arise when interacting with online audiences. I believe the project’s point was to highlight the new flexible contractor relationships where workers are seen as commodities.

I thought it was very inspirational how this project brought so many people on the internet together to accomplish tasks. I took a class on crowdsourcing as well last semester so it was also very interesting seeing its use in actual application!