VIZA 658 - Generative Art
- Table of Contents:
- Project 1: "Toss of a Coin"
- Project 2: "Rocket Revolver"
- Project 3: "Edification"
- Project 4: "The Scribbler"
- Project 5: "Diagony"
Project 5: "Diagony"
Project requirement was to create something using a mathematical method. I decided to extend my previous assignment to use what I call a "crenellation" displacement... which means that every segment would be displaced using a sort of square-wave pattern. My success was limited, as I think I was using the wrong method to try to find the normal of the line segment for the displacement. The results were interesting in a way, giving the impression of a diagonal city. If the iterations are low, it will look like a simply diagonal version of the specified polygon. If iterations are too high, it will go off the edge of the screen, never to return... try not to make the iterations too high, I think there is a bug there.
Click here to download the application (compiled for Linux).
Source code is here. You need OpenGL and GLUT to compile it.
- Instructions:
- Click with left mouse button to create points. You can click and drag on a previous point to move it.
- Click with right mouse button to connect the polygon. You can still move points around. Right click on a point to delete it.
- G to generate - connects the polygon and draws the "lightning"
- C to crenellate - creates a strange version of the polygon with diagonal lines
- R to reset - deletes the polygon and the lightning
- E to enter edit mode - allows you to change the previously drawn polygon.
- K to decrease detail - prints level out to the command line
- L to increase detail - prints level out to the command line
- Q to quit - exits
Project 4: "The Scribbler"
Project requirements were to create something with fractals and/or L-systems. I decided to use a midpoint displacement algorithm to create fractal lightning. Variables for complexity and displacement can be controlled in code. The program was created in OpenGL as an extension of a project done in VIZA 653 which draws polygons and splines. Instead of drawing splines, it draws lightning between each point in the polygon. The end result is that you get shapes that look somewhat like landforms, because they are closed, but you can also overlap them, giving even more interesting results. The closer you place your dots, the more erratic the lightning around those points will be.
Click here to download the application (compiled for Linux).
Source code is here. You need OpenGL and GLUT to compile it.
- Instructions:
- Click with left mouse button to create points. You can click and drag on a previous point to move it.
- Click with right mouse button to connect the polygon. You can still move points around. Right click on a point to delete it.
- G to generate - connects the polygon and draws the "lightning"
- R to reset - deletes the polygon and the lightning
- E to enter edit mode - allows you to change the previously drawn polygon.
- Q to quit - exits
I plan to extend this project for the next project -- Math Art
Project 3: "Edification"
For this project, I decided to extend my pattern project that I did in Color Theory as an undergraduate. I extruded shapes up in 3D, coloring them so that the top of each shape matches what shape is on the floor. Heights were based on percieved visual density. This was created by hand, which could be good or bad depending on how you see it. The metaphor here is a virtual city, in which the shapes on the page become pattern-based edifices. The ideas behind this project stem from the interplay and confusion between a top-down map view and a city skyline view. You can see the city, but you can't navigate a city that well just from seeing the skyline.
I was also considering an approach of recreating this same pattern, but with symmetry in 3 dimensions. I decided to do this one instead, because even though it doesn't preserve exactly the same symmetries, it has the metaphor with a very constructed and orderly city.
Project 2: "Rocket Revolver"
Proposal:
My plan is to create a genetic algorithm that responds to user's choice by morphing various configurations of 2D space rocket parameters. I plan to use the Processing interface with OpenGL. A file with the "genetic information" will be parsed to give the different parameters to be changed in the 3D interface.
Implementation:
I created this program in OpenGL, pulling quite a lot from my previous work in VIZA 653. The idea is to create a genetic pool of rocket ships to create interesting variations. The variables that are changed are the nose length, body length and width, fin span and depth, tail cone size, and cockpit position and size. These are at first randomized when you open the program. You can also open the program using a previously created file from the data folder that is created. Hit G to go to the next generation. Each new rocket in the gene pool is created by crossover using two of the previous rockets. You can left click to promote a rocket if you like it and right click to cull it out. Multiple clicks enabled per generation. There is a death rate that affects the population, culling out rockets that have not been left-clicked for a long time, but each generation does not create a new set entirely. This allows you to keep rockets you liked by clicking on them every generation.
I was fairly disappointed in this project, I had hoped to be able to create a more visually interesting piece, but this is all my programming abilities would allow. I had originally intended to do this in 3D, but MEL scripting wasn't working well for me. In the future, I would like to make it so you can make other shapes than just modifying these simple rocket ship parameters. Perhaps I would do this by modifying the creation methods using the genetic algorithm, instead of them all being created by the same method.
Click here to download the application (compiled for Linux).
Source code is here. You need OpenGL and GLUT to compile it.
Project 1: "Toss of a Coin"
The assignment was to create some form of art using some form of random chance. Intrigued by the idea of coin tosses for probability, I decided to use coins as the basis of my project. The idea was that based on the randomized parameters of the coins on the paper, I would place shapes on the paper and create more and more complex visual structures. The theme of this project is to create visual complexity using simple manual methods of random variation. It is an exploration of the way random processes can create interesting visual structures.
Too much Information:
Here is how I created the project: I first dropped 40 coins onto an 18 x 24 sheet of paper, 10 coins of each denomination; quarters, dimes, nickels, and pennies. I took a photograph of the paper area with the coins on it, from two different lighting directions, so if I couldn't tell what a coin was in one, I could in the other. Then, based on the position, rotation, and type, and facing of the coins I determined the position, rotation, and type, and color of the shape overlayed on the image in Illustrator. For the first image, I used circles for pennies, squares for dimes, hexagons for nickels and stars for quarters. For each subsequent image, I took a group of shapes that ended up looking like a single cutout to use as a base shape for the next image. The size of each shape was determined by the distance from the current coin to the closest coin of its type.
The result was a bunch of different layers of black and white shapes that created new and interesting combinations of angles. The simple black and white images looked somehow unbalanced and chaotic, so I wanted to increase their aesthetic quality by compositing the original coin photographs. This also served to link the process to the final result in the mind of the viewer, or at least hint at it. Using the overlay blending mode for the shapes allowed several different tones into the image while still keeping some of the pure black and white.