ablackbu-LookingOutwards-03

3D PRINTED FREE STANDING METAL: BY ROBOT

Find it here: http://newatlas.com/3d-metal-printing-robot/30938/

The MX3D-Metal prints with steel, stainless steel, aluminum, bronze and copper

Through doing research for last weeks “Looking Outwards,” I stumbled upon this artistic robot, called the MX3D. MX3D is a metal 3D printing robot. Artist, Joris Laarman, created this robot that paints with metal.

Our perception of 3D printing now is mostly centered around gadgets and toys. Small things made of plastic. What this does is changes that perception. 3D printing in this project is heavy and stands the test of both gravity and air.

This robot gives us the possibility to build on any surface, without the use of support, with an incredibly strong material. The implications of this technology in both art and industry for example structure design, are endless.

 

One of the things I enjoyed most about this project is that it breaks the barrier of the “household” 3D printer. You never think about a 3D printer as a robot, but in reality it is, just a very constrained one. This breaks the bonds and is free to build anywhere.

 

 

Looking Outwards 03 – Yugyeong Lee

LifeObject is an architectural installation that studies characteristics of bird’s nest into new material as well as its resilient properties. The installation is made up of biological materials that are responsive to its environment as a dialogue between architecture and biology. Computation and digital fabrication of LifeObject articulates new practices of material-making using rich natural materials that embody living qualities. Through algorithmic analysis of the nest, the project arranged twigs and fibers with bending stresses, morphing into what is a result of its adaption to gravity forces and boundary conditions. The LifeObject is interesting in its materialization of abstract ideas through the algorithm studies, coding, and digital fabrication that opens up opportunity in the future architectural field to integrate biologically inspired materials.

http://www.archdaily.com/788634/lifeobject-inside-israels-pavilion-at-the-2016-venice-biennale

detailed views of the Life Object

mmirho – Project 3 – Dynamic Drawing

Move your mouse over the image from the top left corner to the bottom right corner. If you move just outside the bottom right corner, something colorful will happen!

I apologize for not using the 640 x 480 canvas size, that caused my program not to work last time I posted.

My program changes color, and fades into the background,
The lines (Which are rectangles) change size and end-location,
The squares rotate with the mouse location.

I hope I satisfied all the requirements! 🙂

sketch


//variable created to the size of the canvas
//(I used numbers here because width/height
//can't be input into global variables, I think
var blockW = 480/6;
var blockH = 480/6;

//The different fade variables I created
//to make each rotating square fade into
//the background seperately from each other
var fade = 255;
var fade1 = 255;
var fade2 = 255;
var fade3 = 255;
var fade4 = 255;
var fade5 = 255;
var angle = 0;
var side = 0;
var red = 255;
var blue = 255;

function setup() {
    createCanvas(480, 480);
}
 
function draw() {
    background(0); //black background
    noStroke();


    //The lines are now strobe-party-effected ONLY
    //when the mouse is beyond the bottom right edge 
    //of the canvas
    if ((mouseX > 6*blockW) & (mouseY > 6*blockH)) {
        fill(random(0,255), random(0,255), random(0,255));
    } else {
        fill(255);
    }

    //These are all the vertical lines
    rect(blockW, 0, 5, 2*mouseY);
    rect(2*blockW, 0, 5, 2*mouseY);
    rect(3*blockW, 0, 5, 2*mouseY);
    rect(4*blockW, 0, 5, 2*mouseY);
    rect(5*blockW, 0, 5, 2*mouseY);

    //These are all the horizontal lines
    rect(0, blockH, 2*mouseX, 5);
    rect(0, 2*blockH, 2*mouseX, 5);
    rect(0, 3*blockH, 2*mouseX, 5);
    rect(0, 4*blockH, 2*mouseX, 5);
    rect(0, 5*blockH, 2*mouseX, 5);

    rectMode(CENTER);
    side = min(blockH/2, blockW/2);
    //The side of the rotating squares is based off the
    //length of the smallest


    //This is the rotating square in box 1x1
    if ((mouseX > blockW) & (mouseY > blockH)) {
        fill(fade); 
        push();
        rectMode(CENTER);
        translate(blockW/2, blockH/2);
        rotate(radians(angle));
        angle = (mouseY + mouseX)/2;
        rect(0, 0, side, side);
        pop();
        fade -= 1;
    } else {
        fade = 255;
    }

    //This is the rotating square in box 2x2
    if ((mouseX > 2*blockW) & (mouseY > 2*blockH)) {
        fill(fade1); 
        push();
        rectMode(CENTER);
        translate(3*blockW/2, 3*blockH/2);
        rotate(radians(angle));
        angle = (mouseY + mouseX)/2;
        rect(0, 0, side, side);
        pop(); 
        fade1 -= 1;
    } else {
        fade1 = 255;
    }


    //This is the rotating square in box 3x3
    if ((mouseX > 3*blockW) & (mouseY > 3*blockH)) {
        fill(fade2); 
        push();
        rectMode(CENTER);
        translate(5*blockW/2, 5*blockH/2);
        rotate(radians(angle));
        angle = (mouseY + mouseX)/2;
        rect(0, 0, side, side);
        pop(); 
        fade2 -= 1;
    } else {
        fade2 = 255;
    }


    //This is the rotating square in box 4x4
    if ((mouseX > 4*blockW) & (mouseY > 4*blockH)) {
        fill(fade3); 
        push();
        rectMode(CENTER);
        translate(7*blockW/2, 7*blockH/2);
        rotate(radians(angle));
        angle = (mouseY + mouseX)/2;
        rect(0, 0, side, side);
        pop(); 
        fade3 -= 1;
    } else {
        fade3 = 255;
    }


    //This is the rotating square in box 5x5
    if ((mouseX > 5*blockW) & (mouseY > 5*blockH)) {
        fill(fade4); 
        push();
        rectMode(CENTER);
        translate(9*blockW/2, 9*blockH/2);
        rotate(radians(angle));
        angle = (mouseY + mouseX)/2;
        rect(0, 0, side, side);
        pop(); 
        fade4 -= 1;
    } else {
        fade4 = 255;
    }


    //This is the rotating square in box 6x6
    if ((mouseX > 6*blockW) & (mouseY > 6*blockH)) {
        fill(fade5); 
        push();
        rectMode(CENTER);
        translate(11*blockW/2, 11*blockH/2);
        rotate(radians(angle));
        angle = (mouseY + mouseX)/2;
        rect(0, 0, side, side);
        pop(); 
        fade5 -= 1;
    } else {
        fade5 = 255;
    }

    //The red square in the cell 2x5
    if ((mouseX > 2*blockW) & (mouseY > 5*blockH)) {
        fill(red, 0, 0); 
        push();
        rectMode(CENTER);
        translate(3*blockW/2, 9*blockH/2);
        rotate(radians(angle));
        angle = (mouseY + mouseX)/2;
        rect(0, 0, side, side);
        pop(); 
        red -= 1;
    } else {
        red = 255;
    }

    //The blue square in the cell 5x2
    if ((mouseX > 5*blockW) & (mouseY > 2*blockH)) {
        fill(0, 0, blue); 
        push();
        rectMode(CENTER);
        translate(9*blockW/2, 3*blockH/2);
        rotate(radians(angle));
        angle = (mouseY + mouseX)/2;
        rect(0, 0, side, side);
        pop(); 
        blue -= 1;
    } else {
        blue = 255;
    }
}

ssharada_project_03_section-a

Project 3

//Shariwa Sharada
//Section-A
//ssharada@andrew.cmu.edu
//Assignment-03-A

var ssw = 135;
var ssh = 160;

function setup(){
    createCanvas (480, 360);
    rectMode(CENTER);
}

function draw(){
//changing the background depending on the position of the cursor    
    background(mouseX, mouseY, 191);
    push();
    //limiting the colour change to certain types - dependent on the mouse placement within a 4x3 grid
    //changing colours dependent on the x-axis placement
    if (mouseX>0 & mouseX < ssw){
        mouseX = 246    
    }
    if (mouseX>ssw && mouseX < ssw*2){
        mouseX = 236
    }
    if (mouseX>ssw*2 && mouseX < ssw*3){
        mouseX = 226
    }
    if (mouseX>ssw*2 && mouseX < width){
        mouseX = 216
    }
    //changing colours dependent on the y-axis placement
    if (mouseY>0 && mouseY < ssh){
        mouseX = 180
    }
    if (mouseY>ssh && mouseY < ssh*2){
        mouseX = 170
    }
    if (mouseY>ssh*2 && mouseY < height){
        mouseX = 160
    }
    pop();

    push();
//creating the translating and moving squares
    translate (width/2, height/2);
    //stating the number of squares i want within the first level - 
    //using the increment command to have the squares rotated with equal distances.
    for (var a = 0; a < 15; a++){
        push();
        //rotation and pasting
        rotate(TWO_PI * a / 15);
        //making the placement of the level dependent 
        //on the y-axis placement of the cursor
        var X = mouseY;
        translate(X, 0);
        //the colour of this rectangles and randomising the transparancy
        //of the white to make the quares appear to flicker
        fill(255, random(20,90));
        noStroke();
        //the size of the first level of rectangles.
        rect(0,0,60,60);
        //stating the number of squares i want within the second level - 
        //using the increment command to have the squares rotated with equal distances.
        for (var b = 0; b < 12; b++){
            push();
            //rotation and pasting
            rotate(TWO_PI * b/12);
            //making the placement of the level dependent 
            //on the x-axis placement of the cursor
            var Y = mouseX;
            //the size of the second level of rectangles.
            rect (Y,0,30,30);
            //the colour of this rectangles and randomising the 
            //transparancy of the white to make the quares appear to flicker
            fill(255, random(10,80));
            noStroke();
            //stating the number of squares i want within the third level - 
            //using the increment command to have the squares rotated with equal distances.
            for (var c = 0; c < 8; c++){
                push();
                //rotation and pasting
                rotate(TWO_PI* c/8);
                //making the placement of the level dependent 
                //on the y-axis placement of the cursor
                var Z = mouseY;
                //the size of the third level of rectangles.
                rect (0,Z,10,10);
                //the colour of this rectangles and randomising the 
                //transparancy of the white to make the quares appear to flicker
                fill(255, random(10,50));
                noStroke();
                //preventing the code from affecting other factors of the program
                pop();
            }

            //preventing the code from affecting other factors of the program
            pop();
            }

        //preventing the code from affecting other factors of the program
        pop();
    }
    pop();
}

mjeong1-Project-03-Dynamic Drawing-Section A

sketch

//Min Young Jeong
//Section A 9:30am
//mjeong1@andrew.cmu.edu
//Project-03
var a;
var x = 400;
var y = 400;
var cloud = 100;
var dir = 1;
var dir2 =1;
var speed = 4;
var speed2 = 1;
var diam = 50;

function setup() {
    createCanvas(640, 480);
}
 
function draw() {
    background(168,204,239);
    //sunny background
    if (dist(mouseX,mouseY,width/2,height/2)<=100) {
        background(124,146,181);
    }
    //cloudy background
    noStroke();
    fill(150,234,148);
    rect(0,390,640,height - 350);
    //sunny ground
    if (dist(mouseX,mouseY,width/2,height/2)<=100) {
        fill(107,145,106);
        rect(0,390,640,height - 350);
    }
    //cloudy ground


    fill(206,166,124);
    strokeWeight(1);
    stroke(255);
    rect(width/2 - 4,height/2 - 4,8,200);
    stroke(255);
    //1st windmill stick


    push();
    translate(width/2,height/2);
    var a = atan2(mouseY-height/2,mouseX-width/2);
    rotate(a);
    if (dist(mouseX,mouseY,width/2,height/2)<=100) {
        fill(255,105,113);
    }
    else {fill(100);}
    triangle(-50,-50,0,-50,0,0);
    triangle(-50,-50,-100,0,0,0);
    if (dist(mouseX,mouseY,width/2,height/2)<=100) {
        fill(118,135,255);
    }
    else {fill(100);}
    triangle(0,0,0,-100,50,-50);
    triangle(0,0,50,-50,50,0);
    if (dist(mouseX,mouseY,width/2,height/2)<=100) {
        fill(118,255,118);
    }
    else {fill(100);}
    triangle(0,0,100,0,50,50);
    triangle(0,0,50,50,0,50);
    if (dist(mouseX,mouseY,width/2,height/2)<=100) {
        fill(255,242,118);
    }
    else {fill(100);}
    triangle(0,0,0,100,-50,50);
    triangle(0,0,-50,50,-50,0);
    pop();

    fill(0);
    ellipse(width/2,height/2,10,10);
    //center windmill clockwise


    push();
    translate(width/2 - 200, height/2 + 100);
    var a = atan2(mouseY-height/2,mouseX-width/2);
    rotate(-a);
    if (dist(mouseX,mouseY,width/2,height/2)<=50) {
        fill(158,118,255);
    }
    else {fill(100);}
    triangle(-25,-25,0,-25,0,0);
    triangle(-25,-25,-50,0,0,0);
    triangle(0,0,0,-50,25,-25);
    triangle(0,0,25,-25,25,0);
    triangle(0,0,50,0,25,25);
    triangle(0,0,25,25,0,25);
    triangle(0,0,0,50,-25,25);
    triangle(0,0,-25,25,-25,0);
    pop();
    //left windmill counterclockwise 

    push();
    translate(width/2 + 200, height/2 + 100);
    var a = atan2(mouseY-height/2,mouseX-width/2);
    rotate(-a);
    if (dist(mouseX,mouseY,width/2,height/2)<=50) {
        fill(155,189,115);
    }
    else {fill(100);}
    triangle(-25,-25,0,-25,0,0);
    triangle(-25,-25,-50,0,0,0);
    triangle(0,0,0,-50,25,-25);
    triangle(0,0,25,-25,25,0);
    triangle(0,0,50,0,25,25);
    triangle(0,0,25,25,0,25);
    triangle(0,0,0,50,-25,25);
    triangle(0,0,-25,25,-25,0);
    pop();
    //right windmill counterclockwise


    if (dist(mouseX,mouseY,width/2,height/2)<=100) {
        x = mouseX; 
        y = mouseY; 
        noFill();
        strokeWeight(5);
        stroke(65,95,183);
        beginShape ();
        curveVertex(x,y);
        curveVertex(x,y);
        curveVertex(x + 25, y +25);
        curveVertex(x + 50, y);
        curveVertex(x + 75, y +25);
        curveVertex(x + 100, y);
        curveVertex(x + 100, y);
        endShape();
        beginShape ();
        curveVertex(x,y + 20);
        curveVertex(x,y + 20);
        curveVertex(x + 25, y +45);
        curveVertex(x + 50, y + 20);
        curveVertex(x + 75, y +45);
        curveVertex(x + 100, y +20);
        curveVertex(x + 100, y +20);
        endShape();
        beginShape ();
        curveVertex(x,y + 40);
        curveVertex(x,y + 40);
        curveVertex(x + 25, y + 65);
        curveVertex(x + 50, y + 40);
        curveVertex(x + 75, y + 65);
        curveVertex(x + 100, y + 40);
        curveVertex(x + 100, y + 40);
        endShape();
    }
    //wind 


    fill(178,119,119);
    stroke(255);
    strokeWeight(2);
    ellipse(0,0,200,200);
    //sunny sun 


    if (dist(mouseX,mouseY,width/2,height/2)>=100){
        fill(249,143,143);
        ellipse(0,0,200,200);
    }
    //cloudy sun 


    if (dist(mouseX,mouseY,width/2,height/2)<=100){
        fill(220);
        ellipse(0,100,50,50);
        ellipse(30,110,40,40);
        ellipse(50,70,70,70);
        ellipse(70,100,50,50);
        ellipse(100,90,50,50);

        ellipse(200,100,50,50);
        ellipse(230,110,40,40);
        ellipse(250,70,70,70);
        ellipse(270,100,50,50);
        ellipse(300,90,50,50);

        ellipse(400,100,50,50);
        ellipse(430,110,40,40);
        ellipse(450,70,70,70);
        ellipse(470,100,50,50);
        ellipse(500,90,50,50);

        ellipse(600,100,50,50);
        ellipse(630,110,40,40);
        ellipse(650,70,70,70);
        ellipse(670,100,50,50);
        ellipse(700,90,50,50);
}
    //cloud


    fill(255);
    noStroke();

    ellipse(x,100,diam,diam);
    ellipse(x - diam/2,100-diam/3,diam,diam);
    ellipse(x + diam/2,100-diam/3,diam * 1.5,diam *1.5);
    ellipse(x + diam * 1.4,100-diam/4,diam,diam);
//cloud 1
    ellipse(x - 100,150,diam,diam);
    ellipse(x - diam/2 - 100,150-diam/3,diam,diam);
    ellipse(x + diam/2 -100,150-diam/3,diam * 1.5,diam *1.5);
    ellipse(x + diam * 1.4 -100,150-diam/4,diam,diam);
//cloud 2
    ellipse(x + 100,150,diam,diam);
    ellipse(x - diam/2 + 100,150-diam/3,diam,diam);
    ellipse(x + diam/2 +100,150-diam/3,diam * 1.5,diam *1.5);
    ellipse(x + diam * 1.4 +100,150-diam/4,diam,diam);
//cloud 3
    x += dir*speed;
    if (x > width - 25 || x < 25) {
        dir = -dir;
    }

    if (diam > 50) {
        dir2 = -dir2;
    }

    if (diam < 10){
        dir2 = -dir2;
    }

    if (mouseX < width/2 + 50 || mouseX > width/2 - 50) {
        diam += dir2 * speed2;
    }
    //moving clouds

}

For this assignment I created windmills generated by mouse movement. As the middle windmill rotates clockwise, the other windmills on both sides rotates counterclockwise. Weather condition is also controlled by the mouse movement.

selinal-Project-03

sketch

//Selina Lee
//Section C
//selinal@andrew.cmu.edu
//Project-03

var cx = 320; //center points for canvas
var cy = 240;

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

}

function draw() {
	background(50); //off black background

	var x = mouseX; //easy to write mouse variables and to be used in other functions
	var y = mouseY;

	var colorx = mouseX%255; //variables to alter color on canvas without going over 255 RGB limit
	var colory = mouseY%255;

	var oppy = width/2 - mouseY; //reacts opposite of other part in the y direction

	var rad = dist(cx, cy, x, y); //creating area between center point and outerpoint of ellipses for interaction

	//upward and downward moving rectangles
	fill(colorx, 200, colory);
	rect(0, y, 320, 480);

	fill(colory, 200, colorx);
	rect(320, oppy, 320, 480);

	//series of ellipses changing size and color
	fill(colorx, 200, 200);
	ellipse(cx, cy, rad + 150, rad + 150);

	fill(200, colorx, 200);
	ellipse(cx, cy, rad + 140, rad + 50);

	fill(200, 200, colorx);
	ellipse(cx, cy, rad + 50, rad + 140);

	fill(colory, 200, 200);
	ellipse(cx, cy, rad, rad);

	fill(200, colory, 200);
	ellipse(cx, cy, rad - 20, rad - 40);

	fill(200, 200, colory);
	ellipse(cx, cy, rad - 40, rad - 20);

	//series of lines to follow mouse with
	stroke(colory, colorx, colory);
	line(cx, cy, x, y);
	stroke(colorx, 200, 200);
	line(cx, cy, x + 5, y + 5);
	stroke(colorx, colory, 200);
	line(cx, cy, x - 5, y - 5);
	stroke(colory, 200, 200);
	line(cx, cy, x + 5, y);
	stroke(200, colorx, 200);
	line(cx, cy, x - 5, y);
	stroke(200, 200, colory);
	line(cx, cy, x, y + 5);
	stroke(200, colory, colorx);
	line(cx, cy, x, y - 5);
	
	stroke(colorx, 200, 200);
	line(cx, cy, x + 15, y + 15);
	stroke(colorx, colory, 200);
	line(cx, cy, x - 15, y - 15);
	stroke(colory, 200, 200);
	line(cx, cy, x + 15, y);
	stroke(colory, 200, 200);
	line(cx, cy, x - 15, y);
	stroke(200, 200, colory);
	line(cx, cy, x, y + 15);
	stroke(200, colory, colorx);
	line(cx, cy, x, y - 15);
	
	stroke(colorx, 200, 200);
	line(cx, cy, x + 25, y + 25);
	stroke(colorx, colory, 200);
	line(cx, cy, x - 25, y - 25);
	stroke(colory, 200, 200);
	line(cx, cy, x + 25, y);
	stroke(colory, 200, 200);
	line(cx, cy, x - 25, y);
	stroke(200, 200, colory);
	line(cx, cy, x, y + 25);
	stroke(200, colory, colorx);
	line(cx, cy, x, y - 25);
	
	stroke(colorx, 200, 200);
	line(cx, cy, x + 35, y + 35);
	stroke(colorx, colory, 200);
	line(cx, cy, x - 35, y - 35);
	stroke(colory, 200, 200);
	line(cx, cy, x + 35, y);
	stroke(colory, 200, 200);
	line(cx, cy, x - 35, y);
	stroke(200, 200, colory);
	line(cx, cy, x, y + 35);
	stroke(200, colory, colorx);
	line(cx, cy, x, y - 35);
	
	stroke(colorx, 200, 200);
	line(cx, cy, x + 45, y + 45);
	stroke(colorx, colory, 200);
	line(cx, cy, x - 45, y - 45);
	stroke(colory, 200, 200);
	line(cx, cy, x + 45, y);
	stroke(colory, 200, 200);
	line(cx, cy, x - 45, y);
	stroke(200, 200, colory);
	line(cx, cy, x, y + 45);
	stroke(200, colory, colorx);
	line(cx, cy, x, y - 45);
	
	stroke(colorx, 200, 200);
	line(cx, cy, x + 55, y + 55);
	stroke(colorx, colory, 200);
	line(cx, cy, x - 55, y - 55);
	stroke(colory, 200, 200);
	line(cx, cy, x + 55, y);
	stroke(colory, 200, 200);
	line(cx, cy, x - 55, y);
	stroke(200, 200, colory);
	line(cx, cy, x, y + 55);
	stroke(200, colory, colorx);
	line(cx, cy, x, y - 55);
	
	stroke(colorx, 200, 200);
	line(cx, cy, x + 65, y + 65);
	stroke(colorx, colory, 200);
	line(cx, cy, x - 65, y - 65);
	stroke(colory, 200, 200);
	line(cx, cy, x + 65, y);
	stroke(colory, 200, 200);
	line(cx, cy, x - 65, y);
	stroke(200, 200, colory);
	line(cx, cy, x, y + 65);
	stroke(200, colory, colorx);
	line(cx, cy, x, y - 65);
	
	stroke(colorx, 200, 200);
	line(cx, cy, x + 75, y + 75);
	stroke(colorx, colory, 200);
	line(cx, cy, x - 75, y - 75);
	stroke(colory, 200, 200);
	line(cx, cy, x + 75, y);
	stroke(colory, 200, 200);
	line(cx, cy, x - 75, y);
	stroke(200, 200, colory);
	line(cx, cy, x, y + 75);
	stroke(200, colory, colorx);
	line(cx, cy, x, y - 75);
	
	stroke(colorx, 200, 200);
	line(cx, cy, x + 85, y + 85);
	stroke(colorx, colory, 200);
	line(cx, cy, x - 85, y - 85);
	stroke(colory, 200, 200);
	line(cx, cy, x + 85, y);
	stroke(colory, 200, 200);
	line(cx, cy, x - 85, y);
	stroke(200, 200, colory);
	line(cx, cy, x, y + 85);
	stroke(200, colory, colorx);
	line(cx, cy, x, y - 85);
}

The visuals for this project are based on a shadowed ray (the array assortment of lines which follow the position of the mouse but extend from the center of the canvas). The rest of the visuals were based on the centripetal movement of the lines, hence the creation of the ellipse series and their opposition to each other depending where mouseX and mouseY are. I noticed the project resembled an eye which was not intentional, but in order to balance the familiarity of the ellipses, the sliding blocks in the background were added as a more linear and angular contrast.

mjeong1-Looking Outwards-03-Section A

Zaha Hadid Architects generated geometry through robotic-assisted design

“Thallus” by Zaha Hadid Architects in Accademia di Belle Arti di Brera, Milan,Italy

Thallus is a installation being part of the exhibition “White In The City” in Milan. The exhibition explored use of white color for art and architecture in the contemporary world. The structure is 3D printed using premium polylactide plastic. I think how the shape and pattern are generated is interesting. The pattern started with simple cylinders on surface and Six-axis robotic 3D-printing technology generated one continuous stroke connecting the each cylinder, which produced “calla lily”-like geometry on the surface. The design explores how the curve is guided along the surface and change its density and size through parametric boundaries.

What is interesting about ZHA’s Thallus was use algorithmic thinking to clarify the relationship between the design intent and design response. The geometry is clearly defined by certain rules within the boundary of parametric calculation also it successfully rendered its parametric relationship with the original cylinder shape and its final calla lily-like curve.

Link to Thallus

cespinoz-Looking Outwards -03

For this topic I chose to look through Pinterest and picked this scaled 3D model of San Francisco.

I really am fascinated by this since it is quite literally a miniature model of San Francisco. It was made by members of Autodesk and Steelblue, by using, what I assume to be Autodesk’s Computer Aided Design (CAD) program (it is not clearly mentioned in the article). I particularly admire this since I have been exposed to CAD before, through my robotics team in high school. I was never quite proficient in it, but I managed to make and print some parts, though admittedly, the process of ensuring the right calculations and sizes and everything in CAD took me what seemed forever. That said, I cannot imagine how much time it would take to make a model of an entire city to scale. To make it to scale, the creators must have had to note somewhere all the sizes of actual buildings, roads, park, etc, and hen find the appropriate scaling measurements. Then they would actually have to CAD each individual building and part, which includes drawing and labeling several boxes and rectangles on CAD (as how I remember it). Then they would have to put it all together, to follow the shape of the actual city itself, and send it to the 3D printer. And although there isn’t an artistic value seen on the model, the art specific to the makers is in the hard work to make an accurate model through CAD and 3D printing.

Here is an article about the model:unveiling-the-largest-ever-3d-printed-model-of-san-francisco.html

sunmink-Project03-Dynamic-Drawing

sketch

//SunMin Kim 
//Section E
//sunmink@andrew.cmu.edu
//project-03 

//variables for background elements
var smokecolor = 255; 
var angle = 0; 

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

function draw() {
  //Sky
  background(209, 234, 254);
  noStroke(0);

  //Greens 
  fill(109, 195, 50); 
  rect(0, 380, 640, 300); 

   //Tree trunks 
  fill(84, 78, 38);
  rect(20, 270, 20, 120);
  rect(60, 270, 20, 120);
  rect(100, 270, 20, 120);
  rect(140, 270, 20, 120);
  rect(180, 270, 20, 120);
  rect(220, 270, 20, 120);
  rect(260, 270, 20, 120);

  //Tree leaves 
  fill(135, 140, 30); 
  ellipse(30, 230, 50, 130);
  ellipse(110, 230, 50, 130);
  ellipse(190, 230, 50, 130);
  ellipse(270, 230, 50, 130);

  fill(135, 170, 30); 
  ellipse(70, 230, 50, 130);
  ellipse(150, 230, 50, 130);
  ellipse(230, 230, 50, 130);

  //Smokes move and change their color depending on position of mouseX 
  translate ((width) - mouseX * 1.5, 20); 
  fill (mouseX - smokecolor); 

   
  ellipse( 90, 150, 100, 100); 
  ellipse( 120, 150, 100, 100); 
  ellipse( 140, 120, 100, 100); 
  ellipse( 160, 120, 100, 100); 
  ellipse( 150, 180, 100, 100);
  ellipse( 190, 100, 100, 100);  
  ellipse( 220, 180, 100, 100);  
  ellipse( 220, 120, 100, 100); 
  ellipse( 250, 100, 100, 100); 
  ellipse( 290, 180, 100, 100); 
  ellipse( 220, 150, 100, 100); 
  ellipse( 260, 120, 100, 100); 
  ellipse( 260, 100, 100, 100); 
  ellipse( 230, 120, 100, 100); 
  ellipse( 250, 150, 100, 100);
  ellipse( 290, 80, 100, 100);  
  ellipse( 320, 130, 100, 100);  
  ellipse( 420, 170, 100, 100);  
  ellipse( 450, 120, 100, 100); 
  ellipse( 490, 180, 100, 100); 
  ellipse( 420, 150, 100, 100); 
  ellipse( 390, 80, 100, 100); 
  ellipse( 320, 100, 100, 100); 
  ellipse( 460, 100, 100, 100); 
  ellipse( 490, 150, 100, 100);  
  ellipse( 380, 170, 100, 100);  
  ellipse( 520, 150, 100, 100); 
  pop(); 

   //sun move depending on position of mouseX 
  translate ((width) - mouseX * 0.5, 60); 
  rotate (radians(angle));
  fill (236, 188, 0); 

  //sun changes its size, and constantly rises the angle in following angle + 0.2 
  ellipse(mouseX - 250, 30, (mouseX + 200)/ 5, (mouseX + 200)/ 5);
  angle = angle + 0.2;



}

 

After creating pong game, I became more interested in coding that can carry a narrative. Thus for the dynamic drawing, I wanted to put in a storyline. I first created a forest and then made smokes that are created before the sun arose.

Throughout this project, I struggled the most when coming up with a story and actualizing it. I feel good with the outcome I came up with and I am excited to create more interactive drawings with more variations.

mmiller5_Looking Outward-03

Video of Matthew Plummer-Fernandez’s Botcave workshop projects

#Good vs #Evil is a project made by Maxime Castelli for Matthew Plummer-Fernandez’s 2014 Botcave workshop.  Using a modified racetrack game, this project advances cars along a track for each instance of #Good and #Evil that bots track on Twitter, with each car corresponding with the different hashtags.  I find this project inspiring because not only is it an interesting physical representation of statistical data (I mean come one, racecars!), but it also updates in realtime, preventing it from staying a static representation.  This method further emphasizes that the artwork is primarily focused in the algorithm itself as opposed to the product it creates because the product is potentially never completed!  It can keep going on and on, culminating in a project more akin to a presentation than a product.

Image of the #Good vs #Evil racetrack