Connie – LookingOutwards – 03

A project that I found particularly inspiring was “Sketch Furniture” (beginning in 2005) by FrontDesign.

The generative furniture works that were created by FrontDesign artists. (Image Credit: Front)

I found this project to be intriguing for what the artists might have been aiming to convey; that is, that their project follows the complete process of creation: the birth of an idea or sketch, the execution of the movements tracked by the Motion Capture, and the final product materialized in the real world via Rapid Prototyping. It surprises me that this project is over 10 years old and it boggles my mind the kind of potential we have today when it comes to 3D-printing (especially with regards to better, more efficient, and more optimized programs and technological advances that permeate into other fields such as bioengineering, architecture, and fashion.)

As for algorithms, the programming involved with the Motion Capture must be able to track and follow the strokes of the artists as they sketch while being able to maintain that form, save it within a 3D print file, and consequently materialize the sketch accurately using a machine to provide Rapid Prototyping.

Note: Unlike some other projects, the exact process and/or code and exact machinery involved with the project was not disclosed.

dnam-Looking Outwards-03

Daniel Omar with a 3D-printed prosthetic arm

Technology has developed greatly in the medical field. Computation fabrication has allowed a new door for prosthetic limbs. Ian Birrell, in the Guardian Article written in February 2017, discusses the story of Ivan Owen, an artist who helped others by creating 3D models of prosthetics. One of the story shared was about Liam, a five-year old with missing fingers. While Owen knew he could make the prosthetics fairly easily, the concern of Liam’s rapid growth bothered him. Therefore, Owen made a 3D prosthetics model that could be resized and reprinted whenever needed. This allows Owen to always change the fit of the prosthetics as needed, as well as be able to produce it in a cheaper method than hand creating the object himself. Computational fabrication has allowed for more people to have access to prosthetics, helping those in need.

nahyunk1-Looking Outwards 03


The project that I’ve come up with is called Light Barrier by Kimchi and Chips.
The reason why I admire this project is because of its use of diverse mediums and the usage of algorithmic functions to create shapes that suspend in the air. The combination of light and water and the usage of mirrors to reflect the water that shine off through light seemed to be a challenging but very successful way of making an artwork so mystical and precisely calculated. The algorithm, which doesn’t seem so obvious at first, is the set of times in which the light, the mist, and the mirror goes into function all at once, thus creating the artwork of suspending shapes and vanishing altogether as a whole. The shape thereby forms with structure and doesn’t fall into pieces.

http://www.kimchiandchips.com/#lightbarrier

‘The artwork was performed at New Media Night Festival in Russia, 2014. Composed in a room full of mist with mirrors, as light appears in a series of repeated patterns, the artwork creates a series of structured shapes and vanishes as each set finishes in the algorithm’.

Jonathan Perez Looking Outwards 2

Sands of Changes, Jean Pierre Hebert, 2005

This week, I came across a generative piece called Sands of Changes by Jean Pierre Hebert. At first glance, I was a bit confused: how could this be a generative piece done by a program? The piece is done with real sand, actually using a computerized metal ball to roll on top of the sand to create minuscule lines.

sands

Hebert here emulates the Zen garden style, giving the piece a very calming and centering aesthetic. I truly admire the way in which Hebert uses a material so susceptible to the forces of nature and chance with something as exact and calculated as an algorithm. It almost seems to me that to get the full artistic value of this piece, one would have to watch the metal ball etch out the entire thing, witnessing the interaction of these two disparate elements.

Jonathan Perez Project 2

sketch

var faceWidth = 250
var faceHeight = 300
var cheekWidth = 13*faceWidth/12
var smile = 10
var smileWidth = 7*faceWidth/12
var smileHeight = 2*faceHeight/32
var blushWidth = 20
var blushHeight = 20
var blushDepth = 0
var dimple = 1
var eyeLX = 240 - faceWidth/4
var eyeRX = 240 + faceWidth/4
var eyeLY = 320 //height/2
var eyeRY = 320
var sunglasses = 0
var glassR = 0
var glassG = 0
var glassB = 0
var hairWidth = 100
var hairHeight = 400

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

function draw() {
    background(164, 230, 239);

    //hair
    fill(0);
    ellipse(width/2, height/2 - hairHeight/4, hairWidth, hairHeight);

    //head
    noStroke();
    fill(255, 220, 200);
    ellipse(width/2, height/2 + faceHeight/4, cheekWidth, faceHeight/2);//cheeks
    ellipse(width/2, height/2, faceWidth, faceHeight); //face

    //mouth
    var mouthHeight = height/2 + faceHeight/4
    noFill()
    stroke(0);
    strokeWeight(2);
    if(smile > 20) {
        arc(width/2, height/2 + faceHeight/4, smileWidth, smileHeight, 0, PI); //smile
    }
    else if(smile < 10) {
        arc(width/2, height/2 + faceHeight/4, smileWidth, smileHeight, PI, 0); //frown
    }
    else {
        line(width/2 - smileWidth/2, mouthHeight, width/2 + smileWidth/2, height/2 + faceHeight/4); //straight mouth
    }

     //dimples
    noFill()
    stroke(0);
    strokeWeight(2);
    if(dimple > .5) {
        arc(width/2 - (smileWidth/2 + 12.5), mouthHeight, 25, 30, 3*PI/2, PI/2); //left dimple
        arc(width/2 + (smileWidth/2 + 12.5), mouthHeight, 25, 30, PI/2, 3*PI/2); //right dimple
    }

    //blush
    noStroke();
    fill(254 + blushDepth, 118 + blushDepth, 145 + blushDepth);
    ellipse(width/2 - 7*faceWidth/16, height/2 + 5*faceHeight/32, blushWidth, blushHeight) //left blush
    ellipse(width/2 + 7*faceWidth/16, height/2 + 5*faceHeight/32, blushWidth, blushHeight) //right blush

    //eyes
    if(sunglasses > .5) {
    stroke(0);
    strokeWeight(2);
    fill(glassR, glassG, glassB);
    ellipse(width/2 - 50, height/2, 70, 70); //left frame
    ellipse(width/2 + 50, height/2, 70, 70); //right frame
    noFill();
    arc(width/2, height/2, 30, 30, PI, 0); //nose bridge frame
    line(width/2 - 85, height/2 - 5, width/2 - faceWidth/2, height/2 - 20); //left ear frame
    line(width/2 + 85, height/2 - 5, width/2 + faceWidth/2, height/2 - 20); //right ear frame
    }
    else {
    noStroke();
    fill(0);
    ellipse(eyeLX, eyeLY, 20, 20); //left eye
    ellipse(eyeRX, eyeRY, 20, 20); //right eye
    }
}


function mouseClicked() {
        faceWidth = random(200, 300);
        faceHeight = random(260, 300);
        cheekWidth = random(2*faceWidth/3, 13*faceWidth/12);
        smile = random(30);
        smileWidth = random(faceWidth/4, 7*faceWidth/12);
        smileHeight = random(faceHeight/16, faceHeight/4);
        blushDepth = random(-40, 50);
        blushWidth = random(20, 40);
        blushHeight = random(20, 40);
        dimple = random(1)
        eyeLX = random(240 - 3*faceWidth/8, 240 - faceWidth/8); //width not declared yet, so used numerical value 240 instead
        eyeRX = random(240 + faceWidth/8, 240 + 3*faceWidth/8);
        eyeLY = random(320 - 2.5, 320 + 2.5); //height not declared yet, so used numerical value 320 instead
        eyeRY = random(320 - 2.5, 320 + 2.5);
        sunglasses = random(1)
        glassR = random(255);
        glassG = random(255);
        glassB = random(255);
        hairWidth = random(100, 400);
        hairHeight = random(200, 400);


}

This project made me skeptical at first… When I first heard that we would be using variables to “randomly” generate faces, I thought that the faces would be just that. Random. Impersonal. Throughout the process — and certainly at the end — I found this not to be true though. Even though when I click the mouse, yes, a bunch of variables are randomly assigned values, I found that every generated face still represented me as the artist and programmer. The style of the artist is evident, and that is something that I did not expect. Each of these faces reflect a bit of my comedic and goofy nature (especially with the colored, circular sunglasses).

 

Nayeon-Looking Outwards 02

Quayola is a visual artist based in London. He creates digital sculptures and installation arts that consist of unpredictable collisions.

“Iconographies #20” ‘Tiger Hunt’ after Rubens 2014

I love his work that he create algorithm to form various sculpt with combine old and new, real and artificial, time and space using delaunay triangulation algorithm. Delaunay triangulation which he uses to generate his work is new trend for modern arts and quite many modern artist use computer algorithm to investigate new way of using color and shapes. Here is a image of processing digital work out of classic art piece.

“Topologies” Immacolata Concezione 2010

 

I admire his work as he uses classic arts and old beauty into new born beauty. Top of that, he creates immersive audiovisual installation to intensify his work in exhibitions. He is not only digital media artist, but installation artist using audio and visual to create whole space surrounding the art. The matter of size in a space that he gives to audience have them shock and amaze. He said this is not just media, but the project bridge a communication between people and space.

“Captives” Sculpture Triptych 2013

 

Quayola web site

hannajan-LookingOutwards-02

                           Video above depicts demonstration of The Classyfier

I reviewed some of the recommended blogs and websites on generative art and stumbled upon one called The Classifier (2017) by Benedict Hubener, Stephanie Lee, and Kelvyn Marte. It is a table with AI that detects the situation and the sounds of beverages being consumed to choose music that fits the situation accordingly.

The algorithm that generates this art, takes into account the different sound patterns that are characteristic for each drink from pre—trained examples. The creator’s artistic sensibilities are manifest in the algorithm through how well each situation or drink type is detected and the type of music that then ensues to fill the ambiance.

                                               Pictured above: The Classifier

I chose to review this particular art piece because I think it is one that was created for a useful purpose. It can be used to elevate relaxing, improve socializations, and ease events that take place in everyday citizens’ lives. It reminded me that the skills I learned in this class can be used in a similarly useful way. Also, for future projects, I can think more about the usability of my designs and codes for the user and their experiences.

rgroves – project02 – Variable Face

sketch

//Rebecca Groves
//Section B
//rgroves@andrew.cmu.edu
//Week 02 Variable Face

//color of fur
var reds = [60, 110, 184, 220]; 
var r = 60;
var b = 60;
var g = 60;
//color of chin
var chinvariables = [1, 2, 3, 4, 5];
var v = 1;
//color of eyes
var eyereds = [210, 194, 253, 147, 152];
var eyer = 210;
var eyeb = 203;
var eyeg = 91;
//size of eyes
var eyeseperation = 230;
var eyewidth = 60;
var eyeheight = 45;
var pupilwidth = 10;
var eyecurve = 30
//size of nose
var nosemultiplier = 1;
var jowelwidth = 90;
var jowelheight = 75;
//right mustache
var rtop = 365;
var rbottom = 400;
var rlength = 70;
//left mustache
var ltop = 340;
var lbottom = 370;
var llength = 50;


function setup() {
    createCanvas(600, 600);
    background(222,226,222);
}

function draw() {
	//headshape
	noStroke();
	fill(r, b, g);
	if (r == 60){
		b = 60;	
		g = 60;
	} else // blue grey
	if (r == 110){
		b = 124;
		g = 138;
	} else // orange
	if (r == 184){
		b = 115;
		g = 55;
	} else 
	if (r == 220){
		b = 220;
		g = 220;
	}
	beginShape();
	vertex(150, 600);
	vertex(150, 90);
	vertex(220, 180);
	vertex(600 - 220, 180);
	vertex(600 - 150, 90);
	vertex(600 - 150, 600);
	endShape();

	//eyes
	ellipseMode(CENTER);
	fill(eyer, eyeb, eyeg);
	if (eyer == 210){ // yellow green
		eyeb = 203;	
		eyeg = 91;
	} else // turquoise
	if (eyer == 194){ 
		eyeb = 248;
		eyeg = 182;
	} else // yellow
	if (eyer == 253){ 
		eyeb = 212;
		eyeg = 37;
	} else // brown
	if (eyer == 147){
		eyeb = 66;
		eyeg = 38;
	} else // blue
	if (eyer == 152){
		eyeb = 186;
		eyeg = 205;
	}
	rectMode(CENTER);
	rect(eyeseperation, 290, eyewidth, eyeheight, 0, eyecurve, 0, eyecurve);
	rect(600- eyeseperation, 290, eyewidth, eyeheight, eyecurve, 0, eyecurve, 0);
	//pupils
	fill(60);
	ellipse(eyeseperation, 290, pupilwidth, eyeheight);
	ellipse(600 - eyeseperation, 290, pupilwidth, eyeheight);
	//eye highlight
	fill(220);
	ellipse(eyeseperation + 10, 290 - (eyeheight * .15), 20, 15);
	ellipse(600 - eyeseperation + 10, 290 - (eyeheight * .15), 20, 15)

    //ears
    noStroke();
    fill(r - 50, b - 70, g - 50);
    triangle(150, 90 + 20, 220 - 20, 180, 150, 180);
    triangle(600 - 150, 90 + 20, 600 - (220 - 20), 180, 600 - 150, 180);

    //chin
    if (v == 4) { //make chin occasionally white
    	fill(230);
    	ellipse(300, 370 + (jowelheight * .4), 55, 55); 
    } else {
    	fill(r - 50, b - 70, g - 50);
    	ellipse(300, 370 + (jowelheight * .4), 55, 55);
    }
    

    //jowels
    if (v == 4) { //make jowels occasionally solid
    	fill(r, b, g);
    	ellipse(300 - 35, 370, jowelwidth, jowelheight);
    	ellipse(300 + 35, 370, jowelwidth, jowelheight);
    } else {
    	fill(230);
    	ellipse(300 - 35, 370, jowelwidth, jowelheight);
    	ellipse(300 + 35, 370, jowelwidth, jowelheight);
    }
    //left mustache
	noStroke();
	fill(r, b, g);
	ellipseMode(CORNERS);
	ellipse(300, ltop, 300 - llength, lbottom);
	//right mustache
	ellipse(300, rtop, 300 + rlength, rbottom);

    //nose
	fill(211, 177, 160);
	rect(300, 325, 50 * nosemultiplier, 15 * nosemultiplier, 5);
	triangle(300 - (20 * nosemultiplier), 320, 300 + (20 * nosemultiplier), 320, 300, 300 + (50 * nosemultiplier));
	strokeWeight(3);
	stroke(156, 102, 81);
	line(300, 300 + (50 * nosemultiplier), 300, 335)
}

function mousePressed(){
	reds = [60, 110, 184, 220];
	r = random(reds);
    eyereds = [210, 194, 253, 147, 152];
    eyer = random(eyereds);
    chinvariables = [1, 2, 3, 4, 5];
    v = random(chinvariables);
    eyeseperation = random(210, 260);
    eyewidth = random(45, 70);
    eyeheight = random(20, 50);
    pupilwidth = random(5, 20);
    eyecurve = random(20, 50);
    nosemultiplier = random(.75, 1.25);
    jowelwidth = random(70, 140);
    jowelheight = random(65, 110);
    rtop = random(370, 370 - (jowelheight * .5));
    ltop = random(370, 370 - (jowelheight * .5));
    rbottom = rtop + random(20, 70);
    while (rbottom > (370 + (jowelheight * .5))){
    	rbottom = rtop + random(20, 70);
    }
    lbottom = ltop + random(20, 70);
    while (lbottom > (370 + (jowelheight * .5))){
    	lbottom = ltop + random(20, 70);
    }
    rlength = (30, jowelwidth - 40);
    llength = (30, jowelwidth - 40);
}

For this project I was inspired by my childhood cats. They were both tuxedo cats, and most people could only tell them apart by the markings around their mouths – one had a little black mustache and one had a white chin. Here are pictures of them:

1/5 of the time it generates a cat with a solid color face and a white chin and 4/5 of the time it generates a cat with a uniquely shaped mustache. The fur color, eye color and shape, and nose size also change.

Looking Outwards 02 – Yugyeong Lee

As use of algorithm and integration of parametric design are deeply rooted into the design process in architecture, Aryan Shahabian, a researcher at the University of Applied Arts in Vienna, developed an algorithm that can create over a billion distinct combinations of interlocking 3D objects inspired by Japanese joineries. Japanese architecture and contrstruction, from its past, has been known for its complex wood joineries that interlock and form bonds without the use of nails, screws or adhesives. This development of the new algorithm open up opportunities to allow artists to create free from structure with no reliance of use of nails and generate art through mastering complex wood joineries. This program would also naturally lead to easier fabrication when combined with machines such as laser cutters, CNC machines, and 3D printing. As an architecture student who have experienced several projects dealing with joinery system, this program would definitely help young architects like our selves to understand these complex joineries better as well as integrate it into the design process to allow flow of variety of different, unique forms.

link to article: http://www.archdaily.com/874153/this-satisfying-algorithm-combines-japanese-inspired-joints-to-generate-any-form

Project 02 – Yugyeong Lee

sketch

//Yugyeong Lee
//Section B
//yugyeonl@andrew.cmu.edu
//Project-02

var colorR = 100;
var colorG = 150;
var faceWidth = 200;
var faceHeight = 200;
var eyeSize = 20;
var blushSize = 35;
var noseWidth = 10;
var noseHeight = 10;
var mouthWidth = 70;
var mouthHeight = 45;
var colorR2 = 100;
var hairDecorationType = 1;

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

function draw() {
	//Background 
    background(colorR, colorG, 200);
	noStroke();
    fill(255);
    ellipse(width/2, height/2, 300, 350);

    //Face
    fill(242, 214, 180);
    ellipse(width/2, height/2, faceWidth, faceHeight);
    ellipse(width/2+100, height/2, 40, 40);
    ellipse(width/2-100, height/2, 40, 40);

    //Eyes
    var eyeLX = width/2-faceWidth*0.18;
    var eyeRX = width/2+faceWidth*0.18;
    fill(255);
    ellipse(eyeLX, height/2, eyeSize+12, eyeSize+12);
    ellipse(eyeRX, height/2, eyeSize+12, eyeSize+12);
    fill(0);
    ellipse(eyeLX+2.5, height/2, eyeSize, eyeSize+3);
    ellipse(eyeRX-2.5, height/2, eyeSize, eyeSize+3);
    fill(255);
    ellipse(eyeLX+3, height/2, eyeSize-15, eyeSize-15);
    ellipse(eyeRX-3, height/2, eyeSize-15, eyeSize-15);

    //Blush
    var blushLX = width/2-faceWidth*0.32;
    var blushRX = width/2+faceWidth*0.32;
    fill(250, 185, 225, 150);
    ellipse(blushLX, height/2+faceHeight*0.15, blushSize*1.2, blushSize); 
    ellipse(blushRX, height/2+faceHeight*0.15, blushSize*1.2, blushSize);

    //Hair
    stroke(0);
    strokeWeight(5);
    noFill();
	beginShape();
	curveVertex(width/2, height/2-100);
	curveVertex(width/2, height/2-100);
	curveVertex(width/2-15, height/2-125);
	curveVertex(width/2-15, height/2-135);
	curveVertex(width/2-10, height/2-145);
	curveVertex(width/2, height/2-150);
	curveVertex(width/2+20, height/2-140);
	curveVertex(width/2+10, height/2-130);
	curveVertex(width/2+10, height/2-130);
	endShape();

	//Nose
    var noseX = width/2
    var noseY = height/2+faceHeight*.12
    stroke(150, 120, 90, 100);
    strokeWeight(3);
    noFill();
    arc(noseX, noseY, noseWidth, noseHeight, PI, TWO_PI);

    //Mouth
	fill(222, 86, 88);
	noStroke();
	arc(width/2, height/2+faceHeight*.2, mouthWidth, mouthHeight, TWO_PI, PI);

    //Tooth
	fill(255);
    strokeWeight(1);
	rect(width/2-.2*mouthWidth, height/2+40, .2*mouthWidth, .2*mouthHeight);
	rect(width/2+1, height/2+40, .2*mouthWidth, .2*mouthHeight);

	hairDecoration();
}

function ribbon() {
	//Ribbon
	fill(colorR2, 100, 200);
	triangle(width/2, height/2-100, width/2+40, height/2-70, width/2+40, height/2-130);
	triangle(width/2, height/2-100, width/2-40, height/2-70, width/2-40, height/2-130);
	fill(colorR2-50, 100, 200);
	ellipse(width/2, height/2-100, 25, 25);
}

function hairTie() {
	//Hair Tie
	fill(colorR2, 200, 100);
	ellipse(width/2-16, height/2-100, 35, 35);
	ellipse(width/2+16, height/2-100, 35, 35);
}

function hairDecoration() {
    if (hairDecorationType === 1) {
        ribbon();
    }
    else if (hairDecorationType === 2) {
        hairTie();
    }
}

function mousePressed() {
    colorR = random(190, 255);
    colorG = random(0, 190);
    eyeSize = random(15, 30);
    blushSize = random(20, 40);
    noseWidth = random(10, 17);
    noseHeight = random(5, 10);
    mouthWidth = random(40, 80);
    mouthHeight = random(40, 60);
    colorR2 = random(0, 255);
    hairDecorationType = Math.floor((random()*2)+1);
}

I wanted to create an interactive baby face with changing eyeSize, noseSize, blushSize, mouthSize, and hairDecoration. Some of the elements such as hair and face, remain the same throughout.