Angela Lee – Project – 02

angela-generative-face

/*
 * Angela Lee
 * Section E
 * ahl2@andrew.cmu.edu
 * Assignment-02
 */

// variables for eye size, face width, and face height
var eye_size = 40;
var face_width = 200;
var face_height = 300;
var mouth_width = 30;
var mouth_height = 30;
var color_change = 0;
var mouth_change = 0;


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

function draw(){
	background (230, 255, 255);

    // body
    fill (253, 255, 158);
    ellipse (width / 2, height / 2 + face_height * 0.75, face_width, face_width);
    rect (width / 2 - face_width / 2, height / 2 + face_height * 0.75, face_width, 400)

    // face
    noStroke ()
    fill (255 - color_change, 217 - color_change, 177 - color_change);
    ellipse (width / 2, height / 2, face_width, face_height);

    // variables for eye position
    var left_eye = width / 2 - face_width * 0.25;
    var right_eye = width / 2 + face_width * 0.25;

    // eyes
    noStroke ()
    fill ("black")
    ellipse (left_eye, height / 2, eye_size, eye_size);
    ellipse (right_eye, height / 2, eye_size, eye_size);
    
    // highlights of the eyes
    fill ("white")
    ellipse (left_eye + eye_size / 5, height / 2 - eye_size / 5, 10, 10)
    ellipse (right_eye + eye_size / 5, height / 2 - eye_size / 5, 10, 10)
    
    // creating mouth
    noStroke ()
    fill (222 - mouth_change, 81 - mouth_change, 73 - mouth_change)
    ellipse (width / 2, height / 2 + 0.25 * face_height, mouth_width, mouth_height);



}

function mousePressed() {
    face_width = random (175, 300);
    face_height = random (175, 300);
    eye_size = random (30, 50);
    mouth_width = random (40, 80);
    mouth_height = random (30, 50);
    color_change = random (0,150);
    mouth_change = random (0, 50);
}

I started this project feeling slightly intimidated since I had no idea how you could create faces that changed. I went through a couple of iterations to get to this final product; being able to visually see mistakes really helped me adjust my shapes. This project helped me experience how powerful variables and built-in functions such as random can be. One thing I had fun playing with was randomizing color but also adhering to a skin tone palette—I hope to experiment more with randomization of color in the future.

Angela Lee – Looking Outwards – 02

“Artificial Arcadia,” created by Fragmentin in collaboration with KOSMOS architects in 2019, utilizes a 3D spatial contraption to raise questions surrounding how the natural, digital, and artificial shapes contemporary landscapes. The installation features white blankets propped up by poles—reminiscent of famous Swiss mountains—and changes and falls as the mountains themselves begin to melt. What I enjoyed about this piece was how viewers were able to interact with it and walk through the space; in my experience, incorporating space into artwork creates an immersive experience and a more profound impression on the viewer. From what I can guess, the program must calculate the heights of each pole at a given time, so perhaps there’s a section of code devoted to each pole. Also, the program should be making these calculations every few minutes, so there must be a part of the code that regulates the time frames in which these calculations are made and the code repeats itself in a loop. I think that with their narrative surrounding landscapes, the artists rightfully chose to program something that involved 3D space (supported with a 2D graphic) rather than creating an algorithm for 2D work; I really admire how they explored the intersection of coding and art in order to make an important statement about climate change.

Angela Lee – Project 01 – Face

angela-face

/* 
 * Angela Lee
 * Section E
 * ahl2@andrew.cmu.edu
 * Assignment 1 Self-Portrait
 */


function setup(){
    createCanvas (600, 600);
    background (249, 217, 217);
    noStroke();
    
    // hair behind the shoulders
    fill (40, 27, 5);
    rect (129, 216, 325, 361);

    // shirt
    fill (239, 223, 223);
    ellipse (287.5, 652, 413, 342);

    // hair at the top of the head
    fill (40, 27, 5);
    ellipse (290.5, 235, 329, 342);

    // neck
    fill (206, 162, 132);
    rect (215, 365, 151, 128);
    ellipse (144.864, 293.5, 46.271, 79);

    // left hoop earring
    noFill();
    stroke (186, 146, 56);
    strokeWeight (12);
    ellipse (144.5, 347.5, 51, 51);

    // left earing stud
    noStroke();
    fill (216, 176, 97);
    ellipse (144.5, 314.5, 13, 13);

    // right hoop earring
    noFill();
    stroke (186, 146, 56);
    strokeWeight (12);
    ellipse (423.5, 353.5, 51, 51);

    // face
    noStroke();
    fill (224, 186, 153);
    ellipse (291.5, 280.5, 295, 333);

    // right eye
    fill ("black")
    ellipse (362.571, 284.571, 33.143, 33.143);
    triangle (378, 278.286, 363.143, 268, 386, 268);

    // right eyebrow
    rectMode (CENTER);
    translate (351.346, 237.903);
    rotate (6.21);
    fill (58, 45, 32);
    rect (0, 0, 53, 9);
    rotate (-6.21);
    translate (-351.346, -237.903);

    // hair surrounding the upper left area of the face
    translate (202.207, 163.026);
    fill (40, 27, 5);
    rotate (2.4);
    ellipse (0, 0, 176.657, 32.935);
    rotate (-2.4);
    translate (-202.207, -163.026);

    // hair on the right area of the face
    quad (256.801, 118.331, 454, 365, 453, 206, 335, 85);

    // left eye
    fill ("black")
    ellipse (217.429, 280.571, 33.143, 33.143);
    triangle (202, 274.286, 216.857, 264, 194, 264);

    // left eyebrow
    rectMode (CENTER);
    translate (220.483, 237.903);
    rotate (-6.21);
    fill (58, 45, 32);
    rect (0, 0, 53, 9);
    rotate (6.21);
    translate (-220.483, -237.903);
    triangle (194.364, 231.555, 196.263, 240.371, 172.596, 244.129);

    // nose
    fill (214, 171, 139);
    triangle (288.7, 278, 306, 341.9, 271.4, 341.9);
    ellipse (288.692, 343.42, 34.615, 19.16);

    // mouth
    rectMode (CORNER);
    fill (124, 53, 53);
    ellipse (288.762, 384, 67.524, 42);
    fill (224, 186, 153);
    rect (246, 360, 89, 21);

    // hair in front of the shoulders
    fill (40, 27, 5);
    rect (129, 432, 86, 200);

    // rounded collar of the shirt
    fill (206, 162, 132);
    ellipse (290.5, 493, 151, 80);
}

I really enjoyed playing with some of the details in this self-portrait; for example, I always put half of my hair in front of my shoulders and the other half behind my back. While the process was a bit tedious because I had some coding errors, doing it one shape at a time definitely allowed me to fix those mistakes efficiently.

Angela Lee – Looking Outwards – 01

A video detailing the installation of “Floating in the Falling Universe of Flowers” by teamLab.
Digital installation “Floating in the Falling Universe of Flowers” by teamLab.

This summer, I visited teamLab’s Planets exhibition of digital art in Tokyo, Japan. I was especially inspired by the art piece, “Floating in the Falling Universe of Flowers.” The project, a video showing flowers falling towards the ground, was projected across a dark dome ceiling, and viewers could watch lying down, sitting, or standing. According to the creators, the video is rendered in real time by a computer, and the viewer’s interactions with the installation affect what is rendered. teamLab, a collaborative creative arts group, worked with Hideaki Takashi, who created the soundtrack. The work felt similar to another installation from the exhibit (“Drawing on the Water Surface Created by the Dance of Koi and People – Infinity”) since both works explored the beauty of temporariness. As someone who tends to enjoy routine, this installation inspired me to be more open-minded towards change. While the imagery of the flowers falling and wilting was sad, I was also struck by the beauty of its aging process. This piece of art was thought-provoking because it lead me to realize that an exact moment in time can never happen again—everything is temporary, and maybe that elicits beauty. I think the creators created a impactful, immersive space by engaging the senses through sound, smell, and sight.