Audrey Zheng – Looking Outwards – 06

generatve
DATA-DADA is a software based interconected packing algorithm, which reads different color map arrays, either by random, noise and/or manual values

 

generative flowers
Depth Matrix

Holger Lippmann is a Processing artist. He created GENERATIVE FLOWERS by first experimenting with a branching system in p5. After fine tuning many little values here and there, adding randomness to angles, distribution and color arrays, he published a first work series “nebelwald”, simulating trees. Then he added leaves/flowers to the bare branches. He found using basic geometric forms produced the more satisfying output.

For Depth Matrix, Holger used an algorithm which generates color map dependent diverticulum like reliefs formed out of different pixel layers within a 3 dimensional environment. This software works with different keyboard input values to compose a rather painting like image out of different color maps. Color values of these map arrays are called by random, noise and/or manual order.

I admire Holger’s work because he clearly has a mastery of techniques a traditional artist has: color, composition, and design. I admire how Lippmann can use his understanding of mathematics and illustrative design skill to create such beautiful, captivating artwork that leaves the viewer wondering about its underlying code/foundation.

Audrey Zheng-Project 05

sketch

//Audrey Zheng
//Section A
//audreyz@andrew.cmu.edu
//Project 5

var pawSize = 76
var startx = 95
var starty = 173


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

function draw() {
	background(170,170,247);
	//paw(-50,-70);

	for (var space = -60; space <width; space+=110){
		for (var yspace = -130; yspace <height; yspace +=140) {
			paw(space, yspace);
			

		}

	}

}

function paw(x,y) {
	push();
	translate(x,y);
	rotate(PI/9.0);
	noStroke();

	//claws
	fill(220);
	triangle(77.63,166.01, 91,181,110,172);
	triangle(112,154,116,136,125,152);
	triangle(145,155,156,137,160,160);
	triangle(170,174,187,167,180,183);

	fill(19,19,29);


	rect(95, 173, pawSize, pawSize, 33);

	ellipseMode(CORNER);
	//the paw
	ellipse(83,162,34,35);
	ellipse(105,145,34,35);
	ellipse(132, 145,34,35);
	ellipse(149,162,34,35);

	//toe beans
	fill(251,168,179);
	ellipse(91,170,18,18);
	ellipse(112,153,18,18);
	ellipse(140,153,18,18);
	ellipse(157,169,18,18);
	ellipse(107,188,34,25);
	ellipse(120,178,28,25);
	ellipse(127,187,34,25);

	//highlights
	fill(255);
	ellipse(97,173,6,4);
	ellipse(117,155,6,4);
	ellipse(146,155,6,4);
	ellipse(164,172,6,4);
	ellipse(126,182,6,4);
	pop();

}

Audrey Zheng-Looking Outwards-05

Peachy Character by Anneka Tran
Girl Head
Girl Head
Mr. Radish
Mr. Raddish

 

I’m in love with Anneka Tran’s whimsical, simple 3D characters. They’re beautiful, charming and captivating. Something draws me into these low poly designs: they have a cute quality that the high rendered characters in first person shooter video games (say Overwatch or Fortnite) don’t have. I like Anneka’s style because it is unique, and the cartoonish quality gives her characters more life than semi realistic to hyper realistic 3D models. Anneka uses Maya, and having using Maya before, I know how time-consuming it is to model anything complex. I also admire the low poly style for how time efficient it is. She adds the texture in Photoshop. I think adding complicated texturing such as fur or grain would actually take away from the cuteness. She also doesn’t use any shaders. In the above examples, she only used Ambient Occlusion.

See more of Anneka Tran’s work here.

Audrey Zheng-Looking Outwards-04

Apparatum
Apparatum – Inspired by the Polish Radio Experimental Studio

I am using 1 of my grace days for this late submission.

For this week’s Looking Outward, I chose to read up on the Apparatum, created by panGenerator. In a nutshell, the apparatum is a custom made apparatus with digital interface that emits purely analogue sound.

It’s a tribute to the Polish Radio Experimental studio. This studio recorded electronic and utility pieces. The studio was established in 1957 and operated until 2004; it was one of the first studios in the world producing electroacoustic music.

I think it’s cool how multifunctional this installation is. Apparatum is equipped with optical analog sound generators and tape samplers. It has seamless UI design and a touch screen to allow users to compose their own music.Then it print’s the user’s score and uploads the audio file.

I also admire the black and white minimalist aesthetic of the physical design. The physical form of the apparatus is inspired by the general aesthetics of the Studio’s famous “Black Room” designed by Oskar Hansen. I think it suits the tempo and range of electronic sounds the apparatum produces.

I enjoy the mixture of old technology and new technology. The new tech: Software used to create the interface/GUI is electron (node.js) and microcontroller elements are c running on teensy 3.2. The older tech:  the panGenerator team decided to use two types of “tape samplers” – two 2-track loops and three one-shot linear tape samplers. To obtain noise and basic tones they are utilising purely analog optical generators based on spinning discs with graphical patterns.

See more here.

Audrey Zheng – Project 04

I am using one of my autolab grace days for this project.

sketch

// Audrey Zheng
// Section A
// audreyz@andrew.cmu.edu
// Project 04

var cwidth = 300;
var cheight = 400;

var listPoints1 = new Array();
var listPoints2 = new Array();

function setup() {
    createCanvas(cwidth, cheight);
}

function strings() {

	stroke(0);


	var x = 10;
	var y = cheight/2;
	//var listPoints1 = new Array();

	for (var i = 0; i <21; i++) {

		point(x,y);

		var p = new Array(x,y);
		listPoints1.push(p);

		x += 14;

	}

	var x2 = cwidth/2;
	var y2 = 60;
	//var listPoints2 = new Array();

	for (var j = 0; j<21; j++) {

		point(x2,y2);

		var point2 = new Array(x2,y2);
		listPoints2.push(point2);

		y2 += 14;
	}

	noLoop();

	var start = 0;
	var end = 9;

	var start2 = 20;

	var end2 = 11;


	for (var k = 0; k<10; k++) {
		line(listPoints1[start][0], listPoints1[start][1], listPoints2[end][0], listPoints2[end][1]);
		line(listPoints1[start2][0], listPoints1[start2][1], listPoints2[end][0], listPoints2[end][1]);
		line(listPoints1[start2][0], listPoints1[start2][1], listPoints2[end2][0], listPoints2[end2][1]);
		line(listPoints1[start][0], listPoints1[start][1], listPoints2[end2][0], listPoints2[end2][1]);

		start += 1;
		end -= 1;

		start2 -= 1;
		end2 += 1;





	}

}




function draw() {
	background(220);

	stroke(255);
	line(10,cheight/2, 290, cheight/2);
	line(cwidth/2, 60, cwidth/2, cheight-60);

	strings();
    
}

function mousePressed() {
	print(listPoints2.length);
	print(listPoints1.length);
	print("5");

}

Audrey Zheng-Project03

sketch

//Audrey Zheng
//Section A
//audreyz@andrew.cmu.edu
//Project 03

var cx = 0;
var cy = 0;
var radius = 150;
var blue = 40;

var vertices = 4;
var angle = 0;

var listvertices = new Array();
listvertices[0] = new Array(cx-radius, cy);
listvertices[1] = new Array(cx, cy-radius);
listvertices[2] = new Array(cx+radius, cy);
listvertices[3] = new Array(cx, cy+radius);


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

function wheel() {

    beginShape();
    for (i= 0; i <listvertices.length; i++) {
        for (j=0; j<listvertices.length; j++) {
            stroke(50,50,blue);
            line(listvertices[j][0], listvertices[j][1], listvertices[i][0], listvertices[i][1]);

        }
    }
    endShape(CLOSE);



} 


function mousePressed() {


}

function draw() {
    scale(0.8);
	background(255);

    text("p5.js test", 25, 15);

    push();
    translate(320,240);
    rotate(frameCount / 160.0);


    wheel();
    pop();

    //restrict mouseX from 0 to 255
    var m = max(min(mouseX, 255), 0);
    blue = m;

    stroke(50,50,blue);

    if ((mouseX > 320) & (frameCount%2 == 0) && (vertices <13)) { //do not let the points get infinitely bigger
        listvertices = [];
        vertices += 1;

        var j;
        var a = angle;
        for (j=1; j < vertices + 1; j++) {
            print("hi");
            a += 2* Math.PI/vertices; //2pi is whole circle in radians


            var newpoint = new Array(cx + radius*Math.cos(a), cy + radius*Math.sin(a));

            listvertices.push(newpoint);

        }   
    //print(listvertices);
    }

    if ((mouseX < 320) & (frameCount%2 == 0) && (vertices > 2)){
        listvertices = [];
        vertices -= 1;

        var k;
        var a = angle;
        for (k=1; k < vertices + 1; k++) {

            a += 2* Math.PI/vertices; //2pi is whole circle in radians


            var newpoint = new Array(cx + radius*Math.cos(a), cy + radius*Math.sin(a));

            listvertices.push(newpoint);

        }   
    //print(listvertices);
    }

    var size_of_each_line = max(min(mouseX, 230), 60);
    radius = size_of_each_line;



   
}

Audrey Zheng – Looking Outwards – 03

This virtual creature exists as a 3D printable module; it is constructed as a closed mesh, with a spring skeleton that prevents self-intersections. The composite, chronomorphologic model (of the virtual creature over time) retains these printable properties at each time-step. Therefore, no matter how intricate or complex, the digital geometry will always be exported as a valid, 3D printable mesh.

I was really impressed by CMU Architecture student Madeline Gannon and her investigations in the combination of Kinect-based body-scanning. The field of creative coding in architecture is new to me.

The necklace depicted in the first photo is actually a 3D squid pulled across space and time. It is one repeated form merged into a beautiful sculpture. I love the combination of natural (but not random) shape, and the intricate geometry ruled by parametrics. The squid changes shape as it’s being pulled, ruled by simulation physics. There is so much going on behind the scenes in this complex necklace.

The 3D model is then exported for 3D printing. These are one of the projects that are perfect examples of the intersection between digital design and physical fabrication. I think this is an excellent use of the software Reverb. Reverb is context aware, and allowed Madeline to design these ready to print wearables. This new tech uses computer vision to record chronomorphology –  a composite recording of an object’s movement. In this case it records the 3D squid which has rigged limbs. It is constructed as a closed mesh, with a spring skeleton that prevents self-intersections.

See more details about Madeline’s work here.

AudreyZheng-Project02

sketch

/*
Audrey Zheng
Section A
audreyz@andrew.cmu.edu
Assignment-01
*/


var hair_length = 240;
var face_length = 193;
var hair_color = 72;
var eye_pupil = 18;
var cheek = 17;

function setup() {
    createCanvas(468, 584);
}

function draw() {





	background(220);

	//hair
	noStroke();
	fill(hair_color,15,15);
	rect(121,108,215,hair_length,100,100,20,20);


	//body
	noStroke();
	fill(200);
	rect(128,340,206,161, 50);

	//neck
	fill(221,169,112);
	rect(206,305,50,69,20);
	fill(250,194,133);
	rect(218,325,38,49,20);

	//ear
	fill(250,194,133);
	ellipseMode(CORNER);
	ellipse(130,220,38,47);
	ellipse(292,220,38,47);


	//earshadows
	fill(231,165,93);
	ellipse(138,228,27,33);
	ellipse(295,227,27,33);


	//face
	fill(250,194,133);
	rect(149,132,162,face_length,100);

	//bangs
	fill(hair_color,15,15);
	//arc(x, y, w, h, start, stop, [mode])
	arc(185, 120, 150, 80, 0, PI + QUARTER_PI + QUARTER_PI, OPEN);
	arc(98, 55, 100, 150, 0, HALF_PI + QUARTER_PI - 0.5,OPEN); //it goes counter clock-wise

	//eyes
	fill(255);
	rect(172,229,31,23,12);
	rect(254,229,31,23,12);
	fill(0);
	ellipse(179,229,18,eye_pupil);
	ellipse(260,229,18,eye_pupil);

	//nose
	fill(231,165,93);
	triangle(230, 251, 224, 270, 236, 270);

	//eyeliner
	noFill();
	stroke(90, 60, 50);
	strokeWeight(6);
	arc(170, 230, 40, 10, 3.24, 6, OPEN);
	arc(250, 230, 40, 10, 3.33, 6.1, OPEN);

	//cheeks
	noStroke();
	fill(255,172,172);
	rect(160,270,25,cheek,8);
	rect(277,270,25,cheek,8);

	//eyebrows
	stroke(hair_color,15,15);

	strokeWeight(12.0);
	strokeCap(ROUND);
	line(171, 206, 201, 201);
	line(260.5,202.5,291.45,207.81);

	//mouth

	 p2 = { x: 253, y: 254 };
	var p3 = { x: 253, y: 291 },
	 p4 = { x: 215, y: 295 };
	noFill();

	stroke(117,94,94);
	strokeWeight(4.0);
	curve(p2.x, p2.y, p3.x, p3.y, p4.x, p4.y, p4.x, p4.y);
}

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.
    hair_length = random(200, 300);
    face_length = random(190, 210);
    hair_color = random(40,120);
    eye_pupil = random(17,22);
    cheek = random(15,17);

    //eyeSize = random(10, 30);
}

//{ } are braces
// [] are brackets.

/* lol you can do this for comment too */

Audrey Zheng Looking Outwards-02

Felipe Pantone’s “Transformable Systems” at Joshua Liner Gallery.

I think it’s cool how Pantone’s medium of choice is technology. All of his work depicts mechanized processes. I can see his sense of composition and balance throughout his work. The work examines our digital age and the way we process visual information. In this era, we are constantly assaulted with digital information, which can lead to information overload. Pantone shows this by placing jumbo pixels and CMYK printing in the foreground, calling attention to the underlying framework for digital imagery. Yet, there are aspects that stand out in this image-saturated world. Flat aluminum pieces balance the large interactive sculptures and installations.

AudreyZheng-Project01-Face

sketch

/*
Audrey Zheng
Section A
audreyz@andrew.cmu.edu
Assignment-01
*/



function setup() {
    createCanvas(468, 584);
}

function draw() {
	background(220);

	//hair
	noStroke();
	fill(0);
	rect(121,108,215,240,100,100,20,20);



	//body
	noStroke();
	fill(200);
	rect(128,340,206,161, 50);

	//neck
	fill(221,169,112);
	rect(206,305,50,69,20);
	fill(250,194,133);
	rect(218,325,38,49,20);

	//ear
	fill(250,194,133);
	ellipseMode(CORNER);
	ellipse(130,220,38,47);
	ellipse(292,220,38,47);


	//earshadows
	fill(231,165,93);
	ellipse(138,228,27,33);
	ellipse(295,227,27,33);


	//face
	fill(250,194,133);
	rect(149,132,162,193,100);

	//bangs
	fill(0);
	//arc(x, y, w, h, start, stop, [mode])
	arc(185, 120, 150, 80, 0, PI + QUARTER_PI + QUARTER_PI, OPEN);
	arc(98, 55, 100, 150, 0, HALF_PI + QUARTER_PI - 0.5,OPEN); //it goes counter clock-wise

	//eyes
	fill(255);
	rect(172,229,31,23,12);
	rect(254,229,31,23,12);
	fill(0);
	ellipse(179,229,18,18);
	ellipse(260,229,18,18);

	//nose
	fill(231,165,93);
	triangle(230, 251, 224, 270, 236, 270);

	//eyebrows
	noFill();
	stroke(90, 60, 50);
	strokeWeight(6);
	arc(170, 230, 40, 10, 3.24, 6, OPEN);
	arc(250, 230, 40, 10, 3.33, 6.1, OPEN);

	//cheeks
	noStroke();
	fill(255,172,172);
	rect(160,270,25,12,7);
	rect(277,270,25,12,7);

	//eyebrows
	stroke(0);

	strokeWeight(12.0);
	strokeCap(ROUND);
	line(171, 206, 201, 201);
	line(264.5,202.5,295.45,207.81);
    
}

//{ } are braces
// [] are brackets.

/* lol you can do this for comment too */