The work of Chuck close demonstrates an almost algorithmic perception of the visual image. One wonders if in fact he actually sees the world in this manner. There’s a quality to this work that creates a tension with human perception. We are seeing the overall sense of an image but the individual features of that image are in a way unrelated.
What does it mean for a view to apprehend this image? At what level does a viewer understand or appreciate the emphasis on process? Does the viewer appreciate the aesthetics apart from the labor? How can a viewer appreciate the image more deeply?
For me I thought that if I tried to re-create the visual feel of a Chuck Close that I’d develop some understanding of his experience. I wrote a series of quick tests using the processing library. After many revisions ( which you can see on flickr I ended up with this result:
Although crude I felt this started to represent some of the understanding of his work. My understanding of his accomplishment grew. I also came across a great paper that looked at this in more detail – talking about technical qualities of Chuck Close work and doing a more accurate reproduction:
http://www.cs.princeton.edu/gfx/proj/isolum/
One of my earlier revs shows the amount of process I went through – first using random scatter plots, then trying to stay more on a grid, trying to introduce noise, and trying to work closer and closer to many of the attributes that Chuck Close exhibited. I found that it was difficult to make the computer generated image sufficiently dirty or noisy to approximate the feel of a real canvas.
My own source code was a more modest attempt and as usual here it is:
PImage a; int w = 454; int h = 480; void setup() { size(w,h); background(0,0,200); colorMode(HSB); a = loadImage("/Users/anselm/p3.jpg"); noStroke(); } int x = 10; int y = 10; int sizex = 12; int sizey = 12; int count = w*h; void draw() { x = int(random(0,w/10)) * 10; y = int(random(0,h/10)) * 10; count = count - 1; if ( count < 1 ) { count = w*h; } color c = a.get(x,y); float h = hue(c) + random(10) - 5; float s = saturation(c) + random(10); float b = brightness(c) + random(10) -5 + 20; sizex = 12; sizey = 12; x = x + int(random(0,3)-1); y = y + int(random(0,3)-1); fill(color(h,s,b,200)); sizex = int(sizex - random(0,3)); sizey = int(sizey - random(0,3)); ellipse((int)x,(int) y, sizex,sizey); x = x + int(random(0,3)-1); y = y + int(random(0,3)-1); fill(color(h,s,b+100,200)); sizex = int(sizex - random(0,3)); sizey = int(sizey - random(0,3)); ellipse((int)x,(int) y, sizex,sizey); x = x + int(random(0,3)-1); y = y + int(random(0,3)-1); fill(color(h,s,b+10,200)); sizex = int(sizex - random(0,3)); sizey = int(sizey - random(0,3)); ellipse((int)x,(int) y, sizex,sizey); x = x + int(random(0,3)-1); y = y + int(random(0,3)-1); fill(color(h,s,b,200)); sizex = int(sizex - random(0,3)); sizey = int(sizey - random(0,3)); ellipse((int)x,(int) y, sizex,sizey); }
One Comment
Awesome! I want one!