Graphics 2
From IPRE Wiki
Anna Benjamin
Mentors: Dianna Xu and Deepak Kumar
Abstract
What is art? What about computer graphics? Is a written code art? Is it creative? Is it unique? How do we look at graphic art? Do we critique graphic art by the code, by the final piece, or by both? Is one more important than the other? How do we look at computer art differently than traditional art?
When considering computer graphics, we must combine coding with artistic skills. Because this field is a blend of these two (some might say) very different fields, it is important to be able to look at graphics from both viewpoints.
Processing was founded by Ben Fry and Casey Reas as a software sketchbook in 2001. It is an integrated development environment (IDE) created with the goal of teaching basic computer programming skills within a visual context. However, Processing has since become an IDE used to create finished professional works as well. This environment is an example of how coding and art can be merged harmoniously.
My work this summer will explore what can be done in art with Processing. Using this environment I will create a series of abstract works with code. There are many different ways in which to represent a single object in traditional art forms, likewise in Processing. Through my series, I will explore all the techniques of representation that Processing is capable of. I will produce a set of works that represent this single object in various ways. Through my processes I will be considering what this type of art means and I will be exploring answers to the questions above. I am approaching this project and these questions from an artistic standpoint, and so it will be very interesting for me to work towards an artwork through this different form of representation.
Goals
Daily Blog
Week 1 (June 7 - June 11)
Monday, June 7th
- Today I began working with Jenny. I started familiarizing myself with Processing, beginning with the Processing website. I began with the Learning tutorials on the website, and worked through the Getting Started page. I went through the example codes, and also looked through the example sketches, testing out a bunch of them myself. I also looked at a few of the Exhibition Archives, which allowed me to see what the Processing software is capable of. In addition, I began my wiki page.
Tuesday, June 8th
- This morning I started with Processing: Creative Coding and Computational Art, by Ira Greenberg.
- Introduction How Greenberg transitioned from being a traditionally trained artist to exploring an interest in programming for artists. Greenberg's goal in this book is to promote coding as an art form. He points out the relevance of math in the arts, especially in organic and natural representations.
- Part One: Theory of Processing and Computational Art
- Chapter 1: Code Art Greenberg introduces the idea of what makes an image, object, or design "work" from an aesthetic standpoint.
- Chapter 2: Creative Coding Greenberg presents the argument that Processing is a programing environment, rather than a programming language. He differentiates Processing from Java by the fact that code can be written in a function-based style, and non-object-oriented structure. With respect to Java, Processing has all the benefits, but is simpler and more optimal for creative coding. An algorithm is "a finite step-by-step procedure used for solving a problem."
Wednesday, June 9th
- In the morning I went over more chapters in Processing: Creative Coding and Computational Art.
- Chapter 3: Code Grammar 101 This chapter goes over the basics of programming using Processing. This chapter is a really helpful refresher for me on coding, and very helpful in seeing some of the differences between Processing and Python. It also goes over the differences between procedural programming and orbject-oriented programming (OOP).
- Chapter 3: Code Grammar 101 This chapter goes over the basics of programming using Processing. This chapter is a really helpful refresher for me on coding, and very helpful in seeing some of the differences between Processing and Python. It also goes over the differences between procedural programming and orbject-oriented programming (OOP).
- In the afternoon, Jenny and I had a discussion about what a combination of artistic creativity and computer science can result in. We discussed Pixar and their animated films. Jenny then brought up the controversy of computer generated art. I explored this topic more through various articles. There seems to be a wide-spread question of whether or not this type of art really IS art; whether it is original; . If one person writes a code to generate a work of art in the style of a known artist, does that work of art belong to that person, or the artist?; is the code the work of art?; is this creative?
- Here are some of the articles I found:
- Computer-Generated Art, Music, and Literature: Philosophical Conundrums by Joseph S. Fulda, Program in Computer Technology and Applications, Columbia University
- Creativity in Algorithmic Art by Frieder Nake, University of Bremen
- Incorporating Characteristics of Human Creativity into an Evolutionary Art Algorithm by Steve DiPaola, Simon Fraser University, and Liane Gabora, University of British Columbia
Thursday, June 10th
- Chapter 4: Computer Graphics, the Fun, Easy Way In this chapter, Greenberg gives an overview of computer graphics. He identifies four major application areas:
- Display of information - data visualization
- Design - integration of the visual requirements with the analytical or structural requirements (Form + Function)
- Simulation and animation - similar to "display of information," but inclusive of time and verisimilitude (the appearance of reality)
- User interfaces
- Raster graphics - continuous tone images, not delineated into precise shapes with smooth edges, but are built up as a series of pixels. These pixels blend together to form the illusion of a single image
- Vector graphics - mathematically described shapes, with color fills, strokes, and other rendering attributes. Can require much less memory compared to raster graphics, as they represent the plots of mathematical expressions.
- Animation - a series of still images displayed sequentially. If the rate of change between images, the frame rate, our brains can't detect the transitions, and you see fluid motion.
- This chapter also presents basic maths that will be useful for programming
- Event handling is the basis of interactivity. Events can be mouse events (mouse presses, releases, hovers, enters, exits, moves, and drags), window events (resizing a window), keyboard events (pressing a key), menu events (selecting form a pull-down menu), or focus events (selecting a dialog window, palette, or text field as the active area, which usually then accepts additional input such as filling in a text field with a word).
Friday, June 11th
- Chapter 5: The Processing Environment
- Processing is an integrated development environment (IDE) created by artists for artists.
- Much of this chapter is devoted to explaining how to use the Processing environment.
- Processing has three rendering modes: JAVA2D, P3D, and OPENGL.
- JAVA2D uses Java's 2D graphics library for creating 2D rendering.
- P3D mode gives you access to a custom 3D engine in Processing
- OpenGL is a platform-independent library that functions as an interface between your code and the graphics hardware
Week 2 (June 14 - June 18)
Monday, June 14th
- Part Two: Putting Theory into Practice
- Chapter 6: Lines:
- A single point in Processing is a square with a width and height of 1 pixel. It is in fact a line with the same starting and ending points.
- This chapter starts with a simple code for a ten point sketch. It then goes through the processes of cutting down the length of the code with a while loop, and then with a for loop to even further shorten it. The code can then be altered again to be able to accommodate any number of Points to create in the sketch.
- The random(min, max) function generates a random number between the min and max arguments passed to the function.
- Today, after talking with Dianna, Jenny and I began thinking about what art we could create using Processing. I went through some example codes in Chapter 6, using dots and lines, beginning to create my own piece.
Tuesday, June 15th
- Today I began to develop ideas for a series of artworks that I will be working on for the rest of the summer.
- I worked more on a piece made up of dots.
Wednesday, June 16th
- I really began my series today. It will be an abstract series, in which I represent an object (a sphere, to begin with) in many different ways, showing off the different forms of representation that Processing is capable of. The idea came from a series of paintings that I began a year or two ago, but never followed through with.
Thursday, June 17th Challenges: Finding the corresponding RGB values to a color that I want. Not all colors are able to represented easily through RGB values.
Choosing RGB values for a color is very interesting when compared to mixing colors, for example, with paint. However, while in paint, all colors come from the primary colors (Red, Yellow, and Blue), Processing uses Red, Green, and Blue, so there are some confusing aspects to mixing/creating colors in Processing.
Friday, June 18th
- Today I worked on my Abstract, finalizing my ideas for my project.
- I also worked more on my series. I had some trouble today with working the sphere that I created earlier in the week into a loop so that it could be repeated in a grid.
Week 3 (June 21 - June 25)
- Processing is slow. When I use loops in my code, which I have to do sometimes, the code has a lot of trouble running. I'm contemplating not using for loops, and having an "uglier" code, but a much faster one (one that actually runs).
- This week I've spent really working on a code coming up with spheres on a grid. My goals are to make it aesthetically pleasing, make the code pretty, and to have the code be adjustable to any sized window.
- I've been having some internal struggles with art versus code, which are really interesting, as I have to sometimes choose one over the other, or find a way to make both work together.
Week 4 (June 28 - July 2)
This week I had a lot of struggles with the art versus the code. I was working for some time in favor of the art, which resulted in a somewhat long code. Then, once I got close to the final piece that I wanted to create, I took a much closer look at the code and was able to make it much more compact and "pretty". Michelle has been helping me with some of my coding issues (such as the randomizing functions) and she had been urging me to change something in the final piece to make the code nicer looking. She suggested that I make all of the colors chosen randomly to create a truly random code, as she referred to it. I didn't want to do this, though, because I didn't believe there was a way to do this while remaining aesthetically pleasing. However, while looking more closely at my code as a result of her urging, I was able to find a way to make the code a LOT better and it also actually made the final piece a lot better, too. Beforehand, my code produced spheres of random colors, but those randomly colored spheres would be in a predictable pattern in the window. After the alterations, each sphere was entirely randomized in terms of both color AND placement in the window, which, to me, created a more TRULY random code, although in a different way than Michelle originally suggested.
Week 5 (July 5 - July 9)
Tuesday, July 6th
- I spent the morning converting my "pieces" version of the spheres into a form that could be multiplied into tile-like pictures. In the afternoon, I worked on translating the "pieces" function into one capable of repetition.
Wednesday, July 7th
- Today I worked on the coloring of different spherical representations for the "pieces" version.
Thursday, July 8th
- This morning I began by creating one more colored sphere for "pieces". Then, after much frustration, was able to convert the code that repeated the radial gradient sketch into one which could accommodate all of the pieces in "pieces".
Friday, July 9th
Week 6 (July 12 - July 16)
Monday, July 12th
Tuesday, July 13th
Wednesday, July 14th
Thursday, July 15th
Friday, July 16th
Week 7 (July 19 - July 23)
Monday, July 19th
Tuesday, July 20th
Wednesday, July 21st
Thursday, July 22nd
Friday, July 23rd
Week 8 (July 26 - July 30)
Monday, July 26th
Tuesday, July 27th
Wednesday, July 28th
Thursday, July 29th
Friday, July 30th
Week 9 (August 2 - August 6)
Monday, August 2nd
Tuesday, August 3rd
Wednesday, August 4th
Thursday, August 5th
Friday, August 6th
Week 10 (August 9 - August 13)
Monday, August 9th
Tuesday, August 10th
Wednesday, August 11th
Thursday, August 12th
Friday, August 13th

