Alice Cai LookingOutwards 02

Holger Lippman is a generative artist with a traditional visual art background. He was inspired by the motive to make art the same way that music was made. However, he wanted to stick with his painting roots but compares his creations to compositions and harmonies. ow, he paints with generative code.

Corrosive Landscape II is a project by Holger Lippmann. It is a continuation of his project Corrosive Landscape. The generative work is based on landscape photography in Berlin. He used code to read color maps and image structures and the algorithm generated endless ellipses that overlap with each other to create horizontal patterns. The ellipses vary in opacity, thus creating a fading gradient around every central ellipse. The gradient also allows for color blending even though each shape is essentially its own color (no mixing gradients). I really like this work because from afar it doesn’t look like coded art and takes on an impressionist or abstract style. but up close you can see the ellipses and the more digital aspect of it. The colors in each piece are gorgeous and create a beautiful color palette. Although pieces are all very abstract, the ellipses and horizontal lines create the essence of a landscape. 

Published on July 11, 2012 10:22 am.

Corrosive Landscape II is a project by Holger Lippmann. It is a continuation of his project Corrosive Landscape. The generative work is based on landscape photography in Berlin. He used code to read color maps and image structures and the algorithm generated endless ellipses that overlap with each other to create horizontal patterns. The ellipses vary in opacity, thus creating a fading gradient around every central ellipse. The gradient also allows for color blending even though each shape is essentially its own color (no mixing gradients). I really like this work because from afar it doesn’t look like coded art and takes on an impressionist or abstract style. but up close you can see the ellipses and the more digital aspect of it. The colors in each piece are gorgeous and create a beautiful color palette. Although pieces are all very abstract, the ellipses and horizontal lines create the essence of a landscape. 

Monica Chang – Looking Outwards – 02

Maxim Zhestov is a media artist who concentrates on film, installation and computational design to stretch the boundaries of visual language. He is famous for his digitally-rendered gallery designs which produce choreographed and calculated movements of elements and shapes using physics and computers.

Computations is an experimental art film which explores our computers from the ‘black boxes’ of our laptops and the devices created in our world. This piece of artwork concentrates on line, form, color and motion. Zhestov envisions a movement of small, computed organisms encompassing the environment while shapeshifting in perfect synchronization causing a beautiful dance across the digital gallery.

What really captured me was how realistic it looked at first; it was unbelievable. My knowledge of how this type of work is created is very limited as I am just introducing myself to the process of how art films like this could possibly come into creation. There is so much research and study that goes into projects like this which is very admirable.

Computations

https://zhestkov.studio/Computations-Art-film-2019

Paul Greenway – Project – 02

sketch

// Simple beginning template for variable face.
var eyeSize = 20;
var eyeLocation = -70;
var noseSize = 40;
var mouth = 60;
var shirtColor = 10;
var hairColor = 10;
 
function setup() {
    createCanvas(480, 640);
}
 
function draw() {
   
    background(255);
  
     //hair
     fill(hairColor);
     arc(240, 300, 350, 350, PI, TWO_PI);
  
     //hair
     fill(hairColor);
     arc(230, 240, 340, 290, PI, 180 + HALF_PI, OPEN);
  
  
  translate(250, 300);
  fill(200); 
  
  //body
  noStroke();
  fill(shirtColor,100,30);
  rect(-100,150,200,300);
  arc(0, 150, 200, 100, PI, TWO_PI,PIE);


  
  //face
  beginShape();
  fill(200);
  curveVertex(-113,-120);
  curveVertex(-3,-150);
  curveVertex(83,-98);
  curveVertex(80,-6);
  curveVertex(95,101);
  curveVertex(3,130);
  curveVertex(-106,88);
  curveVertex(-110,-6);
  curveVertex(-113,-120);
  curveVertex(-3,-150);
  curveVertex(83,-98); 

endShape();
  
  //eyes
  fill(255);
  circle(50,eyeLocation,eyeSize);
  circle(eyeLocation,eyeLocation,eyeSize);
  
  
  //nose
  fill(180);
  ellipse(0,0,30,noseSize);
  
  //mouth
  fill(80);
  arc(-5, 60, 120, mouth, 0, PI, PIE);
  
  
}
 
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.

    eyeSize = random(10, 30);
    eyeLocation = random(-70, -40);
    noseSize = random(30, 70);
    mouth = random(30, 120);
    shirtColor = random(10,255);
    hairColor = random(10,100);
}

Variable Face

For this project I wanted to create a simple, cartoonish face that could look different as the dimensions of the facial features shift. The elements of the face that I used variables on are the mouth, nose, eyes, as well as shirt and hair colors.

Caroline Song – Project 02 – Variable Face

sketch

/*  Caroline Song
    Section E
    chsong@andrew.cmu.edu
    Assignment-02 */


var eyeSize = 25
var faceWidth = 50
var faceHeight = 50
var pupilSize = 20
var noseSize = 50
var mouth = 30
var bodyHeight = 250
var bodyWidth = 250

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

function draw(){
    background(134, 227, 219);

    //face shape
    noStroke(0); 
    fill(254, 217, 255);
    ellipse(width/2, height/2, faceWidth*4, faceHeight*5);

    //eyes
    fill(250);
    var eyeLX = width/2 - faceWidth*0.75;
    var eyeRX = width/2 + faceWidth*0.75;
    ellipse(eyeLX, height/2, eyeSize*3, eyeSize*3);
    ellipse(eyeRX, height/2, eyeSize*3, eyeSize*3);

    //pupils
    fill(0);
    var pupilLX = width/2 - faceWidth*0.75;
    var pupilRX = width/2 + faceWidth*0.75;
    ellipse(pupilLX, height/2, pupilSize, pupilSize);
    ellipse(pupilRX, height/2, pupilSize, pupilSize);

    //nose
    fill(214, 0, 0);
    ellipse(width/2, height/2 + faceHeight*0.65, noseSize, noseSize);

    //mouth
    fill(245, 135, 170);
    arc(width/2, height/2 + faceHeight*1.5, mouth*2, mouth, 0, PI);

    //body
    fill(255, 243, 168);
    var faceH = faceHeight*5
    ellipse(width/2, height/2 + faceH/2 + bodyHeight/2, bodyWidth, bodyHeight);
}

    function mousePressed() {
    eyeSize = random(25, 50);
    faceWidth = random(50, 75);
    faceHeight = random(50, 75);
    mouth = random(60, 85);
    bodyHeight = random(250, 400);
    bodyWidth = random(250, 400);
}

This project was interesting in terms of using variables and math to find the coordinates to my shapes, as opposed to using Illustrator and/or Photoshop to do it for me. At first, I found this project to be challenging, but as I kept adding more objects to the face, I started to understand and familiarize myself with the process of creating this variable face.

Monica Chang – Project-02

sketch


//Monica Chang
//Section D
//mjchang@andrew.cmu.edu
//Project-02
var eyeSize = 40;
var faceWidth = 200;
var faceHeight = 250;
var wow = 50;
var pupil = 30;
var hairY = 100;
var body = 40
var colorChange = 0;


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

function draw() {
    noStroke(0)
    background("tan");
  
  //body
    fill(141- colorChange,180- colorChange,180- colorChange);
   	quad(body,height,width/4.5,height*.72,width-170,height*.72,width-body,height);
  
  //face
    fill(251,197,177);
    ellipse(width / 2, height / 2, faceWidth,  faceHeight);
  
   //eyes
    var eyeLX = width / 2 - faceWidth * 0.25;
    var eyeRX = width / 2 + faceWidth * 0.25;
    fill("peach");
    ellipse(eyeLX, height / 2.15, eyeSize, eyeSize);
    ellipse(eyeRX, height / 2.15, eyeSize, eyeSize);
  
  //mouth  
    fill("red");
    arc(width / 2, height / 2, wow, wow, TWO_PI, PI); 
  
  //pupil
    fill("blue");
    ellipse(eyeLX, height / 2.15, pupil, pupil);
    ellipse(eyeRX, height / 2.15, pupil, pupil);
  

      
  //hair
    fill("black");
    strokeWeight(3);
    stroke (254);
    line( width / 2, height/ 3.5 , width / 2 , hairY );
    line( (width / 2)/1.1, height/ 3.5 , (width / 2)/1.1 , hairY + 10 );
    line( (width / 2)*1.1, height/ 3.5 , (width / 2)*1.1 , hairY + 10 ); 
  

}

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.
    faceWidth = random(200, 350);
    faceHeight = random(200, 250);
    eyeSize = random(40, 60);
    wow = random(10,50);
    pupil = random(10,30);
    hairY = random(100,180);
    colorChange = random (0,180);
}

This was a very entertaining project to do, I noticed that variables do make it easier to organize the values in such a way that I would not get confused. A whole field of numbers would, indeed, give me a headache so it was interesting to play around with variables and get used to how they can simplify code.

Chelsea Fan-Project-02

VariableFaces

/* Chelsea Fan
Section 1B
chelseaf@andrew.cmu.edu
Project-02
*/

var eyeSize = 20;
var faceWidth = 100;
var faceHeight = 150;
var earWidth = 20;
var earHeight = 100;
var bodyWidth = 100;

 
function setup() {
    createCanvas(640, 480);
    noStroke(0);
}
 
function draw() {
    background(205, 92, 92);
    // Head
    fill(250, 250, 250);
    ellipse(width / 2, height / 2, faceWidth,  faceHeight);
    //body
    fill(250, 250 , 250);
    var bodyHeight = 200;
    ellipse(width/2, height/2+150, bodyWidth, bodyHeight);
    //Ear
    ellipse(width/2 + 25, height/2-100, earWidth, earHeight);
    ellipse(width/2 - 25, height/2-100, earWidth, earHeight);
    // Eyes
    fill(173, 216, 230);
    var eyeLX = width / 2 - faceWidth * 0.25;
    var eyeRX = width / 2 + faceWidth * 0.25;
    ellipse(eyeLX, height / 2, eyeSize, eyeSize);
    ellipse(eyeRX, height / 2, eyeSize, eyeSize);
    //nose
    fill(255, 182, 193);
    triangle(310, 250, 330, 250, 320, 260);
}
 
function mousePressed() {
    // when mouse is pressed, variability occurs in eyesize, earsize, and headsize
    faceWidth = random(75, 150);
    faceHeight = random(100, 200);
    eyeSize = random(10, 30);
    earHeight = random(100, 200);
    bodyWidth = random(100, 300);

    if (faceWidth>=120||faceHeight>=170) {
    	eyeSize = random(20, 30);
    }  else {
    	eyeSize = random(10, 20);
    }
    if (faceWidth>=120||faceHeight>=170) {
    	earHeight = random(150, 250);
    }  else {
    	earHeight = random(100, 175);
    }

}

I spent quite a bit of time deciding what character to draw and I finally decided on a bunny. I enjoyed playing around with the random sizes for the bunny’s ears, eyes, and head shape.

Emma Nicklas-Morris Project-02 (Variable Face)

Emma’s Variable Faces

/* 
Emma Nicklas-Morris
Section B
enicklas@andrew.cmu.edu
Variable Faces
*/

var faceShapeX = 280;
var faceShapeY = 330;
var hairLen = 300;
var mouthW = 120;
var mouthH = 80;
var noseX1 = 215;
var noseY1 = 255;
var noseX2 = 240;
var noseY2 = 205;
var noseX3 = 265;
var noseY3 = 255;
let colors = ['blue', 'black', 'green', 'brown', 'grey'];
let color = 'black';
var bodyX = 200;
var bodyY = 400;
let bodColor = "red";
let bodColors = ['orange', 'yellow', 'navy', 'purple', 'pink'];

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

function draw() {
    background("lightblue");

    // Body
	fill(bodColor);
	ellipse(width/2, height - 50, bodyX, bodyY);

	// Face shape
	strokeWeight(0);
	fill('#E0AC69');
	ellipse(width / 2, width / 2, faceShapeX, faceShapeY);
	var eyeLX = width / 2 - faceShapeX * 0.25;
    var eyeRX = width / 2 + faceShapeX * 0.25;

	// Mouth
	fill('#E77471');
	strokeWeight(1);
	arc(width / 2, height/2, mouthW, mouthH, 0, PI); 

	// Nose 
	fill('#C58917');
	strokeWeight(0);
	triangle(noseX1, noseY1, noseX2, noseY2, noseX3, noseY1); 

	// White of eyes
	strokeWeight(2);
	fill('white');
	ellipse(eyeLX, height/4, 50, 25);  
	ellipse(eyeRX, height/4, 50, 25);

	// Pupils
	fill(color);
	ellipse(eyeLX, height/4, 20, 20);  
	ellipse(eyeRX, height/4, 20, 20);

	// Hair
	strokeWeight(0);
	arc(300, 155, 250, 230, PI + QUARTER_PI, TWO_PI + QUARTER_PI); 
	arc(260, 200, 340, 290, PI, PI + HALF_PI, OPEN);
	rect(360, 180, 65, hairLen);
	rect(80, 140, 45, hairLen + 40);

}

function mousePressed() {
	faceShapeX = random(230, 300);
	faceShapeY = random(320, 370);
	hairLen = random(100, 500);
	mouthW = random(10, 100);
	mouthH = random(10, 50);
	noseX1 = random(210, 220);
    noseY1 = random(250,260);
    noseX2 = random(235, 245);
    noseY2 = random(200, 210);
    noseX3 = random(260, 270);
    color = random(colors);
    bodColor = random(bodColors);
    bodyX = random(200, 300);
}

My process was to start with a hard coded face and then define variables and change them slightly. I think my final product is pretty good for someone who struggles with making illustrations AND faces. I struggled with trying to figure out how to change the hair more drastically as the facial shape changes than just changing the hair length.

Taisei Manheim – Project – 02 – Variable – Face


sketch

When coding this project, at first I had difficulty controlling the different variables in order to make them work in the way that I wanted them to, such as the color of the face and body.  However, once I got the hang of it I was able to have multiple elements of the face changing at the same time without the face becoming too distorted.

//Taisei Manheim
//Section C
//tmanheim@andrew.cmu.edu
//Assignment-02

var eyeSize = 10;
var faceWidth = 100;
var faceHeight = 200;
var mouthWidth = 10;
var mouthHeight = 10;
var bodyWidth = 300;
var bodyHeight = 200;
var color = 100;
var armWidth = 20;
var armHeight = 100;

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

function draw() {
    background('pink');

    fill(50, 155, 255);
    fill(50, 155 - color, 255 - color);

    var armLx = width / 2 - bodyWidth / 4 - armWidth / 2
    var armRx = width / 2 + bodyWidth / 4 - armWidth / 2
    var armLy = height / 2 + faceHeight / 2 - armHeight + 40
    var armRy = height / 2 + faceHeight / 2 - armHeight + 40
    rect(armLx, armLy, armWidth, armHeight);
    rect(armRx, armRy, armWidth, armHeight);
    //arms

    ellipse(armLx + armWidth / 2, armLy, 40, 60);
    ellipse(armRx + armWidth / 2, armRy, 40, 60);
    //hands

    var bodyPos = height / 2 + faceHeight / 2 + bodyHeight / 2 - 10
    ellipse(width / 2, bodyPos, bodyWidth, bodyHeight);
    //body

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

    fill('white')
    var eyeLX = width / 2 - faceWidth * 0.25;
    var eyeRX = width / 2 + faceWidth * 0.25;
    arc(eyeLX, height / 2, 2.5 * eyeSize, eyeSize, 0, PI);
    arc(eyeLX, height / 2 + 2, 2.5 * eyeSize, eyeSize, PI, PI + PI, OPEN);
    arc(eyeRX, height / 2, 2.5 * eyeSize, eyeSize, 0, PI);
    arc(eyeRX, height / 2 + 2, 2.5 * eyeSize, eyeSize, PI, PI + PI, OPEN);
    //eyes

    fill('black');
    ellipse(eyeLX, height / 2 + 1, eyeSize - 2, eyeSize - 2);
    ellipse(eyeRX, height / 2 + 1, eyeSize - 2, eyeSize - 2);
    //pupils

    fill('black');
    rect(eyeLX - 15, height / 2 - faceHeight / 4, 30, 8);
    rect(eyeRX - 15, height / 2 - faceHeight / 4, 30, 8);
    //eyebrows

    fill(255, 0, 0);
    ellipse(width / 2, height / 2 + faceHeight / 4, mouthWidth, mouthHeight);
    //mouth

    fill('orange');
    rect(width / 2 - 60, height / 2 - 10 - faceHeight / 2, 120, 30);
    rect(width / 2 - 25, height / 2 - 110 - faceHeight / 2, 50, 100);
    //top hat
}

function mousePressed() {
    faceWidth = random(100, 150);
    faceHeight = random(100, 200);
    eyeSize = random(10, 20);
    mouthWidth = random(5, 30);
    mouthHeight = random(5, 30);
    bodyWidth = random(300, 500);
    bodyHeight = random(200, 400);
    color = random(0,155);  
    armWidth = random(20, 30);
    armHeight = random(80, 120);
}

Sewon Park – PO-2

sketch

// Sewon Park
// sewonp
// Section B

var eyeSize = 8;
var faceWidth = 220;
var faceHeight = 230;
var bodyc = 192;
var earc = 192;
var umbrellac = 150;


 
function setup() {
    createCanvas(600, 480);
}
 
function draw() {
    background(0);
    fill(bodyc,200,200)
    ellipse(width / 2, height / 2, faceWidth,faceHeight) // body (Gray)
    var eyeLX = width / 2 - faceWidth * 0.25;
    
    fill(255,255,255)
    var eyeRX = width / 2 + faceWidth * 0.25; 
    ellipse(eyeLX,height/2.8,eyeSize,eyeSize); // left eye
    ellipse(eyeRX,height/2.8,eyeSize,eyeSize); // right eye
    
    fill(0,0,0)
    ellipse(eyeLX,height/2.8,eyeSize/2,eyeSize/2); // left pupil
    ellipse(eyeRX,height/2.8,eyeSize/2,eyeSize/2); // right pupil
    
    fill(0,0,0)
    ellipse(width/2,height/2.6,eyeSize+1,eyeSize-3) //nose
    line(width/2,height/2.6,width/1.8,height/2.65)
    line(width/2,height/2.6,width/1.8,height/2.55)
    line(width/2,height/2.6,width/2.2,height/2.65)
    line(width/2,height/2.6,width/2.2,height/2.55) //whiskers

    fill(umbrellac,100,50)
    triangle(width/2,0,width/2.3,30,width/1.7,30)
    rect(200,30,10,140)
    arc(width/2,30,200,40,PI,0) // umbrella
    
    fill(255,250,250)
    ellipse(width/2,height/1.65,faceWidth/1.3,faceHeight/1.6) // body (White)

    fill(180,180,180)
    arc(width/2,height/2+5,eyeSize,eyeSize,0,PI) 
    arc(width/2.2,height/2+5,eyeSize,eyeSize,0,PI)
    arc(width/1.85,height/2+5,eyeSize,eyeSize,0,PI) //stomach patterns

    fill(earc,earc,255)
    triangle(width/2.5,height/3.4,width/2.4,height/6,width/2.3,height/3.4) //left ear
    triangle(width/1.8,height/3.4,width/1.7,height/6,width/1.68,height/3.4) //right ear

}
 
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.
    faceWidth = random(200, 240); //face width changing
    faceHeight = random(230, 270); //face height changing
    eyeSize = random(5, 15); // eye size changing
    bodyc = random(100,300) //body color changing
    earc = random(100,300) //ear color changing
    umbrellac = random(0,150) // umbrella color changing 
    }

For this project, I wanted to experiment with my spirit animal Totoro. I wanted its body and umbrella to stand out, so I made the colors change with every click. Because Totoro has a leaf umbrella, I set the colors to change around green and brown.

Lanna Lang-Looking Outwards-02

Casey Reas’ “KNBC” / Dec. 2015

This project is a continuous, generative collage created through an audio and visual distortion of television signals that are looped continuously as the data is extracted, amplified, and composed into a new stream. This installation combined coding, art, and sound into a unified piece of work. What I find interesting about this work is his unique artistic expression with a visual experience that builds upon conceptual art, experimental animation, and generative software technology.

I cannot think of a way to make this project better than it already is. It’s full of chaos yet is somehow still kind of uniform by the symmetry of the visual distortion of the television broadcast signals. The audio played with the visual fits beautifully with the portrayed imagery by immersing the viewers with a haunting and eerie feel.

Reas wants to depict through his work that writing code is a versatile way of thinking of design, and not just another tool. Reas not only could use software, but he created his own called Processing, in hopes to inspire others, including his students at UCLA, to use code not only for STEM but also for visual arts. This project was inspired by his previous work that also focused on distorted, television-static imagery, such as “Tox Screen”, “Ultraconcentrated”, “100% Gray Coverage”, and others.

Video recording of the audio and visuals for Casey Reas’ “KNBC”.