danakim-Section D-Looking Outwards-02

 

Ian Cheng; Emissary Sunsets The Self

Ian Cheng’s Emissary Sunsets The Self (2017) is the last work in his Emissaries trilogy (2015-2017). Emissary Sunsets The Self is an open ended live digital simulation that explores the complex themes of evolution, human behavior, and the history of consciousness. These themes were derived from Cheng’s background in cognitive science. Cheng utilizes a video game engine to create unpredictable animated worlds. He employs computer generated simulations, similar to those used in predictive technologies, to create these complex settings. Each character in this simulated world is equipped with custom AI that reacts to the surrounding environment as well as other characters within the simulated world.

The idea that a computer generated simulation could basically react to itself is very compelling yet a bit disturbing. The artist himself does not even know what outcomes would be produced from this simulation. Being able to learn more about the human condition through this technology is ironic. This irony gives the simulation an even more mysterious personality.

Watch live video from MoMA on www.twitch.tv

iancheng.com

 

 

 

yushano-project-02-Variable-Face

yushano-project02

var noseSize = 20;
var noseWidth = 150;
var noseHeight = 100;
var faceWidth = 250;
var faceHeight = 250;
var earX = 80;
var earY = 66;
var eyeWidth = 25;
var eyeHeight = 40;
var eyeX = 150;
var eyeY = 160;
var eyeSize = 8;
var earnoseColor = 221;

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

function draw() {
    background(180,180,180);
    //draw the ears
    stroke(225,110,110);
    strokeWeight(3);
    fill(246,earnoseColor,earnoseColor);
    triangle(width/4, height/3, width/8*3, height/9*2, earX, earY);
    triangle(width/4*3, height/3, width/8*5, height/9*2, width-earX, earY);
    //draw the face
    fill(246,221,221);
    ellipse(width/2, height/2, faceWidth, faceHeight);
    //draw the eyes
    noStroke();
    fill(128,128,128);
    ellipse(width/8*3, height/5*2, eyeWidth, eyeHeight);
    ellipse(width/8*5, height/5*2, eyeWidth, eyeHeight);
    fill(250);
    ellipse(eyeX, eyeY, eyeSize, eyeSize);
    ellipse(width-eyeX, eyeY, eyeSize, eyeSize);
    //draw the nose outline
    fill(235,184,184);
    ellipse(width/2, height/5*3, noseWidth,  noseHeight);
    //draw the nose inside
    var noseLX = width/2 - noseWidth*0.25;
    var noseRX = width/2 + noseWidth*0.25;
    fill(246,earnoseColor,earnoseColor);
    ellipse(noseLX, height/5*3, noseSize, noseSize);
    ellipse(noseRX, height/5*3, noseSize, noseSize);
}

function mousePressed() {
    // when the user clicks, these variables are reassigned
    // to random values within specified ranges.
    noseWidth = random(100, 200);
    noseHeight = random(80, 150);
    noseSize = random(10, 40);
    faceHeight = random(200, 300);
    faceWidth = random(250, 350);
    earX = random(50, 90);
    earY = random(55, 75);
    eyeWidth = random(30,45);
    eyeHeight = random(30,60);
    eyeX = random(140,160);
    eyeY = random(150,170);
    earnoseColor = random(110,221);
}

When I designed this variable face, I want it to be a cartoon and cute face. That’s why I chose to do pig.

dnam – Looking Outwards – 02

“Forest Friends at Osu Wexner Medical Center”
2014-2015

In the medical center, Forest Friends was installed to help doctors cure cancer patients. Focusing on helping alleviate stress and pain for children suffering from cancer, Forest Friends is an interactive touch screen set in the waiting room. Patients can come in and check in their hospital wristbands, which would then summon a forest animal. The forest background reacts to the patients; for example, when a patient presses long enough on to a screen, a tree grows. The background changes due to such elements, and the constant change of background helps patients not get bored of the game. However, to give a sense of familiarity, a specific animal is assigned to patient. Therefore, when a patient logs in, the animal from last time appears once again.

Ikrsek-Looking Outwards-02

The programs the computer utilized to cut the sculptures for Quayola’s Laocoön Series were custom-designed by Quayola himself. done by Quayola is a really clever piece of generative art in my opinion – the way he took Laocoön and his sons and interpreted their images through computational algorithms designed to re-iterate the uncompleted works in a surreal and clearly computer-graphics influenced polygonal form begins to create a bizarre hybrid between the traditional/classical forms of art and computers through utilizing monuments and icons in western art culture. The precision of the computer and way it generates lines throughout the sculptures and filters them creates a bizarre narrative with the classical sculpture itself.

 

Laocoön Series (2015 – ongoing)

 

afukuda_Project02_VariableFaces_SectionC

afukuda_project02_javaScript

/* 
 * Name | Ai Fukuda 
 * Course Section | C 
 * Email | afukuda@andrew.cmu.edu
 * Project | 02-VariableFaces
 */ 

var r01, g01, b01;      // vase color 

var eyeSize = 20;       // variables related to eyes 
var coordEyeX = 400;
var coordEyeY = 250;

var cheekSize = 20;     // variables related to cheeks 
var coordCheekX = 420;
var coordCheekY = 300;

var widthMouth = 20;    // variables related to mouth 
var heightMouth = 20; 
 
// coordinates for bezier curve 
var coordX1 = 490;      // x-coordinate of vertex 
var coordY1 = 100;      // y-coordinate of vertex 
var coordX2 = 500;      // x-coordinate of first control point of bezier curve 
var coordY2 = 240;      // y-coordinate of first control point of bezier curve 
var coordX3 = 450;      // x-coordinate of second control point of bezier curve 
var coordY3 = 300;      // y-coordinate of second control point 
var coordX4 = 400;      // x-coordinate of second anchor point 
var coordY4 = 380;      // y-coordinate of second anchor point 

function setup() {
    createCanvas(640, 480); // set canvas size 
    r01 = random(255);
    g01 = random(255);
    b01 = random(255);
} 

function draw () {
    background (209, 226, 244);

    noStroke();
    fill(r01, g01, b01, 150);
    beginShape();                                                                                       // create vase geometry 
        vertex (coordX1, coordY1);                                                                      // starting vertex of right curve of vase
        bezierVertex (coordX2, coordY2, coordX3, coordY3, coordX4, coordY4);                            // right curve of vase         
        vertex ((640-(coordX4)), coordY4);                                                              // starting vertex of left curve of vase                                    
        bezierVertex ((640-(coordX3)), coordY3, (640-(coordX2)), coordY2, (640-(coordX1)), coordY1);    // left curve of vase
        vertex (coordX1, coordY1);                                                                      // finishing vertex of vase
    endShape();

    fill(100);
    ellipse (coordEyeX, coordEyeY, eyeSize, eyeSize);                                                   // right eye 
    ellipse ((640-coordEyeX), coordEyeY, eyeSize, eyeSize);                                             // left eye 

    fill(249, 200, 203);
    ellipse (coordCheekX, coordCheekY, cheekSize, cheekSize);                                           // right cheek 
    ellipse ((640-coordCheekX), coordCheekY, cheekSize, cheekSize);                                     // left cheek 

    stroke(100);
    noFill();
    arc (320, 320, widthMouth, heightMouth, 0, PI);                                                    // mouth

    stroke(135, 109, 82);                                                                              // plant branch 
    strokeWeight (4);
    arc (400, coordY1, 150, 150, PI, 0.2*HALF_PI);

    noStroke();                                                                                       // plant leaves
    fill(197, 217, 166);
    arc (500, coordY1, 30, 15, 0, PI); 
    arc (500, coordY1, 30, 15, PI, 0); 

    arc (440, (coordY1-20), 30, 15, 0, PI); 
    arc (440, (coordY1-20), 30, 15, PI, 0); 

    arc (485, (coordY1-45), 30, 15, 0, PI); 
    arc (485, (coordY1-45), 30, 15, PI, 0); 

}

function mousePressed() {
    // when the user clicks, these variables are reassigned random values

    coordX1 = random(400, 490);           // all: varies curvature of vase 
    coordY1 = random(110, 150);           // except for: varies height of vase 
    coordX2 = random(490, 540);
    coordY2 = random(100, 240);
    coordX3 = random(400, 540);
    coordY3 = random(200, 370);
    coordX4 = random(380, 420);   

    r01 = random(255);                    // selects random color for vase 
    g01 = random(255);
    b01 = random(255);

    eyeSize = random(10, 25);             // varies size of eyes 
    coordEyeX = random(350, 420);         // varies location of eyes (x-axis)
    coordEyeY = random(200, 260);         // varies location of eyes (y-axis)

    cheekSize = random(10, 20);           // varies size of cheeks
    coordCheekX = random(380, 420);       // varies location of cheeks (x-axis)
    coordCheekY = random(280, 300);       // varies location of cheeks (y-axis)
  
    widthMouth = random (10, 30);               // varies width of mouth 
    heightMouth = random (10, 30);              // varies height of mouth 

}


    
 




For this project I decided to base the variable faces on potted plants. There are several variables – the height of the vase, the curvature of the vase, the color of the vase, the size & distance of the eyes, the size & distance of the cheeks, and lastly the size of the mouth. The biggest thing I noticed while I was coding this graphic was that I could achieve the same visuals by using only half of the variables. Since the pot is symmetrical, I could simply use the negative x-coordinates of the right side of the pot for the left side of the vase, making my code much simpler and cleaner

 

afukuda_LookingOutwards02

Frederik Vanhoutte’s Equivor graphics was inspirational and memorable for its natural yet carefully compositional balance. I appreciate how Vanhoutte attempts to achieve aesthetic beauty through his otherwise algorithmic work; I feel that most people in this field tend to sway towards focusing on perfecting their algorithm and their aesthetic awareness fades with it. From looking at the graphics, there is a strong inclination of a radial composition, most likely with associated degrees of freedom for each petal so as to not create repeated identical petals, maintaining the natural aesthetics of flowers. I also appreciate Vanhoutte’s monochromatic choice of palette; it allows the viewer to focus on his generative art. Reading through his website, it gave an insight as to his way of thinking, which I find it helped my understanding of his work better. He writes, “Code gives me a way to play, to explore the odd behavior of our world, to find the systems beneath it.” He also shows his thought process as to how to define his work. He believes art is too pretentious and algorithm not showing as much of the “art” as he would like. He concludes that constructs seems to be a suitable choice of vocabulary.

 

karinac-Project-02-Variable-Face

project-02

//Karina Chiu
//karinac@andrew.cmu.edu
//Section C
//Project-02

var faceWidth = 360
var faceHeight = 320
var leftX = 200   //left-eye-pupil
var leftY = 290   //left-eye-pupil
var rightX = 300  //right-eye-pupil
var rightY = 290  //right-eye-pupil
var beakX = 220   //position of beak
var beakY = 360	  //position of beak
var comb = 110    //height of comb

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

function draw() {
	background(192,183,227);

	//head
	stroke(0);
	strokeWeight(5);
	fill(245,202,52);
	ellipse(250,300,faceWidth,faceHeight);

	//left-outer-eye
	strokeWeight(3);
	fill(250);
	ellipse(190,290,110,110);

	//right-outer-eye
	fill(250);
	ellipse(310,285,140,140);

	//left-pupil
	fill(0);
	ellipse(leftX,leftY,10,10);

	//right-pupil
	fill(0);
	ellipse(rightX,rightY,10,10);

	//beak
	fill(235,143,31);
	triangle(beakX,beakY,250,440,500-beakX,beakY);

	//chicken-comb
	fill(250,0,0);
	triangle(180,comb,240,220,300,comb);
}


function mousePressed() {
	
	//when mouse is clicked, random values are
	//assigned to the variables

	faceWidth = random(300,450);
	faceHeight = random(290,370);
	leftX = random(150,220);
	leftY = random(255,330);
	rightX = random(270,350);
	rightY = random(245,340);
	beakX = random(200,220);
	beakY = random(360,370);
	comb = random(80,110);

}

In my childhood, I loved drawing cartoon animals with exaggerated eyeballs, so I decided to try drawing them in this project. It took me a few times to write the ‘random’ code lines, but I eventually grasped the concept.

rkarp1 – Looking Outwards-02 – Generative Art – Section A

LIA – Waves (2016)

When I read the description for “Waves,” I thought, ok, I’m going to watch a video of some sine waves. When I pressed play, I was blown away. The video completely transformed my emotional state, and then some. I was immediately lulled into a calm, the sort that is stereotypically ascribed to spending time by a body of water. I could even hear the sounds of an ocean. I found myself raising the volume on my computer to try to hear the sound better–only to realize that the video had no sound, and the sound was in my head, brought up from my memory by the video itself.

Still from “Waves,” a generative installation by LIA

On the project’s site (linked at the top of the post), LIA doesn’t go into too many details about the algorithms by which she made “Waves,” but the project description explains that the algorithms allow for changes in rhythm and scale while keeping the direction constant. It is all randomly determined, making for endlessly new patterns. She calls it a “motion painting.” It reminds me of the exercises we did in class today, with the circle moving back and forth at different speeds–but it’d be as if the circle were allowed to leave the canvas and endlessly new, randomly-generated circles appeared directly behind it, forever.

In the About section on her website, LIA states that her minimalist work combines traditional drawing and painting with new digital and algorithmic aesthetics. The bio continues: “She focuses on the translation of certain experienced principles into abstract forms, movements and colours in order to allow the viewer to explore the same on a subconscious level.” I can attest to her success at that from my experience of “Waves.”

As highlighted on the project site, “Waves,” was displayed as part of a concert in 2017. I think “Waves” begs to be combined with music, as my response, which was also aural, did.

Waves @ concert “Blades” by @c (www.at-c.org), with Angelica V. Salvi, Ricardo Jacinto, João Pais Filipe, gnration, Braga. Portugal, 2017/03/03. Photos by gnration / André Henriques

rkarp1 – Project-02 – Variable Face – Section A

Rachel Karp Variable Faces

//face
var faceColorR = (0);
var faceColorG = (200);
var faceColorB = (40);
var faceWidth = 200;
var faceLength = 300;
var faceOutline = (3);

//mouth
var mouthColorR = (0);
var mouthColorG = (0);
var mouthColorB = (0);
var mouthSize = 100;
var mouthOutline = (2);

//eyes
var eyeColor = (0);
var eyeStroke = (255);
var eyeSclera = (6); // strokeWeight for the eye

//canvas
var canvasColorR = (0);
var canvasColorG = (0);
var canvasColorB = (0);

function setup() {
    createCanvas(640, 480);
    angleMode(DEGREES); // Change the mode to DEGREES
}

function draw() {

    background(canvasColorR, canvasColorG, canvasColorB);

    //face
    stroke(255);
    strokeWeight(faceOutline);
    fill(faceColorR, faceColorG, faceColorB);
    ellipse(width/2, height/2, faceWidth, faceLength);

    //mouth
    strokeWeight(mouthOutline);
    fill(mouthColorR, mouthColorG, mouthColorB);
    arc(width/2, height/2+faceLength/6, mouthSize, mouthSize, 0, 160, CHORD);

    //eyes color and outline
    stroke(eyeStroke);
    strokeWeight(eyeSclera);
    fill(eyeColor);
    
    //left eye
    ellipse(width/2 - faceWidth/4, height/2-faceLength/6, 20, 20);

    //right eye
    ellipse(width/2 + faceWidth/4, height/2-faceLength/6, 20, 20);

}

function mousePressed() {

    //face color
    //When clicked, face color changes randomly.
    faceColorR = random(0,255);
    faceColorG = random(0,255);
    faceColorB = random(0,255);

    //face size
    //When clicked, face width changes randomly, and face height changes in relation.
    faceWidth = random(100, 340);
    faceLength = random(faceWidth, faceWidth*3/2);

    //mouth color
    //When clicked, mouth color changes in relation to face color.
    mouthColorR = faceColorG;
    mouthColorG = faceColorB;
    mouthColorB = faceColorR;

    //mouth size
    //When clicked, mouth size changes in relation to face width.
    mouthSize = random(10, faceWidth/3);

    //eye
    //Stroke color remains constant.
    eyeStroke = (255);
    //When clicked, the size of the sclera (strokeWeight) changes.
    eyeSclera = random(1,18);

    //face outline
    //When clicked, face outline changes in relation to sclera size.
    faceOutline = eyeSclera/2

    //mouth outline
    //When clicked, mouth outline changes in relation to sclera size.
    mouthOutline = eyeSclera/3

    //canvas
    //When clicked, canvas color changes to match mouth color.
    canvasColorR = mouthColorR;
    canvasColorG = mouthColorG;
    canvasColorB = mouthColorB;

}

This project made me have to figure out a lot of things (some with the help of Maayan Albert during office hours) including how to make colors change and how to make sure different changing shapes (eyes, mouth) could stay inside a bigger changing shape (face). Once I figured out how to make colors change, I wanted to play with that a lot to play with how different colors can affect the viewer’s emotions. I also became interested in how outlines can change the emotional quality of an image. E.g., when the white around the eyes is really big, the figure seems afraid; when the white around the whole face is heavier, the figure seems more active and zany.

mjanco – Section B- Project 2

generativefaces

//Michelle Janco
//mjanco@andrew.cmu.edu
//15-104 Section B
//Project - 2

var eyeSize = 40;
var faceWidth = 200;
var faceHeight = 230;
var mouthWidth = 60;
var mouthHeight = 30;
var faceColor = 255;
var noseWidth = 50;
var noseHeight = 15;
var pupilSize = 15;

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

function draw() {
    background(250,253,169);
    noStroke();
    fill(faceColor);
    ellipse(width / 2, height / 2, faceWidth,  faceHeight);
    var eyeLX = width / 2 - faceWidth * 0.25;
    var eyeRX = width / 2 + faceWidth * 0.25;
    //eyes
    fill(160,175,179);
    ellipse(eyeLX, height / 2, eyeSize, eyeSize);
    ellipse(eyeRX, height / 2, eyeSize, eyeSize);
    //pupils
    fill(0);
    ellipse(eyeLX, height / 2, pupilSize, pupilSize);
    ellipse(eyeRX, height / 2, pupilSize, pupilSize);
    //mouth
    fill(112,2,51);
    ellipse(width / 2, height / 1.55, mouthWidth, mouthHeight);
    //nose
    fill(0);
    rotate(PI/5.0);
    rect(width / 1.55, height / 20.75, noseWidth, noseHeight, 40);

  }

function mousePressed() {
    // when the user clicks, these variables are reassigned
    // to random values within specified ranges.
    faceWidth = random(75, 200);
    faceHeight = random(180, 230);
    eyeSize = random(20, 40);
    mouthWidth = random(15, 60);
    mouthHeight = random(5, 30);
    faceColor = random(100, 255);
    noseWidth = random(30, 50);
    noseHeight = random(5, 15);
    pupilSize = random(5, 15);
  
}

I was inspired by Edvard Munch’s The Scream, and decided to make a piece that generated different styles and stages of shock or surprise. I chose the off-putting color scheme to reflect the weird expressions. It was hard to figure out the change in color initially, but I figured it out quickly.