Alessandra Fleck – Project-02-Variable Face

sketch

//Name: Alessandra Fleck 
//Class Section : B
//Email: afleck@andrew.cmu.edu
//Project-02

//Start values for face

//eyes
var eyeSize = 50;
var pupilSize = 20;
var pupilHeight = 20;

//face
var faceWidth = 200;
var faceHeight = 200;
var faceColor = 200;

//nose
var noseSize = 10;

//shirt
var shirtColor = 350;

//body
var bodyW = 300;
var bodyH = 350;

//mouth
var mouthSize_1 = 30;
var mouthSize_2 = 10;

//eyebrows
var eyebrowS = 60;

//hair
var hairColor = 100;

//left ear
var earWLeft = 65;
var earHLeft = 65;
//right ear
var earWRight = 65;
var earHRight = 65;

//left arm
var armWLeft = 50;
var armHLeft = 80;
var armWRight = 50;
var armHRight = 80;


 
function setup() {
    createCanvas(640, 480);
}
 
function draw() {
    background(232,195,230);
    //set basic face parameters

    //clouds
    fill (189,223,185);
    stroke('white');
    ellipse();

    fill(241,227,faceColor);
    stroke(65,66,64);
    strokeWeight(4);
    ellipse(width / 2, height / 2, faceWidth,  faceHeight);

    //change shirt color + make body
    fill (204,191,shirtColor);
    stroke(65,66,64);
    strokeWeight(3);
    ellipse (width / 2, height / 2 + faceHeight * 0.5 + bodyH * 0.5, bodyW, bodyH);

    //body spot
    fill (204,191,162);
    stroke('white');
    strokeWeight(3);
    ellipse (width / 2, height / 2 + faceHeight * 0.5 + bodyH  * 0.5, bodyW / 2, bodyH / 2 + 80);

    

    //mouth shade
    fill(204,191,162);
    stroke(214,199,181);
    ellipse (width /2, 280, 100,100);

    //set left + right eye values
    fill ('white');
    stroke('white');
    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);

    //eye pupil values
    fill ('black');
    noStroke();
    var eyeLP = width / 2 - faceWidth * 0.25;
    var eyeRP = width / 2 + faceWidth * 0.25;
    ellipse(eyeLP, height / 2, pupilSize, pupilHeight);
    ellipse(eyeRP, height / 2, pupilSize, pupilHeight);

    //eyebrows
    noFill();
    stroke('brown');
    strokeWeight(5);
    // arc(x, y, w, h, start, stop, [model])
    arc(eyeLX, height / 2, eyebrowS, eyebrowS, PI + QUARTER_PI, TWO_PI - QUARTER_PI);
    arc(eyeRX, height / 2, eyebrowS, eyebrowS, PI + QUARTER_PI, TWO_PI - QUARTER_PI);

    //mouth
    fill ('red');
    stroke(228,140,226);
    ellipse(width / 2, 280, mouthSize_1, mouthSize_2);

    //nose
    fill ('brown');
    noStroke();
    ellipse(width / 2, height / 2 + 20, 20,10);

    //ears
    //left ear
    fill (143,123,77);
    stroke('white');
    ellipse(width / 2 + faceWidth * 0.20 + earWLeft, height / 2 -80, earWLeft, earHLeft);

    //right ear
    fill (143,123,77);
    stroke('white');
    ellipse(width / 2 - faceWidth * 0.20 - earWRight, height / 2 -80, earWRight, earHRight);


    //left paw
    fill (143,123,77);
    stroke('black');
    ellipse(width / 2 - bodyW * 0.20 - armWRight -10, height / 2 + 230, armWRight+50, armHRight);

    //right paw
    fill (143,123,77);
    stroke('black');
    ellipse(width / 2 - bodyW * 0.20 + armWRight + 120, height / 2 + 230, armWRight+50, armHRight);
    

}
 
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, 300);
    faceHeight = random(200, 400);
    eyeSize = random(10, 50);
    pupilSize = random(5, 15);
    pupilHeight = random(1,20);
    bodyW = random(100,300);
    shirtColor = random(100,500);
    faceColor = random(150,250);
    mouthSize_1 = random(30, 50);
    mouthSize_2 = random(10,30);
    eyebrowS = random(20,80);

    //variable ear sizes
    

}

For this project I just wanted to rely on simple shapes that move together. Since one rudimentary shape is a circle, I ended up making a bear. Next time when I approach a project such as this, I will want to make sure that all components stay flush with one another, despite the random variable change of their sizes.

Alessandra Fleck – Looking Outwards – 02

I find the project, Unnumbered Sparks ,presented at TED2014, by Aaron Koblin particularly inspiring because it takes what is one of the most prominent, yet unseen movements in the modern day, and projects it onto a visual depiction that fills the sky when looked upon from below. Stretching 745 feet across, this piece blanketing above ground takes in cell phone signals to draw and play with the color mapping details being projected onto it. Utilizing the Javascript interactive rendering API called WebGL, the user’s motion is able to come to life as it is rendered through shaders and javascript. To get the drawings/movement-associated art projected onto the “blanket,” websockets pass the data from a mobile to rendering browser. Just as the work flows along the lines of bringing a community together, it also does so in a similar language in the way the algorithms utilized connect to one another. What makes this work so interesting is that it is a piece of art that inspires those who are viewing the sculpture to also engage in art. In other words, an art piece that leaves room to branch out and become even more elaborate with the viewers art included into the piece. As a common theme of technological developments today is about sharing information across a larger span, it is neat to see such theme come out in a semi tangible application.

Alessandra Fleck – Looking Outwards – 01

One project that I think communicates effective interaction between the user and program, while still maintaining a prominent message, is the “Funky Forest” installation in the Singapore Art Museum. Funky Forest is an interactive ecosystem that grows and moves to the motions of those who visit and interact with it. It is part of a series of interactive play spaces that has been developed over the course of a couple of years. The installation utilizes projections and animations, then takes it to the next step by allowing the visitor have a kinetic impact on the projections movement. Those who interact with the installation have the chance to impact the forest by planting seeds, and direct water with some of the tangible items on set such as pillow logs.

The interactive projection begins to insert itself onto the floor, as children play with the flow of the water coming off the waterfall. 

Created by Design/IO, Funky Forest utilizes a stereoscopic camera/ kinect to detect the movements of those visiting the installation and send the information to a software program the firm developed that translates the action of the visitor to the motion of the animation.

In the image above, children play with the projection on the wall. As they wave their arms, trees begin to grow. 

Beyond just being an installation that is whimsical and intriguing for those who visit it, the design and bright animations seek to bring to light the idea of environmental conservation and growth. I think that this project hold much potential in transforming the concept of the modern day classroom, into a 360 degree interactive space, where the interactivity and responsiveness of the program influence/teach the student.

Find out more about the project at the link below:

http://design-io.com/projects/FunkyForestSAM/

https://www.commarts.com/features/design-i-o

 

 

Alessandra Fleck-Project 01-Face

sketch

//Name: Alessandra Fleck 
//Class Section : B
//Email: afleck@andrew.cmu.edu
//Project-01
function setup() {
    createCanvas(600, 600);
    background(146,199,159);
    noStroke();

    //text("p5.js vers 0.5.12 test.", 10, 15);
}

function draw() {

	//face shape
	beginShape();
		fill(225,225,225);
		vertex(319, 0);
		vertex(333, 96);
		vertex(308, 261);
		vertex(289, 363);
		vertex(270, 400);
		vertex(176, 505);
		vertex(124, 537);
		vertex(42, 545);
		vertex(0, 539);
		vertex(0, 0);
		endShape(CLOSE);

	//eye
	beginShape();
		fill("white");
		vertex(275, 128);
		vertex(244, 136);
		vertex(216, 139);
		vertex(160, 132);
		vertex(154, 122);
		vertex(176, 107);
		vertex(210, 94);
		vertex(256, 106);
		endShape(CLOSE);

	

	//tri 01
	beginShape();
		fill(183,183,183);
		vertex(319, 0);
		vertex(256, 106);
		vertex(210, 94);
		vertex(206, 0);
		endShape(CLOSE);
	 //tri 02
	 beginShape();
	 	fill(172,172,172);
	 	vertex(275, 128);
	 	vertex(224, 136);
	 	vertex(216, 139);
	 	vertex(250, 250);
	 	endShape(CLOSE);
	 //tri 03
	 beginShape();
	 	fill(203,202,202);
	 	vertex(224, 136);
	 	vertex(216, 139);
	 	vertex(160, 132);
	 	vertex(250,250);
	 	endShape(CLOSE);

	//lips
	beginShape();
		fill(203,87,136);
		vertex(145, 400);
		vertex(127, 422);
		vertex(97, 440);
		vertex(0, 421);
		vertex(0, 396);
		vertex(19, 400);
		vertex(60, 414);
		endShape(CLOSE);
	beginShape();
		fill(2244,195,216);
		vertex(0, 366);
		vertex(36, 352);
		vertex(61, 361);
		vertex(81, 358);
		vertex(103, 364);
		vertex(146, 395);
		vertex(104, 403);
		vertex(67, 394);
		vertex(27, 393);
		vertex(0, 391);
		endShape(CLOSE);

	//ear
	beginShape();
		fill(183,183,183);
		vertex(306, 256);
		vertex(346, 229);
		vertex(377, 160);
		vertex(398, 0);
		vertex(320, 0);
		endShape(CLOSE);

	//contour
	beginShape();
		fill(112,112,112);
		vertex(301, 0);
		vertex(319, 0);
		vertex(333, 96);
		vertex(308, 261);
		vertex(289, 363);
		vertex(270, 400);
		vertex(250, 250); // cheek insert
		vertex(275, 128);
		endShape(CLOSE);

	//pupil
		fill("white");
		ellipse(210, 118, 50, 40);
		fill("grey");
		ellipse(210, 110, 40, 30);
		fill("black");
		ellipse(210, 118, 30, 30);
		fill("white");
		ellipse(205, 112, 20, 20);

	//nose
		beginShape();
			fill(203,202,202);
			vertex(0, 298);
			vertex(48, 304);
			vertex(64, 308);
			vertex(86, 302);
			vertex(120, 304);
			vertex(129, 283);
			vertex(123, 243);
			vertex(121, 133);
			vertex(42, 122);
			vertex(10, 245);
			endShape(CLOSE);
		beginShape();
			fill(112,112,112);
			vertex(64, 308);
			vertex(80, 280); // tip
			vertex(86, 302);
			endShape(CLOSE);
		beginShape();
			fill(144,143,143);
			vertex(80, 280);
			vertex(108, 263);
			vertex(118, 238);
			vertex(122, 137);
			vertex(213, 42);
			vertex(293, 48);
			vertex(264, 29);
			vertex(192, 36);
			vertex(109, 86);
			vertex(94, 124);
			vertex(83, 242);
			vertex(50, 292);
			vertex(48, 304);
			vertex(64, 308);
			endShape(CLOSE);
		beginShape();
			fill(155,152,152);
			vertex(24, 170);
			vertex(38, 124);
			vertex(0, 64);
			vertex(0, 125);
			endShape(CLOSE);
		beginShape();
			fill(173,172,172);
			vertex(38, 124);
			vertex(10, 244);
			vertex(30, 270);
			vertex(48, 240);
			vertex(54, 130);
			endShape(CLOSE);

		//neck
		beginShape();
			fill(155,152,152);
			vertex(216, 559);
			vertex(212, 464);
			vertex(175, 509);
			vertex(118, 540);
			vertex(41, 543);
			vertex(0, 600);
			endShape(CLOSE);

		//cheek shade
		beginShape();
		fill(220,220,220);
		vertex(250, 250);// cheek insert
		vertex(120, 304); 
		vertex(129, 283);
		vertex(123, 243);
		endShape(CLOSE);

		//cheek shade 2
		beginShape();
		fill(198,199,197);
		vertex(250, 250);// cheek insert
		vertex(120, 304); 
		vertex(145, 400);
		vertex(270, 400);
		vertex(176, 505);
		endShape(CLOSE);
		//cheek shade 2
		beginShape();
		fill(198,199,197);
		vertex(250, 250);// cheek insert
		vertex(120, 304); 
		vertex(145, 400);
		vertex(270, 400);
		vertex(176, 505);
		endShape(CLOSE);
		//cheek shade 3
		beginShape();
		fill(198,199,197);
		vertex(308, 261);
		vertex(289, 363);
		vertex(270, 400);
		vertex(127, 422);
		 // cheek insert
		vertex(200, 400);
		vertex(275, 128); // eye edge
		endShape(CLOSE);

	//Embellishments

	strokeWeight(2.5);
	strokeCap(ROUND);
	line(0, 0, 109, 86);
	line(0, 600, 97, 440);

	fill("white");
	stroke(0, 0, 0);
	bezier(200, 200, 100, 100, 90, 90, 15, 80);

	//hair
	fill(91,76,40);
	stroke(0, 0, 0);
	bezier(400, 200, 400, 400, 500, 300, 350, 400);
	fill(91,76,40);
	
	stroke(0, 0, 0);
	bezier(400, 200, 400, 400, 300, 300, 300, 500);
	fill(150,126,69);
	stroke(0, 0, 0);
	bezier(400, 200, 600, 10, 300, 150, 200, 0);
	fill(120,114,97);
	stroke("brown");
	bezier(300, 0, 600, 10, 200, 150, 100, 0);
	fill(120,114,97);
	stroke(0, 0, 0);
	bezier(300, 0, 600, 10, 300, 50, 400, 500);




	
	
	

	
	


}

 

In this project I wanted to create an abstracted face with vertex points that all connect to one another. Through the course of creating the face however, relying on a effective connectivity program that could input the connection between points at random would be more efficient than manually inputing every value.