Tuesday, October 28, 2014

Pendulums

Chaos |  Pendulums

This project is intended to explore the concept of Chaos Theory using Processing coding language and the giant screen at the HVS (9600 x 2760 pixels) as the presentation medium.  As a means of visualizing Chaos, I will be building a double pendulum simulation within Processing.  At this moment I'm not sure exactly how that will translate into a final art piece, but once I have the system working I will develop ideas inspired by my process.  But trust me... it will be CHAOS!

I got a single pendulum working then tried just tacking another pendulum to the end of it.  It work in the sense that one was attached to the other, but the bottom pendulum does not swing, it stays fixed at 90 degrees.  I believe this has to do with my coding structure; my plan is to make a pendulum class so that each pendulum can be called to update it's position independently.

It doesn't work...

More to come!


|----------------------------------------------------------------------------------------------------------|

Chaos |  Pendulum Update

So I created 100 pendulums (without drawing the pendulum arms) that can be set into motion using the mouse.  The pendulums were then rotated 90 degrees... why? BECAUSE CHAOS!

100 pendulums

It makes some cool shapes.. but still not chaos.


|----------------------------------------------------------------------------------------------------------|

Double pendulum to come!

The double pendulum works now.. but it's unexciting.. though I was excited when it worked!


|----------------------------------------------------------------------------------------------------------|

Tuesday, October 21, 2014

CHAOS!

Chaos |  Ideas and progress

This project is intended to explore the concept of Chaos Theory using Processing coding language and the giant screen at the HVS (9600 x 2760 pixels) as the presentation medium.  The initial exploration of this project will first be spent on gaining an understanding of Processing and exploring alternative ideas for the project.

Currently I have been working on some simple Processing sketches.  This sketch is using mouse location to determine the amplitude and period of the sin curve.  The randomly generated balls are bounced around by the curves.  The results are visually interesting however not chaotic.  The real benefit of this sketch was to form a bisic understanding of Processing.

Example of simple Processing sketch

amplitude and period based on mouse positon

This sketch is not chaos.  Further exploration throughout this project will be in the direction of alternate visualization methods of chaos theory.

Alternate Ideas
- Double Pendulum
- Cellular  Automata

Final Project Ideas


FINAL |  "The Jackson Pollock Machine"

I intend with this project to physically create a double pendulum which I will use to create Jackson Pollock-esque paintings.  Inspired by the notion that Jackson Pollock's drip painting style is, in part, a product of his ability to use his arm as almost a biological double pendulum.



Similar to Pollock's painting approach, the canvas will be set on the floor and the pendulum will be moved about over-top of the large canvas.



The intent of the project is not to recreate the work of Jackson Pollock but to use his style as inspiration, and test to see if a mechanical creation can produce a similarly organic art piece.

In order to maintain artistic control over the system, it is my intent to create a mobile pendulum which can be re-positioned over the canvas in order to directly control the location of the resulting strokes.  Although the pendulum location will be controlled by the artist, the chaotic strokes generated by the pendulum movement will be chaotic in nature.



Another aspect of artistic control which I am considering incorporating is the masking of shapes using painters tape.  Examples of this method can be seen below.





The video we watched in class on creating a double pendulum can provide as a good guide to creating the physical double pendulum. 




http://blip.tv/make/weekend-project-double-pendulum-3818148






FINAL |  "Grow a Building v2.0"

I'd like to take my previous project to the next level. Adding windows, doors and other architectural elements.

Tuesday, October 14, 2014

'Grow A Building' - Final

L-Spawn |  "Grow a Building"

'L-Spawn | Grow a Building' is a series of long banner-like images which display the automated genetic evolution of architectural massing models.  The intent of the series is to display the underlying creation and use of an automated system (L-Spawn).  The series is printed on long banner images because it is meant to visually display the underlying genetic process of evolution.  The viewer can visually follow the evolution process and passing of genes through each generation.  Banner images were also chosen to display this piece because it decreases the importance of the final massing model and emphasizes the evolutionary process of L-Spawn.

'L-Spawn' is a python script which genetically evolves architectural massing models, based on L-system rule sets, in order to achieve specific user defined guidelines; such as surface area and volume.  In order to accomplish this, L-Spawn generates a population of L-system models which are evaluated against the user's target variables and scored accordingly.  Based on their score, the L-systems models are then added to a 'spawn pool' X amount of times, X being the normalized score of each model.  Two 'Parent' models are randomly selected from the spawn pool and used to spawn the next generation's population of L-system models.  The evolution process will continue until the target variables are met or until the generation limit (also user defined) is exceeded.  L-Spawn is run using the Houdini Python Source Code Editor.  

Download images to view at full resolution!



|----------------------------------------------------------------------------------------------------------|

L-Spawn |  Breakdown

Step 01 | Initialize
L-Spawn creates a population of N L-system models, each with randomly generated DNA. L-Spawn uses user defined variables to guide the generation of massing models.

ex.
L-system N
{
     DNA:
        - Premise
        - Rule 01
        - Rule 02
        - Rule 03
        - Age (# of L-system generations)
}


User Defined Variables:
     - Population Size - sets the population size per generation
     - Generation Limit - used to maintain L-Spawn's calculation time within a reasonable range (if the target variables are difficult to reach L-Spawn could run for a while.. trust me I tried)
     - Target Area - this is the amount of surface area L-Spawn will compare each model's surface area to in order to calculate the model's final score
     - Target Volume - this is the amount of volume L-Spawn will compare each model's volume to in order to calculate the model's final score
     - Accuracy - this is the percent accuracy that L-Spawn will match the target values  ex. Accuracy of 1 means L-Spawn will run until it meets the target values 100% (this would take a while..)
     - Mutation Rate - a percent value used to determine the likelihood of mutation



BEGIN LOOP -------------------------------------------------------------------|


Step 02 | Selection
L-Spawn evaluates the fitness of each element of the population and adds them to the spawn pool N number of times.  L-Spawn uses user defined variables in order to facilitate the generation of models.

ex.

     L-system N
     {
          Score = ( (Area / targetArea) + (Volume / targetVolume) )  / 2
     }

    NormalizedScore = Score /  totalFitness

     N = NormalizedScore * 100
     ^ (number of times added to the spawn pool)


Step 03 | Parent A and B
L-Spawn selects two parents, A and B, with probability according to relative fitness of each model

Step 04 | Crossover
L-Spawn creates a child by selecting DNA from either parent A or B with a probability of 0.5 for each parent


Step 05 | Mutation
During mutation, L-Spawn uses a user defined mutation rate to mutate each gene of the child.  If the gene is mutated, L-Spawn randomly generates a new gene to replace it with.

Step 06 | New Generation
Replace the old population with the new population and return to Step 02.

|----------------------------------------------------------------------------------------------------------|


JUXTAPOSED  BOOM!