Min Jun Kim- Looking Outwards 3

Artwork by Torolf Sauermann.

This week’s topic is about computational fabrication. While doing some research, I came across an artist by the name of Torolf Sauermann. He creates a lot of unique sculptures that have been 3D printed as the ones shown above. He creates fascinatingly impossible figures that probably couldn’t be constructed by a human alone. What I admire the most about his artwork is that it endlessly pushes the boundaries of the 3D world. The artwork presented above has the characteristics of a Möbius strip which is a ring that only has one side. I admire the fact at how intricate it is and how insanely difficult it would be to create without the usage of a 3d printer.
As for how it was generated, I think that it was definitely modeled by a 3d rendering software. I assume that he had a simpler version of the model, like a skeleton or some lines, that were filled in and made more intricate over time through the usage of algorithms. I think the artist’s genius to create such forms in his mind simply manifested into material form.

Below are some of his other artworks:

Another artwork by sauermann

sauermann.

Some links to the sources of the art found online:
http://www.evolution-of-genius.de/gallery/default1.htm
https://imaginary.org/users/torolf-sauermann
https://viz.arch.tamu.edu/

Deluna-Looking Outwards-02

I had seen Roman Verostko’s work before and it has always been something that’s intrigued me. His works are obviously artificially made but the physicality of the actual work and the materials that they are made with create pieces that have a seemingly contradictory nature. By 1987, developed software that creates generative drawings. These artworks, which he has coined as algorist art, uses a step by step procedure to perform a specific task.
His software controls a machine arm called the pen plotter which creates his algorithmic drawings. He sees this arm as an extension of his own drawing arm. His earliest use of electronics in his art was in the sixties with his experimentation with audio visual programs.

http://dam.org/artists/phase-one/roman-verostko

Project 02- Variable Faces, Blowing bubbles

sketch

/* Samantha Ho
Section E 
sch1@andrew.cmu.edu
Project-02*/

var eyeSize = 20;
var faceW = 100;
var faceH = 150;
var textPlacement =100;
var textPlace =150;
var posx = 400;
var posy =200;
var mouthx = 320;
var mouthy = 276;
var mouthw = 100;
var mouthh = 150;
var mouthoutw = 100;
var mouthouth = 150;
var bubbax = 400;
var bubbay =200;
var bubbbx = 400;
var bubbby =200;

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

}

function draw() {
    background(230,230,230);
    //face fill
    fill(230,240,250);
    noStroke();
    ellipse(width / 2.1, height / 2.4, faceW+100,  faceH+60);   
    //face
    strokeWeight(1);
    stroke(60,60,60);
    noFill();
    ellipse(width / 2, height / 2.4, faceW+100,  faceH+60);   
    //mouth
    noStroke();
    fill(200,0,0);
    ellipse(mouthx,mouthy, mouthw/1.6,  mouthh/26);  
    
    noFill();
    stroke(20,20,20);
    ellipse(mouthx,mouthy, mouthoutw/1.6,  mouthouth/26);  
    
    fill(200,0,0);
    noStroke();
    var eyeLX = width / 2 - faceW * 0.45;
    var eyeRX = width / 2 + faceW * 0.45;
    ellipse(eyeLX, height/2, eyeSize, eyeSize);
    ellipse(eyeRX, height/2, eyeSize, eyeSize);
    
    //bubble
    strokeWeight(5);
    stroke(216,216,216);
    fill(250,250,250);
    ellipse(posx+16,posy+76, faceW/2,  faceH/3);
    noStroke();
    fill(230,230,230);
    ellipse(posx+13, posy+80, faceW/2.5,  faceH/3.5);
    stroke(20,20,20);
    strokeWeight(1);
    noFill();
    ellipse(posx+18, posy+80, faceW/1.8,  faceH/2.6);
    
    //bubblea
    stroke(20,20,20);
    strokeWeight(1);
    noFill();
    ellipse(bubbax+18, bubbay+80, faceW/8,  faceH/10);
    //bubbleb
    stroke(20,20,20);
    strokeWeight(1);
    noFill();
    ellipse(bubbbx+18, bubbby+80, faceW/8,  faceH/9);
    
    //bubblewand
    strokeWeight(6);
    stroke(200,0,0);
    noFill();
    ellipse(420, 280, faceW/3.6,  faceH/4);
    rect(420, 301, faceW/70,  faceH/4);
    
    //text try
    noStroke();
    fill(216,216,216);
    textSize(50);
    textFont('Helvetica');
    text('bubbles', textPlacement,100);
    textPlacement = textPlacement +2;
    if(textPlacement>640){
       textPlacement = -350    };
    
    fill(219,216,216);
    textSize(50);
    textFont('Helvetica');
    text('bubbbbles', textPlace,100);
    textPlace = textPlace +6;
    if(textPlace>640){
        textPlace = -350    };
    angleMode(DEGREES);

}

function mousePressed() {
    mouthx= random(320,360);
    mouthw= random(100,40);
    mouthh= random(150,300);
    mouthoutw= random(90,50);
    mouthouth= random(140,400);
    posx = random(400,460);
    posy = random(220,40);
    bubbax = random(400,480);
    bubbay = random(220, 140);
    bubbbx = random(410,500);
    bubbby = random(230, 130);
}

I enjoyed playing around with the variables and I’m excited by the idea of computational animation. I played around with words and strokes, but couldn’t quite nail down how to do opacities on js. On the p5-js references page, the closest thing I could find was blendMode. That being said, I’m looking forward to exploring this further.

Katie Polhemus Project 02 variables face

pup face

/*
Katie Polhemus
Section A
kpolhemu@andrew.cmu.edu
project-02
*/

//pup face variables

	//background colors
var cR = 230;
var cG = 114;
var cB = 154;
	//ears
var earsSize = 150
	//head
var headWidth = 320;
var headHeight = 240;
	//eyes
var eyesSize = 30
	//snout
var snoutWidth = 350;
var snoutHeight = 180;
	//nose
var noseSize = 50
	//nose line
var noseLine = 10
	//mouth
var mouthSize = 50

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

function draw() {
	noStroke();
	background(cR, cG, cB);

	//left ear
	fill(145, 130, 99);
	ellipse(width/2 - noseSize * 2, height/2 + noseSize, earsSize, earsSize * 2);

	//right ear
	fill(145, 130, 99);
	ellipse(width/2 + noseSize * 2, height/2 + noseSize, earsSize, earsSize * 2);

	//head
	fill(154, 142, 109);
	ellipse(width/2, height/2, headWidth, headHeight);

	//eyes
	fill(0);
	var eyeLX = width / 2 - headWidth * 0.25
	var eyeRX = width / 2 + headWidth * 0.25
	ellipse(eyeLX, height/2 - eyesSize, eyesSize, eyesSize * 2);
	ellipse(eyeRX, height/2 - eyesSize, eyesSize, eyesSize * 2);

	//snout
	fill(74, 61, 35);
	ellipse(width/2, height/2 + noseSize, snoutWidth, snoutHeight);

	//nose
	fill(0);
	ellipse(width/2, height/2, noseSize, noseSize);

	//nose line
	stroke(0);
	strokeWeight(noseLine);
	line(headWidth, headHeight, headWidth, headHeight + eyesSize);

	//mouth
	fill(0);
	arc(width/2, height/2 + mouthSize, mouthSize, mouthSize * 2, 0, PI);	

}

function mousePressed() {
	cR = random(210, 250);
	cG = random(100, 130);
	cB = random(130, 170);
	mouthSize  = random(30, 70);
	earsSize = random(130, 170);
	eyesSize = random(25, 40);
}

Initially, my love for dogs motivated me to draw a dog’s face instead of a human’s, and ultimately, I found it much easier to draw a dog’s face than a human’s (based on project-01.) I think dogs can be very expressive, and I tried to convey that with movement of the eyes, ears, and mouth.

Rebecca Kim – Looking Outwards – 02

Jackson Mac Low (1922-2004) used computational methods to create poetry in a sort of “cut out” methodology that contradicted conventions of syntax and structure. He implemented algorithms to create abstract texts–but with intricate craftsmanship. Despite the outward incoherence of his texts, Low maintained aesthetic control–even down to the seconds elapsing between each phrase–with methods mirroring those of a composer. The slight connections between consecutive words are even comparable to Siri’s predictive feature on the keyboard.


Strangely, I felt like I understood the essence of his texts, whether that was the sense he intended for his audience or not. For example, in his poem, “Call Me Ishmael” (1972), he pairs the word “circulation” and “long long” and “coffin” that, to me, conveys the mundane cycle that is life. He–or, his algorithm–incorporates tinges of politics as well, with a name characteristic to a specific culture and the phrases “city a land” and “extremest left.”

poem generated by algorithm

Low and his methods were a perfect manifestation of “first word art”–what he accomplished was revolutionary. He broke the constraints of composition–and even art. A fruitful creative of the 20th century, he also continued to receive prestigious fellowships and awards throughout his career.

Read more about him here:

https://www.poets.org/poetsorg/poet/jackson-mac-low

 

Xindi Lyu-LookingOutwards-02

Giacomo Carmagnola

One of the most intriguing generative artists in my knowledge is the Italian generative artist Giacomo Carmagnola. His produces what is called “glitch art”, which is usually a practice of using digital errors in aesthetic purposes. However, Giacomo Carmagnola, a renowned glitch art artist himself shakes up the field by mixing digital computation with human emulations. His works most often are visually impact-full in the most extraordinary ways, usually portraying a human figure with their face replaced by bleeding pixels. These face-less portraits all seem to be telling their stories even without an expression.

Further description of Carmagnola

Liz Maday looking outwards 2

“Waves” (2016) by Austrian software artist LIA.

The work I chose to examine was “Waves” by Austrian software artist LIA. i was quickly drawn to this work by its peacefulness and calming nature. the sine wave patterns in this work are randomly generated, and don’t repeat, and upon learning this I associated something other than human with its beauty. Humans lack the ability to replicate random patterns, and tend to have flawed conceptions of what is truly “random.” The fact that this consistently random motion could only have been produced by a computer adds an additional level of awe and admiration for the program and artist that produced this installation. It is so enjoyable to just stare at this work and let it mesmerize you, in a way that is only possible through generative code.

 

 

Liz Maday Project 2

sketch lizm

//Elizabeth Maday
//Section A
//emaday@andrew.cmu.edu
//Project-02

var eyeSize = 20;
var faceWidth = 100;
var faceHeight = 100;
var eyeBrowHeight = 0;
var mouthWidth = 27;
var bodySize = 114; 

var a = 3;
var b = 20;
var c = 17;
var d = 15;
var e = 28;

var r = 203;
var g = 129;
var B = 51;



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

function draw() {
    background(255, 173, 184);
    ellipseMode(CENTER);

    //grass
    strokeWeight(2);
    fill(0, 182, 15);
    ellipse(width/2, 480, 900, 250);

    //tail
    strokeWeight(7);
    noFill();
    bezier(width/2 + bodySize/4, height/2 + bodySize/1.4, width/2 + bodySize/1.45, height/2 + bodySize/2.1, width/2 + bodySize/1.3, height/2 + bodySize/4.5, width/2 + bodySize/1.3, height/2 - bodySize/6);

    //body
    strokeWeight(3);
    fill(r, g, B);
    ellipse(width / 2, 340, bodySize, bodySize);

    //front feet
    fill(r, g, B);
    line(width / 2, 397, width / 2, 368);
    line(width / 2 - 15, 397, width / 2 - 15, 368);
    line(width / 2 + 15, 397, width / 2 + 15, 368);
    arc(width / 2 - 15, 397, 30, 30, PI, 0, CHORD);
    arc(width / 2 + 15, 397, 30, 30, PI, 0, CHORD);

    //ears
    fill(r, g, B);
    triangle(width / 2 + (faceWidth * 0.20), height / 2 - (faceHeight * 0.4), width / 2 + (faceWidth * 0.40), height / 2 - (faceWidth * 0.2), width / 2 + (faceWidth * 0.45), height / 2 - (faceHeight * 0.60));
    triangle(width / 2 - (faceWidth * 0.20), height / 2 - (faceHeight * 0.4), width / 2 - (faceWidth * 0.40), height / 2 - (faceWidth * 0.2), width / 2 - (faceWidth * 0.45), height / 2 - (faceHeight * 0.60));

    //head
    fill(r, g, B);
    ellipse(width / 2, height / 2, faceWidth, faceHeight);

    //stripes
    line(width/2, height/2 - faceHeight/2, width/2, height/2 - faceHeight/2.6);
    line(width/2 - 8, height/2 - faceHeight/2, width/2 - 8, height/2 - faceHeight/2.45);
    line(width/2 + 8, height/2 - faceHeight/2, width/2 + 8, height/2 - faceHeight/2.45);

    //eyebrows
    line(width/2 + faceWidth/6, height/2 - eyeSize + eyeBrowHeight, width/2 + faceWidth/3.4, height/2 - eyeSize + eyeBrowHeight);
    line(width/2 - faceWidth/6, height/2 - eyeSize + eyeBrowHeight, width/2 - faceWidth/3.4, height/2 - eyeSize + eyeBrowHeight);

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

    //pupil
    fill(0);
    ellipse(eyeLX, height / 2, eyeSize / 4, eyeSize / 4);
    ellipse(eyeRX, height / 2, eyeSize / 4, eyeSize / 4);

    //nose
    triangle((width / 2) - a, (height / 2) + c, width / 2, (height / 2) + b, (width / 2) + a, (height / 2) + c);

    //whiskers 
    strokeWeight(2);
    line((width / 2) - faceWidth * 0.6, (height / 2) + d, (width / 2) - 9, (height / 2) + 20);
    line((width / 2) - faceWidth * 0.6, (height / 2) + e, (width / 2) - 9, (height / 2) + 23);
    line((width / 2) + 9, (height / 2) + 20, (width / 2) + faceWidth * 0.6, (height / 2) + d);
    line((width / 2) + 9, (height / 2) + 23, (width / 2) + faceWidth * 0.6, (height / 2) + e);

    //mouth
    ellipseMode(CORNER);
    noFill();
    arc(width / 2, (height / 2) + b - 13, mouthWidth, mouthWidth, 0, PI);
    arc((width / 2) - mouthWidth, (height / 2) + b - 13, mouthWidth, mouthWidth, 0, PI);    

    //twitching whiskers
    if (mouseIsPressed) {
        d = 10;
        e = 33;
    } else {
        d = 15;
        e = 28;
    }
}

function mousePressed() {
    faceWidth = random(75, 165);
    faceHeight = random(100, 200);
    eyeSize = random(10, 40);
    mouthWidth = random(18, 34);
    bodySize = random(85, 140);
    eyeBrowHeight = random(-5, 5);

    a = random(1, 5);
    b = random(18, 23);
    c = random(13, 19);
    d = random(10, 15);

    r = random(18, 215);
    g = random(110, 160);
    B = random(35, 265);
}

This project was really fun for me to work on because I had to figure out how to do a lot of new commands. Being successful after working on it for a long time was really satisfying. It was also interesting for me to start using more difficult things to work with such as ‘bezier’.

Julie Choi-Project-02-Variable-Face

juliechoi_project_02

// declare character variables
var faceWidth = 130;
var faceHeight = 150;
var eyeSize = 25;
var pupilSize = 10;
var mouthSize = 25;
var tongueSize = 20;
var bodySize = 160;
var legSize = 20;
var blushSize = 20;

// declare other object variable
var discoSize = 85;

// declare color variables
var r = 0;
var g = 0;
var b = 0; 
var skinColor1 = 249; 
var skinColor2 = 205;
var skinColor3 = 161;
var colorA = 0;
var colorB = 0;
var colorC = 0;


function setup() {
    createCanvas(640,480);
 }
function draw() {
	// draw background
    background(r, g, b);

    // draw face + body + legs
    noStroke();
    fill(skinColor1, skinColor2, skinColor3);
    ellipse(width / 2, height / 2, faceWidth, faceHeight);
    fill(249, 205, 161);
    noStroke();
    fill(skinColor1, skinColor2, skinColor3);
    ellipse(width / 2, height / 2 + 100, bodySize, bodySize);
    fill(249, 205, 161);
    noStroke();
    fill(skinColor1, skinColor2, skinColor3);
    ellipse(width / 1.8, height / 1.15, legSize / 1.9, legSize + 30);
    noStroke();
    ellipse(width / 2.2, height / 1.15, legSize / 1.9, legSize + 30);

    // declare eye variables
    var eyeLeft = width / 2 - faceWidth * 0.25;
    var eyeRight = width / 2 + faceWidth * 0.25;
    var pupilLeft = width / 2 - faceWidth * 0.25;
    var pupilRight = width / 2 + faceWidth * 0.25;

    // draw eyes + pupil
    fill(255);
    ellipse(eyeRight, height / 2.25, eyeSize, eyeSize);
    ellipse(eyeLeft, height / 2.25, eyeSize, eyeSize);

    fill(0);
    ellipse(pupilRight, height / 2.2, pupilSize, pupilSize);
    ellipse(pupilLeft, height / 2.2, pupilSize,pupilSize);

    // draw nose with curveVertex
    strokeWeight(1);
    stroke(255);
    noFill(0);
    beginShape();
    curveVertex(width / 1.95, height / 2.3);
    curveVertex(width / 1.95, height / 2.3);
    curveVertex(width / 1.94, height/ 2.1);
    curveVertex(width / 1.9, height/ 2);
    curveVertex(width / 2, height / 2);
    curveVertex(width / 2, height / 2);
    endShape();

    // draw hair strand with curveVertex
    strokeWeight(3);
    stroke('brown');
    noFill(0); //320, 240
    beginShape();
    curveVertex(323, 170);
    curveVertex(323, 170);
    curveVertex(320, 166);
    curveVertex(325, 159);
    curveVertex(323, 153);
    curveVertex(326, 148);
    curveVertex(322, 142);
    curveVertex(324, 135);
    curveVertex(324, 135);
    endShape();

    // draw mouth
    colorA = 243;
    colorB = 159;
    colorC = 76;

    noStroke();
    fill(colorA, colorB, colorB);
    ellipse(width / 2, height / 2 + 20, mouthSize + 5, mouthSize / 2 + 5);

    fill(colorA, colorC, colorC);
    //strokeWeight(5);
	//fillStroke(243, 159, 159);
    ellipse(width / 2, height / 2 + 20, mouthSize + 2, mouthSize / 1.9);

	// draw tongue
    noStroke();
    fill(colorA, colorC, colorC);
    ellipse(width / 2, height / 2 + 25, tongueSize / 1.8, tongueSize + 3);

    // draw blush
    fill('pink');
    strokeWeight(1);
    stroke(255, 255, 255, 50);
    ellipse(width / 2.4, height / 2 + 10, blushSize * 2, blushSize);

    strokeWeight(1);
    stroke(255, 255, 255, 50);
    ellipse(width / 1.7, height / 2 + 10, blushSize * 2, blushSize);

    //draw disco ball shape
    noStroke();
    fill(150);
    rect(315, 0, 15, 25);
    quad(315, 25, 330, 25, 335, 35, 310, 35);
    ellipse(width / 1.99, height / 6.5, discoSize, discoSize);

    fill(0);
    ellipse(307, 52, 15, 15);
    ellipse(327, 72, 15, 15);

    fill(0);
    ellipse(345, 60, 15, 15);
    ellipse(319, 100, 15, 15);

    fill(0);
    ellipse(298, 78, 15, 15);
    ellipse(343, 88, 15, 15);

    fill(243, 36, 202); //pink
    ellipse(305, 50, 15, 15);
    ellipse(325, 70, 15, 15);

    fill(24, 138, 255); //blue
    ellipse(347, 60, 15, 15);
    ellipse(321, 100, 15, 15);

    fill(255, 255, 24); //yellow
    ellipse(300, 80, 15, 15);
    ellipse(345, 90, 15, 15);
}

function mousePressed() {
    faceWidth = random(150, 250);
    faceHeight = random(150, 200);
    eyeSize = random(10, 40);
    pupilSize = random(5, 10);
	mouthSize = random(20, 28);
	tongueSize = random(15, 18);
	bodySize = random(160,200);
	blushSize = random(15,20)
    colorA = random(0, 255);
    colorB = random(0, 255);
    colorC = random(0, 255);
    skinColor1 = random(0, 255);
    skinColor2 = random(0, 255);
    skinColor3 = random(0, 255);
    r = random(0, 255);
    g = random(0, 255);
    b = random(0, 255);
}


For this project, I personally had so much fun using all the new materials from this week. I ended up creating a character in a rave with randomized expression and color. I was able to figure out that when I randomize the color under the draw function, the background changes extremely quickly since the draw function is in a loop. Although applying that part looks more like a rave, I didn’t apply it to my code for this post because it might hurt some people’s eyes. Instead, if you are curious, download this: real_rave  to see how it looks. I hope you enjoy!

Project 02- Jasper Rogal

Jasper Face 2

// Face variables
var eyeSize = 30;
var faceWidth = 80;
var faceHeight = 125;
var noseSize = 335;
var earSize = 15;
var mouthSize = 345;

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

function draw() {
    background('blue');
    //hair
    fill('brown');
    ellipse(width / 2, height / 2 -20, faceWidth,  faceHeight);
    //face
    fill(253, 228, 200);
    ellipse(width / 2, height / 2, faceWidth,  faceHeight);
    fill('white'); 
    //eyes
    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);
    //iris
    fill('brown');
    ellipse(eyeLX, height / 2, eyeSize * .25, eyeSize * .25);
    ellipse(eyeRX, height / 2, eyeSize * .25, eyeSize * .25);
    //nose
    fill(253, 228, 200);
    triangle(240,  320, 237, noseSize, 243, noseSize);
    //mouth
    arc(width / 2, mouthSize, 10, 10, 0, PI, OPEN);
    //ears
    ellipse(240 - faceWidth * .5, 285, 10, earSize);
    ellipse(240 + faceWidth * .5, 285, 10, earSize);
}

function mousePressed() {
    faceWidth = random(70, 125);
    faceHeight = random(120, 160);
    eyeSize = random(18, 37);
    noseSize = random(330, 340);
    earSize = random(12, 18);
    mouthSize = random(343, 348)
}

I had trouble with variables at first, but once I understood them more it was fine.