Keali-LookingOutwards04

(I was so tempted to do one of Theo/Emily’s works again like Connected Worlds because I loved them so much but I wrote about their lecture in LookingOutwards01 so…)

The work I chose is Lit Tree by Mimi Son, an interactive artwork consisting of a real tree in conjunction with digital emulsion: the tree is augmented with video projection, resulting in patterns created from the light hitting the leaves, which act as voxels. The project is described to allow the tree to have a “visceral conversation with human visitors”, thereby becoming a sort of aesthetic object. This project coincides with my usual preferences when it comes to interactive artwork, which is why it appeals to and interests me: nature-based, with a calm, serene, and intimate atmosphere as the audience experiences a subtle, private, albeit dynamic relationship with the single tree. As someone who also usually admires digital work on a screen–immediate and through an interface, this was impressively novel to me in that it combines technical features with a real-life, physical object to create yet an immersive conversation between human and nature. The work also feels very well-resolved because of the specific attribute of light being chosen to be utilized with the tree’s leaves, thus relying on the varying placement, space, surface, and texture to output the beautiful patterns.

Lit Tree link//

Krawleb-Plot

krawlebplotsedit-2krawlebplotsedit-1  krawlebplotsedit-3

This week, I wanted to work on implementing new techniques or processes that I had never tried before, and find something interesting in these processes that emerged from exploration rather than going in with a set vision.

The two concepts I wanted to explore were voronoi diagrams and polar coordinates, neither were very complex alone, but I’ve never really with either and wanted to see what happened when they were combined.

I began by implementing a very ‘naive’ voronoi diagram which just jumped a set X and Y position, and drew a line to the nearest node, which were placed randomly across the canvas.

From here I explored number of nodes, number of subdivisions (lines), drawing rectangles instead of lines, then moved into 3D, voronoi in 3D rectangular space, cubes, lines, rectangles, etc.

Here is a collection of screenshots of the experiments and iteration as I went along:

process-plotter process-plotter2

Just after these screenshots, I explored the idea of only plotting the ‘end’ of the voronoi lines, which is where the nodes are located on the outside of a sphere, and then adding a variation in sphere radius using a noise function, then connecting them using a single curve interpolated between the points. The result was the thin and wire-sculpture structures that I ultimately decided to plot.

I liked the results because I thought they struck an interesting balance between computational and hand-drawn, where there’s a sense of geometry and space, but the lines are wavering and ambiguous, looking as if they could have been hand drawn:

examples-of-exports

Code here:

import peasy.*;
import peasy.org.apache.commons.math.*;
import peasy.org.apache.commons.math.geometry.*;
import peasy.test.*;
import processing.pdf.*;

PeasyCam cam;
boolean savePDF;

//Array of Node objects, where paths are drawn to.
ArrayList nodes = new ArrayList();
//Array of Path objects, which holds paths to be drawn.
ArrayList paths = new ArrayList();

int numNodes = 100;
int subWide = 60;
int subTall = 60;

float minDist;
float nearestX,nearestY,nearestZ;

float margin = 30;
float jitter = 10;
float rad = 100;
float ns = 0.2;
/////////////////////////////SETUP//////////////////////////
void setup(){
  //Visual Things
  size(900,600,P3D);
  pixelDensity(2);
  stroke(30);
  strokeWeight(0.7);
  noFill();
  rectMode(CORNERS);
  ellipseMode(CENTER);
  //camera things
  cam = new PeasyCam(this, 100);
  cam.setMinimumDistance(150);
  cam.setMaximumDistance(400);
  
  //Generate Nodes
  for (int i = 0; i < numNodes; i++){
    Node n = new Node(map(noise(i*ns),0,1,0,rad),
    random(0,2*PI),
    map(i,0,numNodes,0,PI*2));
    nodes.add(n);
  }//end nodes loop
  println("Nodes: "+nodes.size());
  
  //Generate Paths
  for (int col = 0; col < subWide; col++){
    for (int row = 0; row < subTall; row++){
      minDist = 99999999;
      float cRad = rad;
      float cTheta = map(row,0,subWide,0,PI*2);
      float cPhi = map(col,0,subTall,0,PI*2);
      float cx = cRad*sin(cTheta)*cos(cPhi);
      float cy = cRad*sin(cTheta)*sin(cPhi);
      float cz = cRad*cos(cTheta);
      for (int i = 0; i < nodes.size(); i++){
        //If the distance between current XY and Node XY is new minimum
        float distance = dist(cx,cy,cz,nodes.get(i).pos.x,nodes.get(i).pos.y,nodes.get(i).pos.z);
        if ( distance < minDist){
        //Set new minimum and record x,y
        minDist = distance;
        nearestX = nodes.get(i).pos.x;
        nearestY = nodes.get(i).pos.y;
        nearestZ = nodes.get(i).pos.z;
        }//end if distance check
      }//end distance loop
      //Create new path from cx,cy to nearX,nearY
      Path p = new Path(cx,cy,cz,nearestX,nearestY,nearestZ);
      paths.add(p);
    }//end row
  }//end col
  println("Paths: "+paths.size());
} // end setup
/////////////////////////////DRAW//////////////////////////
void draw(){
  background(255);
  if (savePDF == true){
    beginRaw(PDF, "export.pdf");
  }
  
  beginShape();
  //Iterate over path array drawing lines
  for (int p = 0; p < paths.size(); p++){
    //curveVertex(paths.get(p).start.x,paths.get(p).start.y,paths.get(p).start.z);
    curveVertex(paths.get(p).end.x,paths.get(p).end.y,paths.get(p).end.z);
  }//end line loop
  endShape();
  
  
  if (savePDF == true){
  endRaw();
  savePDF = false;
  }
}//end draw
/////////////////////////////KEYPRESSED//////////////////////////
void keyPressed() { if (key == 'p') { savePDF = true; }
}//end keypressed
/////////////////////////////NODE//////////////////////////
class Node {
  PVector pos;
  //Constructor
  Node (float r, float theta, float phi){
    pos = new PVector(r*sin(theta)*cos(phi),r*sin(theta)*sin(phi),r*cos(theta));
  }
}//end node class
/////////////////////////////PATH//////////////////////////
class Path {
  PVector start,end;
  float distance;
  //Constructor
  Path (float sx, float sy, float sz, float ex, float ey, float ez){
    start = new PVector(sx, sy, sz);
    end = new PVector (ex,ey, ez);
    distance = dist(sx, sy, sz,ex,ey, ez);
  }
}//end path class
Written by Comments Off on Krawleb-Plot Posted in Plot

anson-LookingOutwards04

Interactive installations. There are too many. It’s hard to choose one to focus on. Do you go with the commercial / advertising projects? Artwork in galleries? Performance? I could pick Hakanai by the French artists Adrien M and Claire B… or the complete advertising coup of the decade, the Museum of Feelings in New York City (created by Ogilvy / Radical Media), or Kyle McDonald’s Sharing Faces… or Social Galaxy by Black Egg (and Kyle McDonald and Lauren McCarthy, with some code by our own Dan Moore), which utilized the user’s Instagram feed and takes you inside your own images and hashtags, floating around with the feeds of other participants, inside an infinite mirror tunnel. This is inside the Samsung store in Chelsea in NYC. Having participated in this, I can say it is moderately uncomfortable, a little embarrassing, a little thrilling, a little ego-trip, and a little 2001 Space Oddesy.

One of the most well known interactive installation is Chris Milk’s Treachery of Sanctuary which I have seen many people lay claim to, and spread around the internet with abandon.

I like all these installations. I wonder how to grow from the “interactive installation pose” – aka the spread arms and waving them around in front of a projection that responds to your (graceful movement) (flailing). Gesture-based interaction is very compelling to me, but it is also a little repetitive. How can we push this method further? What new technology can we use to allow our natural body language to come through?

I have to also shout out Golan’s list of installations that include a large majority of work done by women. I clearly have more research to do.

screen-shot-2016-09-30-at-9-12-48-am
Image above: Museum of Feelings

kadoin-lookingOutwards04

Nova Jiang’s Ideogenetic Machine is an interactive piece that allows participants to become characters in a generative comic book based on current events. I think it’s pretty cool because I’m pretty interested in storytelling and narrative art. With the audience being the characters, they get to choose how they would react to certain scenarios. The participants can also add their own dialogue to the comic afterwards. It would be cool if in addition to the interactivity, the dialogue was generative. I guess it makes it a little less interactive, but I think acting out a story generative story that responds to the participant it’s taking a photo of would be cool.

takos-clock-Feedback

My main take away was to spend more time documenting my process, and communicating how I went about developing my idea. I had originally based it on a kaleidoscope and had forgotten mandalas existed so I thought it was a fitting comparison that someone made. I’m also glad that my color schemes worked well and that the animation components weren’t overwhelming.

Darca-Plot

Github

My project is initially inspired by the planning diagrams of PCB circuit board. Basically it contains lines with circles on both ends (tiny holes to insert electronic components) that make 45 degree turns. While I tried very hard to grasp the relationships among the lines and small circles, the combination of horizontal, vertical lines and lines with 45 degree angle, led me to another direction of creating something that resembles Frank Lloyd Wright’s window patterns, and somewhat art deco:

127_2_design_december_2015_frank_lloyd_wright_window_ensemble_from_the_oscar_steffens_house_chicago_illinois__wright_auction        7a06aab4d8f5e8497feac1d2125d7e17

So I started to experiment different parameters to generate the patterns that I like the most. Here are some of the early versions(some of them are still on the circuit side):

screen-shot-2016-09-30-at-8-21-28-am

screen-shot-2016-09-30-at-8-21-04-am

screen-shot-2016-09-30-at-8-20-41-am

screen-shot-2016-09-30-at-8-19-58-am

And this is the version that I decided to laser cut:

screen-shot-2016-09-30-at-8-26-34-am
screen-shot-2016-09-30-at-8-22-34-am

Cutting…

img_3996

 

Here is the result of the laser cut(I think processing does not export circles and arcs to dxf file which is needed for laser cutting):

img_4013

I noticed that when laser cutting, the repetition of some lines in the center part(mostly where the pattern is intense and the strokes are on top of each other) of each pattern can cut through the paper therefore creates areas that have a different color from the paper, therefore provides diversity and glowing effects to the pattern.

In a dark room towards the sun with high contrast:

img_4123

img_4140       img_4136

img_4137       img_4134 

Finally a glitch:

screen-shot-2016-09-30-at-8-20-10-am

 

 

 

 

 

Written by Comments Off on Darca-Plot Posted in Plot

Lumar-LookingOutwards04

screen-shot-2016-09-30-at-8-25-49-am

I really wanted to go – but I fell asleeeeeeeeeeep.

Anyway, on another note: Daniel Rozin!!!!

http://www.smoothware.com/danny/woodenmirror.html

“Wooden Mirror – 1999
830 square pieces of wood, 830 servo motors, control electronics, video camera, computer, wood frame.
Size – W 67” x H 80” x D 10” (170cm , 203cm, 25cm).
Built in 1999, this is the first mechanical mirror I built. This piece explores the line between digital and physical, using a warm and natural material such as wood to portray the abstract notion of digital pixels.”

I think his work with making wooden mirrors has a particularly good point in relation to the plotter project – something that I wish I had considered more (should’ve restocked on my different pens) was the physical medium used for computational output. His quote “explores the line between digital and physical” I think is a key consideration in making a successful plotter rendition and something that makes me wish I had thought of more beyond simply bringing in different pens (pens that I should have bought replacement nibs for before 2 am of wednesday night….thursday morning….).

The wooden mirror wouldn’t have been quite as successful if it was simply a digital rendition of video input  –  the fact that the data effects something physical (and depends on the physical environment like lighting and angles of the wood blocks to create value!) in the world makes the piece all the more enthralling. Affecting and responding/dependent to digital and physical environment. WOw. Mind twist. It doesn’t work out of context (it needs the light to be that particular angle in order for the tilt of the squares to work to create shadow)

 

tigop-Plot

image image img_4370 image image imageplotter plotter1 plotter2 plotter3 plotter4 plotter5 plotter6 plotter7 plotter8 plotter9 plotter10 plotter11 plotter12 I would say that I went with premises I and II. I was inspired by 8-Ecke, and found a way to generate something similar and build off, while also creating a system which used randomization in an organized way. I generated randomized shapes, and the number of shapes was different each time a pdf was created. I created a dice rolling function, which would spit out an integer from one to six. I called the die rolling function at each subsection that a shape was drawn. the number of rows and columns determined the number of shapes. If the number one was rolled, a shape would not be drawn, and in its place, a hole would be cut out. I manipulated the strokeWeight and colors of the parts of my composition as a way of directing the laser cutter to do what I wanted. I do not undersand because sometimes, it will still cut out a random shape, but it will cut out so few that I almost find it to be another element which adds complexity to the piece. I really enjoyed working on this one, I am in the process of making a book with what I have printed from the laser cutter. I liked the idea of allowing the holes to serve as little peepholes so you could peer through to the next page. While making this project, I felt a lot like I was in a printmaking studio, just because of how getting a nice print takes time. There is something elegant about the work when it is in physical form.

Written by Comments Off on tigop-Plot Posted in Plot

tigop-Clock-Feedback

So I got from my feedback that though some people found the concept of the work to be intriguing, most were disappointed by the visual representation of my concept. I see that it needs visual development that connects to the concept in a stronger manner. I have never thought about citing my artwork before (because of the information being provided, I mean I’ve cited sources of inspiration before but never hard data.) I suppose it is because I’ve never really done data visualization before. I understand that in the future, I should avoid using a default font. I can’t wait to make more computational projects with an underlying concept in the future. Woo! So happy to hear that nobody seemed to have a problem with actually reading the time!!!

tigop-Looking Outwards 04

http://archive.turbulence.org/Works/heat/index2.html

looking-outwards04

What a striking method of data representation! With the increase in climate, the louder and more apparent the “heartbeat” of New York is. It even creates a frightening sound! When I saw that this work had an underlying concept of making a statement about climate change, it made me happy to see a form of activism through the use of computing. It is inspiring, and I am happy to see what is possible with computing for artistic, social, and political practices. I am interested in looking at more of Andrea Polli’s work, I feel like her work could have a huge influence on me.

Guodu-Plot

My interpretation of a gradient/transition from order to disorder was inspired by design drawing warmups that I do everyday. It mostly begins with drawing straight lines, then drawing a few 2D shapes (squares and circles) then moving to 3D forms, the most important being the cube.

20160930_061611-copy

Here are some warmup pages from my sketchbook:

20160930_063520-copy

20160930_061354-copy

Deconstructing the cube, and ultimately drawing, it is all about connecting points and drawing lines. I wanted a gradient that gave the sense of building upon each other, from dots, to lines, to squares, to cubes. I also started to think about machines or robots “warming up in drawing” because by design, they are really meant to draw complicated, generative, and parametric designs that humans typically can’t, or at least not in an efficient, and perfectly precise manner. How do other people perceive machines drawing imperfectly? I’m intrigued by the idea to have a machine mimic my drawing style.

In the end, the concept that I had didn’t translate too well into code. I was too focused on the idea of a machine mimicking my drawing style and I realized too late that it’s extremely easy for a machine to draw built in drawing functions, which have taken me months to master. Secondly the drawings and code are in sections, they aren’t really related or parametric. For next time, I’ll focus more on parametric design and compositions that challenge the plotter more, or are appropriate for laser cutting.

While I was really excited to compare my hand drawings to the plotter drawings, the plotter had some technical difficulties. I apologize for not having the intended deliverable, but here it is in on laser cut 1/8″ plywood:

20161003_002940 Power was a little too high for my first laser cut, but it was interesting to see certain parts poking through.

20161003_003019 20161003_002952 20161003_002904 20161003_003007

Processing Screenshot:

screen-shot-2016-10-03-at-4-41-01-pm

 

 

Kelc – ResponsetoClockFeedback

Overall I think sticking with the simpler concept of a clock may have been a lot easier to execute, if I had sat with it a little longer. I bit off a lot more than I could chew in the end and ended up jumbling up the concept in the process. In general I think taking the process step by step and not aiming high before I’ve set the foundations would benefit me.

Kelc – Plot

 Intro

For my plotter my goal was to make a Mandala generator. As a disclaimer, I am not Buddhist or Hindu, however I’ve been intrigued with and reading about Mandalas for a couple years now and I am very interested with their form. Every Mandala has a sort of uniqueness about it but they tend toward the same geometrical shapes, composition (symmetry) and patterns. Thus I wanted to explore the idea of computationally generating a highly spirtual yet mass-producible symbol.

Process

I started by choosing shapes and patterns I see very often in Mandalas. These same shapes tend to occur often in Henna designs as well, some more complex than others. I settled on a few of the simpler ones to code: circles (of course), polygons, lotus petals (the teardrop curve),  the bumpy moon cake shaped flower (most prevalent on the third image pictured above), and the dollop shaped curve(most prevalent in the middle image). Mandalas are also highly symmetrical, therefore unit circles came back from high school trigonometry to haunt me. This also constrained the time I had to express more of the complexities of the Mandala I initially wanted, such as complex geometry, shading and patterns.

sketches

img002img001

test3

Github Gist Link

 

img001-3 img001-2

Conclusion

Although the computer generated images took some time, the laser cutter took about 14 minutes each to produce these. My lesson existed more in the realm of the difficulty of producing random patterns but with a goal aesthetic, rather than the time it takes to cut them in real life. I guess you could say I’ve achieved a greater appreciation for the art of designing Mandalas as well as Henna– its not as easy as I thought to compute their visual motifs.

Written by Comments Off on Kelc – Plot Posted in Plot

cambu-Plot

dsc01883

Table of Contents:
  1. Process
  2. Technical Details
  3. Photo & Video Gallery
  4. Full Code Embed

Process

I kicked off my thought process for this project thinking about this font specimen and how I liked the seemingly arbitrary selection of numbers used. I wanted to create a system that would allow the continual generation of such values and also the spatial placement of such (typographic) numbers.

In contrast to my clock project, where I did a lot of drawing in Sketch App to define my design before beginning to code, with this project, I jumped into Processing almost right away. I did this to ’embrace the symptom’  and let the limitations of the tool guide my way through the design problem.

To be completely honest, this is a foreign way of working for me. I’m very used to asking the traditional question of “What should be designed?”, not the engineering question of “what is designable?” Playing with this question was an ongoing game of discovery during the project and one I’m learning to better understand. Furthermore, the way I setup my code using the provided template made my program consistently export PDFs throughout my working process, so I have a good amount of iteration history. [see above and below]

Technical Details

From an engineering point of view, this project involved more complexity than I’ve dealt with in the past. To start, I used a dynamic-grid-column drawing system to define the regions of my canvas. Then I use those predefined rectangular shapes to write numbers inside of them using the createFont() method, but importantly, instead of drawing the fonts to the canvas, I drew them to a JAVA2D PGraphics ‘offscreen’ canvas. I remixed some of the code for this from this github project. This means all of the numbers are being drawn in my custom font, GT Walsheim, directly onto an image object instead onto the primary canvas. The reason I do this is to allow for easy distortion and warping of the pixels and elements without having to convert text to outlines and deal with bezier curves.

The followup question was how do I get my design back out of raster format into ‘vector/object’ format, so I can use an exported PDF with the AkiDraw device? I used a method for scanning the pixels of the raster with the get() method, then I’m able to ‘etch the drawing’ back out of pixels and place objects that will export in the PDF where the colour values register in certain ranges. [see the video below for an example]

Etching Method Test Etching Method Test

Photo & Video Gallery

gallery

Full Code Embed

// see https://processing.org/reference/libraries/pdf/index.html //<>// //<>//
import processing.pdf.*;
boolean bRecordingPDF;
int pdfOutputCount = 0; 
PFont myFont;
Gridmaker newGrid;
PGraphics pg;
int textSize = 40;
float magicYimpactor;
float amount; 
float currentChaos;

void setup() {
  size(612, 792);
  bRecordingPDF = true;
  myFont = createFont("GT-Walsheim-Thin-Trial.otf", textSize);
  textFont(myFont);

  newGrid = new Gridmaker();
  pg = createGraphics(width, height, JAVA2D); // create a PGraphics the same size as the main sketch display window
}

void draw() {
  if (bRecordingPDF) {
    background(255); // this should come BEFORE beginRecord()

    //START -- -- -- CAMBU FUNCTIONS
    pg.beginDraw(); // start drawing to the PGraphics
    drawGrid();
    chaosRepresentation();

    pg.endDraw(); // finish drawing to the PGraphics
    //END -- -- -- CAMBU FUNCTIONS
    image(pg, 0, 0);
    // -- -- -- function that reads all of pg and places points/ellipses at certain values of a certain brightness
    beginRecord(PDF, "cambu_" + pdfOutputCount + ".pdf");
    rasterToNotVector();
    endRecord();
    bRecordingPDF = false;
    pdfOutputCount++;
  }
}

void keyPressed() {
  //rasterToNotVector();
  //magicYimpactor = mouseX*0.0005;
  magicYimpactor = mouseX*0.05;
  //magicXXX = mouseX;
  //magicXimpactor = mouseY*0.0005;
  //amount = mouseX*0.0005;
  bRecordingPDF = true;
}

void chaosRepresentation() {
  float chaosStart = 1;
  int startX = 0;
  int startY = 0;

  int chaosIndex = 0;
  for (int y = 0; y < newGrid.numberOfRows; y++) { //verticalDivisor, x amount
    startX = 0;
    for (int x = 0; x < newGrid.numberOfCols; x++) { // horizontalDivisor, y amount
      fill((255/newGrid.numberOfCols)*(y/2), (255/newGrid.numberOfRows)*x, 200);
      //rect(startX,startY,newGrid.horizontalDivisor,newGrid.verticalDivisor); //within the domain & range of this rectangle, transform the pixels on pg 
      chaosIndex = chaosIndex + 1;
      currentChaos = chaosStart * chaosIndex;
      charsHere(startX, startY, currentChaos);
      startX = startX + newGrid.horizontalDivisor;
    }
    startY = startY + newGrid.verticalDivisor;
  }
}

void charsHere(int x, int y, float currentChaos) {
  int a = round((x + y)*.5);

  pg.textFont(myFont);
  pg.textSize(textSize);
  pg.fill(0, 0, 0);

  int xDes = x+(newGrid.horizontalDivisor/16);
  int yDes = y-(newGrid.verticalDivisor/4);

  pg.text(a, xDes, yDes);
  quadrantDestoryer(xDes, yDes, currentChaos); // operates between (startX, startY, newGrid.horizontalDivisor, newGrid.verticalDivisor)
}

void quadrantDestoryer(int xToDes, int yToDes, float currentChaos) {
  float xA = xToDes + 0.6*newGrid.horizontalDivisor - noise(currentChaos, yToDes, xToDes);
  float yA = yToDes - 0.2*newGrid.verticalDivisor;

  pg.fill(255, 235, 250);
  //pg.noStroke();
  //pg.ellipse(xToDes + 0.5*newGrid.horizontalDivisor * noise(currentChaos, yToDes), yToDes - 0.2*newGrid.verticalDivisor, noise(currentChaos, yToDes)*0.5*currentChaos, 0.05*currentChaos);
  //pg.ellipse(xA, yA, random(0, newGrid.horizontalDivisor)*0.8, noise(50, newGrid.horizontalDivisor)*2);
  //pg.rect(xA-8, yA, xA+ 30, yA + newGrid.verticalDivisor * 0.5);
  //pg.ellipse(xToDes, yToDes, currentChaos*noise(xToDes, yToDes), noise(currentChaos+currentChaos));
}

void rasterToNotVector() {//y down
  for (int y = 0; y < height; y ++) {
    for (int x = 0; x < width; x++) { //x across              
      color cp = get(x, y);
      int b = (int)blue(cp);
      int g = (int)green(cp); 
      int r = (int)red(cp);
      int tolerance = 150;

      float noised = 30;

      if (r < tolerance && g < tolerance && b < tolerance) { 

        float amount = 30;

        float nx = noise(x/noised, y/noised); 
        float ny = noise(magicYimpactor + x/noised, magicYimpactor + y/noised); 

        nx = map(nx, 0, 1, -amount, amount); //cc to Golan for explaining distortion fields.

        ny = map(ny, 0, 1, -amount, amount*magicYimpactor); 

        //line(x, y, x+nx, y+ny);
        strokeWeight(2);
        fill(34, 78, 240);
        ellipse(x + nx*0.5, y + ny/2, 4, 3);
      }
    }
  }
}
void drawGrid() {
  noStroke();
  int i = 0;
  for (int y = 0; y < newGrid.totalHeight; y = y + newGrid.verticalDivisor) { //squares down
    if (i % 2 == 0) {
      fill(140, 140, 140, 80);
    } else {
      fill(240, 240, 240, 80);
    } //if even, else odd
    i++;
  }

  int j = 0;
  for (int x = 0; x < newGrid.totalWidth; x = x + newGrid.horizontalDivisor) { ////squares across
    if (j % 2 == 0) {
      fill(140, 140, 140, 80);
    } else {
      fill(240, 240, 240, 80);
    } //if even, else odd
    j++;
  }
}

class Gridmaker {
  int totalHeight = height;
  int totalWidth = width;
  int numberOfRows = 12;
  int numberOfCols = 54;
  int verticalDivisor = round(totalHeight/numberOfRows);
  int horizontalDivisor = totalWidth/numberOfCols;
}

Written by Comments Off on cambu-Plot Posted in Plot

Catlu – Plot

Final Product:

budha-face-physical-plot

Link to code on Github:

https://github.com/catlu4416/60-212/blob/master/catluBuddhaPlot.pde

For this project, I had 2 main ideas I thought about. The first idea I pursued was the idea of a falling leaf that would be pushed around by an invisible wind. The leaf would leave a trail on the drawing and travel from top to bottom, chaos to order. This idea I started coding until I realized that visually it did not seem very interesting, and the idea gradually became boring. The second idea I had was inspired by my trip to see family in China this past summer. There was one day we were touring the Mogao Caves, and I distinctly remember the walls full of mini Buddhas that were almost identical but ever so different. Golan’s second prompt reminded me of them, and I decided to let this guide me. I made a program so that with every click, a new, slightly different set of Buddha heads appeared. I went with a very stylized and simple look for the small Buddha heads and wanted to create something with a more ancient sort of feeling. To achieve this, I first tried paper and then ultimately wood veneer with a laser cutter instead of a plotter so I could get the distinct mark of the burnt wood markings. Having to come up with something physical was different, and made me think about both how the code would look on the screen, and how it would translate over onto a physical object. Overall, I’m happy with my result. I think the laser cutting on the wood veneer was successful, although there definitely could be a few more tweaks and maybe more detail/decoration.

catlubuddhaplotjpg

I couldn’t get good video of the laser cutter doing my code because the cover on the laser cutter is dark to protect your eyes. The camera brightness never adjusted right, but you can still see a bit.

 

Here’s a picture of the laser cutter in action.

20160930_031425

Here are inspiration and sketch pictures.

mogao-caves

20160929_210843 20160929_210941 20160929_210934

 

 

 

 

 

 

Written by Comments Off on Catlu – Plot Posted in Plot

cambu-Clock-Feedback

I was quite surprised to see the feedback I received; in general, it was more positive than I expected. My personal feeling when finishing the project was that the idea had potential, but that I hadn’t executed it very well. This notion was reflected in the feedback to a degree, but I expected to hear more of it. If I were doing the project again, I would make sure to make the sub-hour time frame feel more dynamic. I would also make sure it rendered as a gradient.

Guodu-Clock-Feedback

My concept was sort of a humorous and light take on a clock: What TIME is it?

TIME represented:

T – Seconds / I – Minutes / M – Hours / E – Milliseconds

The feedback I got was overall very kind, positive, and constructive. I thought I did much worse than some of the comments I received, but I was glad that the concept felt “cute, simple, and effective.” I apologize if my clock gave anxiety because it was glitchy, that was not my intention.

Overall there is a LOT I need to work on. Right now the TIME does not actually represent the time, and I would like it to so it is at least somewhat clear as to what time it is. The letters are also rotating on the left, bottom corner access, whereas I’d like it to be in the bottom center. Aside from these technical difficulties, I also need to work on:

  • having more intentional design (i.e. color palette choice, text choice)
  • more process and sketches as to how I arrived at my current design and typography interest
  • working on its potential, such as possible an interactive mouse click that changes the color, font, enlarges the clocks, or more text integrated into it so it doesn’t just great “what time is it?” 

Overall, “This project has potential but seems a bit simple, just rotating numbers”.

 

Jaqaur – Plot

I loved the idea of plotter-made artwork when I first heard about it, but as it turned out, I didn’t have any great plotter ideas. Unlike screens, plotters can’t create moving images (which I usually like to make). They also don’t have nearly the range of colors, gradients, and opacities that screens do. Basically everything had to be line-based. I spent the first half of this week trying to make a maze generator, and while I still like that idea in theory, I struggled to come up with a creative way to design a maze that wouldn’t be too hard to generate with a program. Then, one night I was at Resnik and thought “What about binary trees?” I remembered from 15-051 that real numbers can be represented as line-based “trees”, and quickly drew out on a receipt (see below) all eight possible trees for the number 3. I thought that with a little randomization, those trees could look really nice, so I changed my plan.

img_3075

First, I wrote up code that would just generate eight random trees (checking each time to make sure it doesn’t do an arrangement it has done before) and turn them into a pdf. To be safe, I printed this on the Axidraw with pen:

img_3070

However, I still wanted to do more. So, I restructured my code entirely such that instead of generating a pdf, it would control the Axidraw in real time. I did this so I could have the Axidraw paint the trees. I added some code so that it would go back for more ink before every tree, and after a few messy trial runs, it worked as well as I imagined it would! The video at the beginning of this post shows the Axidraw painting my design, which I named “Three Trees.” Some pictures of my final paintings are below, followed by pictures of the digital images the computer generated while making them.

img_3115
screen-shot-2016-09-29-at-11-33-03-pm
img_3114
img_3109

They actually turned out more artistic-looking than I originally anticipated. Several people have told me they look like characters in a foreign language, but I prefer to think they look like little dancing people (with stretched out bodies, I guess). Sometimes the ink splashed or dripped a bit, and I think that makes it look a little more hand-painted. I wish I could have made a maze generator work, but I really do like my trees!

Here is a link to the pdf generating code on Github.
Here is a link to the paintbrush version.

Written by Comments Off on Jaqaur – Plot Posted in Plot

Xastol – LookingOutwards04

Kimchi and Chips’ piece, Light Barrier, concerns a form of real-time processing involving the reflection of light.

The piece involves sound and the reflection of light through mirrors. Not only is this an interaction between the user who experiences the reflections, it’s an interaction between space and time. (“The light installation creates floating graphic objects which animate through space as they do through time.”)

I enjoy this interaction mainly because it allows for new forms of visuals to be experienced in open space. As a filmmaker, light plays a huge role in filming and projecting movies. I also believe this project leaves open the discussion of using light, and open space as seen in the video, as a medium for having films/images “appear out of thin air”. In general, Kimchi and Chips’ work set the new standard for interactive visual experiences and create the opportunity for artists to develop new forms of media through light.

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

hizlik-Plot

img_7208

img_7210

This project doesn’t have sketches because I began my process with an intent on experimenting with my previous project, Loops. And my experiment was so successful that I never had reason to try another idea. Instead of drawing the cycloid circles in the Loop project, I tried plotting their center points throughout their movement in a circle (within a circle, within a circle, etc). This worked out beautifully, creating an intricate, delicate looking pattern. I then found an optimal variable to modify in as many ways as I could think of, changing the constants and variables with different mathematical operations, negative values, and additional constants and value changes. I named each work after it’s mathematical expression, which also helped in recreating it later if I needed to revisit it.

ezgif-com-gif-makerimg_7498

This is the original loop project, followed by an example of my modified visuals for this project drawing themselves:

bwdrawdemo

I created over 20 unique designs, a few of which are outlined below:

0-5xi 2i div1-5-0-5i div3-0-5xi div3-0-1xi

collage

Written by Comments Off on hizlik-Plot Posted in Plot

ngdon-lookingoutwards04

Rafael Loazno’s “Please Empty Your Pockets”

link to the project
This installation consists of “a conveyor belt with a computerized scanner that records and accumulates everything that passes under it”.
I think it is a really clever use of a combination of scanner and screen, and the moment people remove their object and the image of their object is still there feels really magical, and interactive art is wonderful often just because of these magical moments.
Moreover the interaction looks really great. People not only interact with the piece, but also in some way interact with those who interacted with the piece before them, since they can see all the things that has ever been placed on the belt. And then they add their own contribution to this collection of things. It’s like leaving one’s own mark on a monument.
Visually the piece has a very special style that reminds me of pop art, since it consists of many small, colorful every day objects.
It also make me contemplate what does it mean for an object to be in a pocket. It needs to be small to fit in a pocket, and it is necessary for it to be quickly accessible. Seeing the all these contents of people’s pockets almost make me believe objects kept in pockets should belong to a category. Like dogs, cats and pocket objects.

kadoin-clock-feedback

I got a lot of positive feedback on the aesthetic and concept of my clock. I’d like to go into video game design or animation someday, so those comments were pretty encouraging. My code is a bit of a mess though with the giant lists of coordinates and repetitive functions. It was a bit embarrassing how much I hard coded instead of writing something that would have done it all for me, but laziness got the better of me.

ngdon-Clock-Feedback

In the feedback many people mentioned that they’re confused by the fifth digit in my clock. Suggestions such as separating the digits with semicolons are made, which I think is an option that is doable, but compromises simplicity. Another way I can think of is to remove the last digit altogether. However then people wouldn’t notice that this is a “special” clock since most of them don’t have the patience to wait a minute for it to change. It’s a struggle.

Tega said that the sticks should bounce on landing, and I think that’s a great idea. I can try it by simply tweaking some parameters.

I feel happy that people like my clock.

Xastol – Plot

GENERATIVE FACES

final1_xastol
I decided to generate some faces…or rather some “creepers” entirely out of ellipses.

INITIAL THOUGHTS

sketchface_xastol
Initial sketches and thoughts.

prototype1_xastol
The first prototype for the faces.

prototype0_xastol

Another idea I had resulted in using these “creepers” as pixels and generating another grid like visual. However, there were some complications in how it would render out on paper and also wasn’t as charming as the previous.

PROCESS

plot_gif_xastol
Some action shots of the plotter. (Action Shot #1)

process1_xastol
Action Shot #2

prototype2-2_xastol
I ended up rendering a PDF entirely for the creeper’s lower region (i.e. – spine, vomit, etc.). This would make it easier when switching out the colors(pens) used on the plotters.

prototype2-1_xastol
Here is the other PDF of the creeper faces.

inproccshot_xastol
In program shot.

firstrendering_xastol
First rendering.


CONCLUSION

The process for generating these creeper faces involved a lot of trial and error (specifically in the early programming stages). I initially created a grid of these creepers as my initial idea. However, I was unsatisfied with what I had, so I began to play around with the number of generated creepers and ended up making a mess of an image (see last picture thoughts). After some consulting with Golan, I ended up going back to my original idea and made some changes to the creepers to make each individual one more unique and awkward (differences in “bodies” and angles of faces).

Much different from the almost instant timing of a program, the rendering of the image using a plotter took a while. Although my particular image didn’t require a lot to plot, there were complications with getting the plotter to align evenly throughout the page. If I had the chance to go back in and make some changes, I think I would change the weight of the pens (uneven because of pressure of plotter at different points). Overall, I was satisfied with what I came up with and glad I went back to my initial idea.

CODE

//Template Provided by Golan
// Xavier Apostol (Xastol)
// 60-212 (8:30 - 11:20am & 1:30 - 4:20pm)
// xapostol@andrew.cmu.edu
// Composition For A Line Plotter (Processing)

import processing.pdf.*;
boolean bRecordingPDF;
int pdfOutputCount = 11; 
 
void setup() {
  size(1000, 1000);
  bRecordingPDF = true;
  strokeWeight(1);
}
 
void keyPressed() {
  // When you press a key, it will initiate a PDF export
  bRecordingPDF = true;
}
 
void draw() {
  if (bRecordingPDF) {
    background(255); // this should come BEFORE beginRecord()
    beginRecord(PDF, "weird" + pdfOutputCount + ".pdf");
 
//--------------------------------------------------------------
    //Make all drawings here.
    noFill(); 
    beginShape();
    float offset = 100;
    float ranX = random(100);
    float ranY = random(100);
    for (float x=offset; x <= width - offset/2; x+=offset) {
      for (float y=offset; y <= height - offset/2; y+=offset) {
        creeper_pixel(x,y, 1, offset);
      }
    }
    endShape();
//--------------------------------------------------------------
    endRecord();
    bRecordingPDF = false;
    pdfOutputCount++;
  }
}

void creeper_pixel(float x,float y, float sz, float spacing) {
  float genSz = spacing/4;
  float fcOff = genSz/2;
  float spineX = x;
  float spineY = y;
  
  noFill();
  beginShape();
  
  //Eyes
  for (float i=0; i <= sz; i++) {
    float lEyeX = sin(sz*i) + random(genSz);
    float lEyeY = cos(sz*i) + random(genSz);
    float rEyeX = sin(sz*i) + random(genSz);
    float rEyeY = cos(sz*i) + random(genSz);
    ellipse(x-fcOff,y, lEyeX,lEyeY);
    ellipse(x+fcOff,y, rEyeX,rEyeY);
  }
  
  //Head
  for (float j=0; j < sz; j++) {
    //Face
    float rotInt = 15;
    float hdX = cos(sz*j) + random(genSz, 3*genSz);
    float hdY = sin(sz*j) + random(genSz, 3*genSz);
    spineY += (hdY/2);
    pushMatrix();
    translate(x,y);
    rotate(radians(random(-rotInt,rotInt)));
    ellipse(0,0, hdX,hdY);
    popMatrix();
    
    //Mouth
    float mthX = cos(sz*j) + random(genSz);
    float mthY = sin(sz*j) + random(genSz);
    ellipse(x,y+fcOff, mthX,mthY);
  }
  
  
  //Spine(Body)
  for (float s=0; s < 5; s++) {
    float spineSz = random(genSz/2);
    spineX += random(-8, 8);
    spineY += random(genSz/3);
    ellipse(spineX,spineY, spineSz,spineSz); 
  }
  
  endShape();
}
Written by Comments Off on Xastol – Plot Posted in Plot

hizlik-Clock-Feedback

A majority of my feedback had two main themes. One was that a lot of people found my clock to be pleasant to watch, even calling it ‘meditative.’ A particular point of interest was the minute-to-minute transition (with the blossoms flying off). The other, more critical feedback was that my clock is hard to read, especially without some directions regarding what everything means. While I understand that, I figured that would be the issue when making a more “realistic” representation of nature through time-based changes, so I am not too worried. There are generally two types of clock artworks anyway, ones that represent time and ones that use time to change some aspects of it. This is somewhere in between but I guess leaning more towards the “using time to make a visual” side. Something that I don’t like but cannot change is how the tree looks at early hours (with few branches). Something that I don’t like but could change is the logic in the generation of branches, mainly involivng starting points to prevent odd-shaped trees.

Also, to the one person that mentioned seeing the actual timestamp in the top corner occasionally: if you press ‘d’ it enters ‘debug mode’ which shows time.